Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用导入Csv时,分别输出多个变量的值?_Powershell_Import Csv - Fatal编程技术网

Powershell 使用导入Csv时,分别输出多个变量的值?

Powershell 使用导入Csv时,分别输出多个变量的值?,powershell,import-csv,Powershell,Import Csv,此代码的输出: $var1 = @("ServerA","ServerB","ServerC") $var2 = @("ServerX","ServerY","ServerZ") Write-Host "`nShow me var1`n" $var1 Write-Host "`nShow me var2`n" $var2 看起来像这样: 但如果我对变量使用“导入Csv”: $var1 = Import-Csv .\Servers1.csv $var2 = Import-Csv .\Serv

此代码的输出:

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

Write-Host "`nShow me var1`n"
$var1
Write-Host "`nShow me var2`n"
$var2
看起来像这样:

但如果我对变量使用“导入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
输出如下所示:

为什么在我使用导入Csv时它会合并输出


如何使第二个输出看起来像第一个,分别输出var1和var2的值?

是的,这是控制台/主机输出的一个怪癖。是的,给主持人写信通常不是一个好主意,但有时这是所有必要的:

如果您这样做,您会发现它工作得很好:

$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

这是一个相当普遍的问题。写入主机和写入输出(默认)使用不同的流。它们绝不是被迫同步的。简单的答案是停止使用写主机。一般来说,Write Host是错误的答案,应该只在您有特定需要时使用。是的,如果您将$var2声明行放在var1的Write Host行之后,它是否显示了正确的输出?或者它也结合了var1的结果?您应该测试它并报告为什么说写主机通常不是一个好主意,然后提供答案。为什么不使用输出流作为答案,因为根据您自己的陈述,这是首选的方法?因为,正如我所说的,很少有时候它是您真正想要做的。Sheesh这很好,但你所做的是这样说的:“你很少需要这样做。我假设你需要这样做。尽管这个答案很可能是错误的。”我只是认为说“这几乎总是错误的方式,所以这样做是内在矛盾的仅此而已。我觉得更好的答案应该是“这很可能是最好的方式”。我同意,向控制台写入数据并不总是最好的,或者说是最有用的方式来输出数据,但正如您所提到的,在某些用例中,这正是您需要做的,而我恰好正在处理一个,这正是我需要它做的,所以谢谢你的帮助!