gpt4 book ai didi

脚本中有多个对象的powershell写输出错误?

转载 作者:行者123 更新时间:2023-12-04 20:31:41 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





PowerShell: write-output only writes one object

(3 个回答)


3年前关闭。




这是一个powershell错误吗?它只会在脚本中打印 $var1,而不是 $var2(我也不能将它通过管道传输到 where-object)。但是当我将它复制并粘贴到命令行时,它工作正常。

$var1 = New-Object -TypeName PSObject -Prop @{'data1'=6}
write-output $var1
$var2 = New-Object -TypeName PSObject -Prop @{'data2'=12}
write-output $var2


data1
------
6

编辑:我想我开始明白了。这是一个更奇怪的例子。您只能从第二个对象输出或处理公共(public)字段:
$var1 = New-Object PSObject -prop @{data1=6;data3=5}
$var1
$var2 = New-Object PSObject -prop @{data2=12;data3=6}
$var2


data1 data3
----- -----
6 5
6

EDIT2:这与格式表的隐含运行以及它如何设置列有关。

最佳答案

我认为这是 Write-Output 的预期行为cmdlet。它沿着管道发送对象(如果它是管道中的最后一个 cmdlet,它会显示给主机。)它期望管道中的所有对象都具有相同的属性。

在您的示例中,您有一个具有属性的对象 data1和带有 data2 的第二个对象.如果您使两个对象都使用相同的属性,它将按您的预期工作:

$var1 = New-Object -TypeName PSObject -Prop @{'data1'=6}
write-output $var1
$var2 = New-Object -TypeName PSObject -Prop @{'data1'=12}
write-output $var2

data1
-----
6
12

可以这样想,cmdlet 通常输出单个可预测的对象(Get-AdUser 输出 AdUser 对象。)如果 Get-AdUser 输出少量 AdUser、AdGroup、Mailbox,管道和其他 cmdlet 将无法处理它, 和 NTFSPermissions 作为一个数据流。

编辑:顺便说一句,如果您只是想在屏幕上获取信息而不使用 Write-Host , 考虑 Write-Information .

关于脚本中有多个对象的powershell写输出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44622181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com