Записать переменные в существующий CSV по столбцам
Это вопрос из двух частей о пределах Out-File
и превращение строковых значений в объекты для использования Export-CSV
,
Я работаю над сценарием, чтобы получить различную информацию и добавить ее в существующий документ CSV. Я сейчас пользуюсь Out-File
но я не думаю, что он обладает желаемой функциональностью.
$date, $computerName, $env:UserName, 'error' | Out-File $report -Append
Выше добавлены все данные в один столбец, например:
date
computername
username
error
Я хотел бы это прочитать:
date computername username error
Я пытался использовать Export-CSV
, но так как мои переменные являются строками, он просто записывает длину строки вместо переменной. Я счастлив использовать Export-CSV
с -Append
до тех пор, пока он сообщает о пунктах правильно.
Бонусные баллы, если мы можем получить таблицу с заголовками, такими как:
date computername username error
8/15/2018 A1 Bob PowerIssue
8/15/2018 A2 Tom InternetIssue
1 ответ
$date, $computerName, $env:UserName, 'error'
это коллекция, которая преобразуется в массив строк. Итак, тогда Out-File
берет каждый элемент этого массива и выплевывает его по одному элементу в строке.
Вы можете сгенерировать одну строку. Например,
"$date, $computerName, $env:UserName, error" | Out-File $report -Append
Но лучшим способом было бы сделать объект, а затем экспортировать его в CSV. Вот пример использования [pscustomobject]
который требует PS3+
$ExampleObjects = @(
[pscustomobject]@{
Date = Get-Date
ComputerName = 'A1'
UserName = 'Bob'
Error = 'PowerIssue'
},
[pscustomobject]@{
Date = Get-Date
ComputerName = 'A2'
UserName = 'Tom'
Error = 'InternetIssue'
}
)
$ExampleObjects | Export-CSV $report -Append -NoTypeInformation