【发布时间】:2021-10-14 22:04:03
【问题描述】:
最近,我编写了一个 powershell 脚本来处理注册表中的一些信息。但是当我使用 cmdlet 访问镜像中的注册表路径时
Get-ChildItem -Path 'HKLM:\SOFTWARE\Classes\MAPI/Attachment'
我收到错误信息:
Get-ChildItem:找不到路径“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MAPI\Attachment”,因为它不存在。
我知道这是因为路径中的正斜杠/,但我想知道如何转义它,或者如何通过任何方法访问路径。
【问题讨论】:
-
使用反勾号。您也可以只指定
-LiteralPath。 -
@AbrahamZinala 我已经用过
-LiteralPath了,还是不行。 -
不幸的是,您看到了一个错误/设计限制,在 PowerShell 7.2 中仍然存在:除了
\,/也被视为路径分隔符。虽然这种可互换的分隔符使用对 file-system 路径很有帮助,但它会导致注册表路径出现问题,因为/是键名中的合法字符。请参阅 [GitHub 问题 #5536](github.com/PowerShell/PowerShell/issues/…。用`转义/不起作用;实用的解决方法是枚举父路径的键并按名称使用Where-Object过滤。/cc @AbrahamZinala。
标签: powershell registry