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"