多个数组在空行中输出结果
Multiple Arrays Output Results in Blank Lines
我正在尝试将多个数组 (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 中执行此操作,这让我相信这是预期的行为,但我不理解某些东西。
知道发生了什么事以及如何让数组数据输出独立于前一个数组的输出进行处理吗?提前致谢。
众所周知的 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
我正在尝试将多个数组 (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 中执行此操作,这让我相信这是预期的行为,但我不理解某些东西。
知道发生了什么事以及如何让数组数据输出独立于前一个数组的输出进行处理吗?提前致谢。
众所周知的 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