Powershell 在单个.PS1文件中多次使用时,“选择对象-唯一”不会显示所有属性
我正在编写一个脚本,它使用Powershell 在单个.PS1文件中多次使用时,“选择对象-唯一”不会显示所有属性,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在编写一个脚本,它使用selectobjectpropertyx-unique汇总一组PSObject对象,以汇总一些属性的不同值。但是,同一.ps1文件中的后续调用将只写入第一个查询中选择的属性: $obj1 = new-object PSObject -Property @{a='a1';b='b1'} $obj2 = new-object PSObject -Property @{a='a2';b='b2'} $col = $obj1,$obj2 write-host "select
selectobjectpropertyx-unique
汇总一组PSObject
对象,以汇总一些属性的不同值。但是,同一.ps1文件中的后续调用将只写入第一个查询中选择的属性:
$obj1 = new-object PSObject -Property @{a='a1';b='b1'}
$obj2 = new-object PSObject -Property @{a='a2';b='b2'}
$col = $obj1,$obj2
write-host "select distinct a"
$col | select-object -unique a
write-host "select distnct b"
$col | select-object -unique b
write-host "end"
输出:
select distinct a
a
-
a1
a2
select distnct b
end
第二个命令为管道中的每个对象输出一个空行,但不显示任何文本
如果翻转命令的顺序,则只能显示属性B。基本上,写输出已经记住了要显示的列。有没有办法避免这种行为
您可以通过将语句保存在.ps1文件中并执行它,或者在powershell_ise.exe中运行它们来查看此行为。在命令行上一个接一个地运行命令正如@Adil Hindistan所说的那样,如果您一个接一个地运行命令,那么所有命令都可以正常运行。如果同时运行命令,则会混淆格式,因为两种对象是同时格式化的<代码>输出字符串可能有助于解决这一问题(将两种对象的格式分开):
我不能复制这个。这是一字不差的代码吗?嗨,Chris澄清说,这只发生在执行.ps1或在powershell_ise.exe中同时运行所有命令时,这很有趣。这似乎是一个设计缺陷。
write-host "select distinct a"
$col | select-object -unique a | out-string
write-host "select distnct b"
$col | select-object -unique b | out-string
write-host "end"