使用PowerShell Group-Object官方示例代码无效问题咨询
PowerShell Group-Object哈希表分组示例无法运行的排查与解决
我使用微软官方文档中Group-Object的示例3(按键值对哈希表分组)时无法正常运行,运行环境为最新版Windows 10 Enterprise 22H2。
官方示例命令及预期结果如下:
@( @{ name = 'a' ; weight = 7 } @{ name = 'b' ; weight = 1 } @{ name = 'c' ; weight = 3 } @{ name = 'd' ; weight = 7 } ) | Group-Object -Property weight -NoElement
预期输出:
Count Name ----- ---- 1 1 1 3 2 7
问题原因
Windows 10 22H2默认搭载的是Windows PowerShell 5.1,而微软官方文档中的该示例是针对**PowerShell 7+**编写的。在Windows PowerShell 5.1中,Group-Object的-Property参数无法直接识别哈希表的键名(如weight)作为属性——因为哈希表是Hashtable类型,它的键值对不属于对象属性,直接指定键名会导致无法匹配到有效数据。
解决方法
将-Property参数的值改为脚本块,通过脚本块提取哈希表中对应键的值,修改后的命令如下:
@( @{ name = 'a' ; weight = 7 } @{ name = 'b' ; weight = 1 } @{ name = 'c' ; weight = 3 } @{ name = 'd' ; weight = 7 } ) | Group-Object -Property { $_.weight } -NoElement
执行修改后的命令即可得到预期的分组结果。
内容的提问来源于stack exchange,提问作者rotabor
相关产品推荐
相关产品推荐

