如何在PowerShell中转义路径正斜杠/访问含正斜杠的注册表路径
问题原因
PowerShell 注册表提供者默认会将路径中的正斜杠/与反斜杠\统一识别为路径分隔符,你输入的路径HKLM:\SOFTWARE\Classes\MAPI/Attachment会被自动转换为HKLM:\SOFTWARE\Classes\MAPI\Attachment,也就是尝试定位MAPI项下的Attachment子项。如果实际注册表项名称本身包含/(即项名为MAPI/Attachment),就会触发路径不存在的报错。
解决方案
方案1:使用-LiteralPath参数搭配转义符
-LiteralPath参数会原样解析输入的路径,不会自动转换路径分隔符,搭配 PowerShell 转义符反引号```转义路径中的正斜杠即可正常访问:
Get-ChildItem -LiteralPath 'HKLM:\SOFTWARE\Classes\MAPI`/Attachment'
如果使用双引号包裹路径,需要写两个反引号完成转义。
方案2:调用.NET注册表类访问(兼容性最高)
绕过 PowerShell 的路径解析逻辑,直接使用.NET 框架的原生注册表操作类访问,无需额外转义特殊字符:
# 打开目标注册表项 $targetReg = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SOFTWARE\Classes\MAPI/Attachment') # 查看项下所有值名称 $targetReg.GetValueNames() # 读取指定值的内容 $targetReg.GetValue("要读取的值名称")
方案3:修正路径分隔符
如果确认注册表结构为MAPI项下存在Attachment子项,只是路径书写错误,直接将正斜杠替换为反斜杠即可:
Get-ChildItem -Path 'HKLM:\SOFTWARE\Classes\MAPI\Attachment'
内容的提问来源于stack exchange,提问作者Hanabi
相关产品推荐
相关产品推荐

