Write-Host
вывод идет непосредственно на хост-консоль. Это не может быть передано по конвейеру. Кроме того, как уже упоминалось, вы обычно хотите использовать командлеты Import-Csv
и Export-Csv
при работе с CSV (особенно если вам нужен CSV с заголовками).
Чтобы получить набор переменных в форме, которая может быть экспортирована с помощью Export-Csv
, создайте пользовательский объект, подобный этому:
New-Object -Type PSObject -Property @{
'X' = $A
'Y' = $B
'Z' = $C
} | Export-Csv 'C:\Temp\test.csv' -NoType
Ключи хеш-таблицы свойств становятся заголовками столбцов CSV.
Поскольку вы говорите, что хотите экспортировать данные из цикла for
, вам необходимо добавить параметр -Append
в Export-Csv
:
for (...) {
New-Object ... | Export-Csv 'C:\Temp\test.csv' -NoType -Append
}
Это потому, что циклы for
не записывают в конвейер, что означает, что нечто подобное не будет работать:
<strike>for (...) {
New-Object ...
} | Export-Csv 'C:\Temp\test.csv' -NoType</strike>
Однако, в зависимости от того, как выглядит ваш реальный цикл, вы можете заменить его комбинацией оператора диапазона (..
) и цикла ForEach-Object
:
1..5 | ForEach-Object {
New-Object ...
} | Export-Csv 'C:\Temp\test.csv' -NoType