Вывести значения нескольких переменных отдельно при использовании Import-CSV?

Вывод этого кода:

$var1 = @("ServerA","ServerB","ServerC")
$var2 = @("ServerX","ServerY","ServerZ")

Write-Host "`nShow me var1`n"
$var1
Write-Host "`nShow me var2`n"
$var2

выглядит так:

введите здесь описание изображения

Но если я использую "Import-CSV" для переменных:

$var1 = Import-Csv .\Servers1.csv
$var2 = Import-Csv .\Servers2.csv

Write-Host "`nShow me var1`n"
$var1
Write-Host "`nShow me var2`n"
$var2

Результат выглядит так:

введите здесь описание изображения

Почему он объединяет выходы, когда я использую Import-CSV?

Как мне сделать так, чтобы второй вывод выглядел как первый, где значения var1 и var2 выводятся отдельно?


person Brian    schedule 23.05.2018    source источник
comment
Это довольно частый вопрос. Write-Host и Write-Output (по умолчанию) используют разные потоки. Их никоим образом не заставляют быть синхронными. Короткий ответ - прекратить использование Write-Host. В общем, Write-Host - неправильный ответ, и его следует использовать только тогда, когда у вас есть особая необходимость.   -  person EBGreen    schedule 23.05.2018
comment
Да странно, если вы поместите строку объявления $ var2 после строки Write-Host для переменной 1, показывает ли она правильный результат? Или он там тоже объединяет результаты var1?   -  person Brian Mains    schedule 23.05.2018
comment
Вы должны протестировать это и доложить   -  person Jacob Colvin    schedule 23.05.2018


Ответы (1)


Ага, это причуда вывода консоли / хоста. И да, писать на хост, как правило, не очень хорошая идея, но бывают случаи, когда это все, что требуется:

Если вы сделаете это вместо этого, вы обнаружите, что все работает нормально:

$var1 = Import-Csv .\Servers1.csv
$var2 = Import-Csv .\Servers2.csv

Write-Host "`nShow me var1`n"
$var1 | Out-Host
Write-Host "`nShow me var2`n"
$var2 | Out-Host
person Scepticalist    schedule 23.05.2018
comment
Зачем говорить, что Write-Host, как правило, не очень хорошая идея, тогда предоставьте это в качестве ответа. Почему бы не использовать выходной поток в качестве ответа, поскольку по вашему собственному утверждению это предпочтительный метод? - person EBGreen; 23.05.2018
comment
Потому что, КАК Я СКАЗАЛ, в редких случаях это действительно то, что вы хотите делать. Sheesh - person Scepticalist; 23.05.2018
comment
Это нормально, но то, что вы сделали, сказано, что вам редко нужно делать это таким образом. Я предполагаю, что это так. Хотя существует высокая вероятность того, что этот ответ на самом деле неправильный. - person EBGreen; 23.05.2018
comment
Я просто думаю, что это внутренне непоследовательно сказать, что это почти всегда неправильный способ сделать это, так что сделайте это так, вот и все. Я считаю, что лучшим ответом будет: «Скорее всего, это лучший способ сделать это». - person EBGreen; 23.05.2018
comment
Я согласен с тем, что запись в консоль - не всегда лучший или самый полезный способ вывода данных, но, как вы упомянули, есть некоторые варианты использования, когда это то, что вам нужно сделать, и я случайно сталкиваюсь с одним, и это делает то, что мне нужно, поэтому спасибо за помощь! - person Brian; 23.05.2018