我试图将多个数组(3)的结果输出到同一输出(控制台)。代码大致如下:
$array1
foreach ($item in $array1)
{
$array2 = get list of services for $item
$array2 = get list of schedtasks for $item
if ($array2)
{
write-host "array2 data"
$array2
}
if ($array3)
{
write-host "array3 data"
$array3
}
}
我遇到的问题是,一旦第一个数组输出,控制台似乎将自身附加到该数组的列标题,并且只显示其他数组的数据,如果它们的列标题为匹配第一个数组的列标题。它仍然为每行不匹配标题输出一个空行,表示其他数组已填充。
我通过预先创建和输出自定义数组来验证这一点,所有列标题与所有其他数组相结合。现在我获取了所有数据,但是在4列中与原始自定义数组对齐。
我使用的是Powershell ISE,它在带有Powershell 2的Server 2008 R2和带有Powershell 4的Server 2012 R2中实现了这一点,这让我相信这是预期的行为,而我并不了解某些内容。
任何想法是什么以及我如何能够独立于先前阵列的输出处理阵列数据输出?提前谢谢。
答案 0 :(得分:0)
众所周知,PowerShell问题在于格式化具有不同属性集的对象不是很好:
$a = [PSCustomObject]@{a=1; b=2}
$b = [PSCustomObject]@{b=2; c=3}
$a, $b # table with properties a and b not c
$b, $a # table with properties b and c not a
要相互独立地格式化数组,可以将每个数组传递给Out-Host
cmdlet的单独调用,而不是将数组写入输出:
$array2 | Out-Host
$array3 | Out-Host