如何筛选含方括号列名的PowerShell对象?
解决PowerShell筛选嵌套特殊属性名的问题
要筛选$data中[Custom.Class]属性下Name值为'Car'的数据,你之前的写法错误在于混淆了嵌套属性与单一属性,或未正确处理属性名中的特殊字符。以下是两种可行的解决方案:
方案1:用单引号包裹特殊属性名
直接用单引号将包含方括号的属性名括起来,明确告诉PowerShell这是完整的属性名,再访问其Name子属性:
$data | Where-Object { $_.'[Custom.Class]'.Name -eq 'Car' }
方案2:用反引号转义方括号
通过反引号(`)转义属性名中的方括号,避免PowerShell将其解析为索引操作符:
$data | Where-Object { $_.[`[Custom.Class`]].Name -eq 'Car' }
为什么之前的写法无效?
- 第一种尝试
$_.``[Custom.Class].Name:反引号的转义方式错误,PowerShell无法正确识别[Custom.Class]`作为完整属性名,导致语法报错。 - 第二种尝试
$_."[Custom.Class].Name":将[Custom.Class].Name当成了一个单一属性名,但实际上你的数据中是[Custom.Class]属性下嵌套了Name子属性,因此匹配不到任何结果。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

