PowerShell中如何在变量操作中正确引用另一个变量(注册表属性获取场景)
解决方案
其实你把问题复杂化啦!Get-ItemProperty返回的对象本身就把所有注册表属性都作为自己的成员存储了,根本不需要用管道或者多层Select-Object来绕弯子,直接通过成员访问就能轻松拿到对应的值。
两种简单有效的写法:
- 点标记法(最常用、最直观):
$value = $property.$x
因为$x里存的是属性名称的字符串,PowerShell支持直接用变量作为成员名,用.加上变量就能直接访问到对应的属性值。
- 索引器语法(适合属性名带特殊字符的场景):
如果你的注册表属性名里有空格、连字符这类特殊符号,点标记法可能会失效,这时候就可以用索引器来访问:
$value = $property[$x]
为什么你的原代码会报错?
你写的$property -Name $x是错误的语法——-Name是Get-ItemProperty这个cmdlet的参数,不能直接用在已经获取到的对象上。后面连续的Select-Object操作也完全多余,反而把简单的问题搞复杂了。
额外的小优化
顺便说一句,你获取$x的代码也可以简化:
# 直接取属性数组的第3个元素(PowerShell数组索引从0开始) $x = $default.Property[2]
这样比两次Select-Object要简洁得多~
内容的提问来源于stack exchange,提问作者yasak
相关产品推荐
相关产品推荐

