PowerShell读取注册表键报错:找不到路径问题求助
解决PowerShell读取DisplayVersion注册表键失败的问题
1. 修复语法错误
你的代码存在明显语法问题:路径字符串末尾多了一个右括号,且错误地将属性名DisplayVersion包含在路径参数里。Get-ItemProperty的-Path仅需指定注册表项路径,属性名需单独提取。
错误路径示例:
"HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\Windows NT\CurrentVersion).DisplayVersion"
这里的)属于多余字符,且DisplayVersion是注册表项的属性,并非路径的一部分。
2. 正确代码写法
方法一:用Get-ItemProperty提取属性
先获取注册表项的所有属性,再单独提取DisplayVersion:
$windisver = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").DisplayVersion
方法二:用Get-ItemPropertyValue直接获取(PowerShell 5.1及以上支持)
该命令可直接获取指定属性值,避免返回整个属性对象,更高效:
$windisver = Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name DisplayVersion
3. 处理注册表重定向问题(64位系统上的32位PowerShell)
如果你的PowerShell是32位版本,在64位Windows系统中,读取HKLM:\SOFTWARE会被自动重定向到HKLM:\SOFTWARE\Wow6432Node,但DisplayVersion实际存在于64位注册表路径中。此时需添加-RegistryView参数强制读取64位注册表:
$windisver = Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name DisplayVersion -RegistryView Registry64
4. 验证结果
运行修复后的代码后,可通过Write-Host $windisver查看输出,确认是否正确获取Windows显示版本号,再将其写入txt文件即可。
内容的提问来源于stack exchange,提问作者Colored_Red
相关产品推荐
相关产品推荐

