Распределение значений по указанным c csv столбцам в Powershell - PullRequest
0 голосов
/ 02 февраля 2020

Я хотел бы спросить, может ли кто-нибудь посоветовать, как распределить значение в переменной для столбца в CSV.

Например:

TriggeredBy | TriggeredTime | Firstname | Lastname | Username | ....

Во всем моем сценарии Я изменяю входные данные и на go я бы хотел, чтобы он заполнил строку в соответствующем столбце. Затем другой сценарий с другого сервера должен вступить во владение, прочитать рассчитанные значения и добавить результаты вычислений в соответствующие столбцы. Выводом будет строка, в которой я вижу, что все результаты.

В конце она должна служить своего рода базой данных.

Пример скрипта здесь будет:

$aduser = Get-ADUser -Filter {sAMAccountName -like $username} -Properties *
$Firstname = $aduser.GivenName 
$Firstname | Export-CSV -Path $filepath | Select-Object "First Name" 

$Lastname = $aduser.Surname 
$Lastname | Export-CSV -Path $filepath | Select-Object "Last Name" 

$TriggeredBy = $env:UserName 
$TriggeredBy | Export-CSV - Path $filepath | Select-Object "TriggeredBy" 

...

На протяжении всего процесса все сохраняются в одной соответствующей строке. Следующий процесс делает то же самое для следующей строки и т. Д. c ...

Часть "Export-CSV ...." явно неверна, мне нужна альтернатива

Большое спасибо !

1 Ответ

1 голос
/ 03 февраля 2020

Используйте Select-Object с вычисленными свойствами :

Get-ADUser -Properties * -Filter "sAMAccountName -eq `"$username`"" |                            #`
  Select-Object @{ n='FirstName'; e='GivenName' },
                @{ n='Last Name'; e='Surname' },
                @{ n='TriggeredBy'; e={ $env:UserName } } |
    Export-Csv -NoTypeInformation -Literalpath $filePath

Обратите внимание, что я использовал строку в качестве аргумент -Filter, потому что это то, чем он в конечном итоге становится. Использование буквального синтаксиса блока скриптов { ... } заманчиво, но в конечном итоге вызывает больше проблем, чем решает - см. этот ответ .

Обратите внимание, что в Windows PowerShell Export-Csv по умолчанию создает файлы в кодировке ASCII (!), Что может привести к потере информации; используйте параметр -Encoding, чтобы изменить его.

PowerShell [Core] v6 + , напротив, по умолчанию рекомендуется (без спецификации) UTF-8; также, переключатель
-NoTypeInformation больше не нужен.

Если вы хотите добавить к существующему файлу CSV (который должен иметь такую ​​же структуру столбцов), используйте переключатель -Append.

...