当在散列表中按数组值分组时,{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 +像以前的版本一样处理这种情况?