Group-Object by hashtable中的数组 - 使用v5更改行为

时间:2018-01-25 23:49:22

标签: powershell .net-framework-version powershell-v5.0

当在散列表中按数组值分组时,{v}和v5之间Group-Object的行为似乎发生了变化。使用GetEnumerator()的基本原理超出了本示例的范围,我试图保持简单。

$ht = @{}
$orchard1 = "orange","lemon","lime"
$orchard2 = "apple","pear"
$orchard3 = "apple","pear"
$orchard4 = "orange","lemon","lime"
$ht.Add("o1",$orchard1)
$ht.Add("o2",$orchard2)
$ht.Add("o3",$orchard3)
$ht.Add("o4",$orchard4)
$htEn = $ht.GetEnumerator() | select Name, Value
$htEn | Group-Object -Property Value

在PS版本2-4上,输出为

Count Name                      Group
----- ----                      -----
    2 {apple, pear}             {@{Name=o3; Value=System.Object[]}, @{Name=o2; Value=System.Object[]}}
    2 {orange, lemon, lime}     {@{Name=o1; Value=System.Object[]}, @{Name=o4; Value=System.Object[]}}

非常方便。在PS版本5.0和5.1上,输出是

Count Name                      Group
----- ----                      -----
    4 {orange, lemon, lime}     {@{Name=o4; Value=System.Object[]}, @{Name=o2; Value=System.Object[]}, @{Name=o1; Va...

这不太有用,因为错误匹配的数组对都被组合在一起。

改变了什么?是否有一种简单的方法让v5 +像以前的版本一样处理这种情况?

0 个答案:

没有答案