Преобразование данных из Microsoft.PowerShell.Commands.GroupInfoNoElement [duplicate]

Недавно я обнаружил, что использование strtolower() может вызвать проблемы, когда данные усекаются после специального символа.

Решение заключалось в использовании

mb_strtolower($string, 'UTF-8');

mb_ использует MultiByte. Он поддерживает больше символов, но в целом немного медленнее.

15
задан Shay Levy 10 June 2013 в 21:44
поделиться

4 ответа

Вот один из способов сделать это с помощью вычисляемых свойств:

Import-Csv file.csv | 
Select-Object *,@{Name='column3';Expression={'setvalue'}} | 
Export-Csv file.csv -NoTypeInformation

Здесь вы можете найти больше о вычисленных свойствах: http://technet.microsoft.com/en-us/library /ff730948.aspx.

В двух словах вы импортируете файл, перетаскиваете содержимое в командлет Select-Object, выбираете все текущие свойства (например, '*'), а затем добавляете новый.

34
ответ дан Shay Levy 26 August 2018 в 03:09
поделиться

Ответ ShayLevy также работает для меня!

Если вы не хотите предоставлять значение для каждого объекта, код еще проще ...

Import-Csv file.csv | 
Select-Object *,"column3" | 
Export-Csv file.csv -NoTypeInformation
7
ответ дан bcesars 26 August 2018 в 03:09
поделиться

Для некоторых приложений я обнаружил, что создание хеш-таблицы и использование .values в качестве столбца, чтобы быть хорошим (это позволило бы проверять перекрестные ссылки на другой объект, который был перечислил).

In этот случай, #powershell на freenode привлек мое внимание к упорядоченной хэш-таблице (поскольку заголовок столбца должен использоваться).

Вот пример без какой-либо проверки .values

$newcolumnobj =  [ordered]@{}
#input data into a hash table so that we can more easily reference the `.values` as an object to be inserted in the CSV
$newcolumnobj.add("volume name", $currenttime)

#enumerate $deltas [this will be the object that contains the volume information `$volumedeltas`)
#  add just the new deltas to the newcolumn object
foreach ($item in $deltas){ 
  $newcolumnobj.add($item.volume,$item.delta)
}

$originalcsv = @(import-csv $targetdeltacsv)

#thanks to pscookiemonster in #powershell on freenode
for($i=0; $i -lt $originalcsv.count; $i++){
  $originalcsv[$i] | Select-Object *, @{l="$currenttime"; e={$newcolumnobj.item($i)}}
}

Пример связан с Как я могу выполнить арифметику, чтобы найти различия значений в двух CSV?

0
ответ дан Community 26 August 2018 в 03:09
поделиться

создать файл csv с nothin в нем

$csv >> "$PSScriptRoot/dpg.csv"

определить путь csv-файла. здесь $ psscriptroot - это корень скрипта

$csv = "$PSScriptRoot/dpg.csv"

теперь добавляет в него столбцы

$csv | select vds, protgroup, vlan, ports | Export-Csv $csv

-2
ответ дан Gajendra D Ambi 26 August 2018 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: