当我们试图通过管道导出数据到其他功能中时,我们观察到在PowerShell中出现了一些奇怪的行为。
示例代码:
在上面的示例中,您可以看到当第一个对象只包含2个
有没有办法解决这个问题?因为不可能预测对象上会有多少
示例代码:
$Array = @()
$Obj1 = [PSCustomObject]@{
Member1 = 'First'
Member2 = 'Second'
}
$Obj2 = [PSCustomObject]@{
Member1 = 'First'
Member2 = 'Second'
Member3 = 'Third'
}
$Array = $Obj1, $Obj2
$Array | Out-GridView -Title 'Not showing Member3'
$Array = $Obj2, $Obj1
$Array | Out-GridView -Title 'All members correctly displayed'
在上面的示例中,您可以看到当第一个对象只包含2个
属性
时,Out-GridView
CmdLet(和其他CmdLet)仅显示2个属性
,即使第二个对象有3个属性
。但是,当数组中的第一个对象具有3个属性
时,它确实正确地显示了所有这些属性。有没有办法解决这个问题?因为不可能预测对象上会有多少
属性
,以及具有最多属性
的对象是否将成为array
中的第一个对象。
$Array | ForEach-Object {$_.PSObject.Properties.Name} | Sort-Object -Unique
的东西。 - DarkLite1Select-Object
中使用它。在你的示例中,它是有效的。 - restless1987