powershell - 无法将变量插入到 Get-Item 的路径中
问题描述
我正在尝试获取由返回分隔的字符串列表并按=
符号拆分它们,双方都匹配由 Get-Item 查询的注册表项。前半部分总是匹配得很好,但引用后半部分只匹配列表中的最后一项:
前半部分示例:
[string[]]$Patch = (".accda=Access.ACCDAExtension.16
.accdb=Access.Application.16" -split "`n")
Foreach ($a in $Patch) {
$RegKey = ($a -split "=")[0]
$Result = Get-Item -Path "Registry::HKEY_CLASSES_ROOT\$RegKey"
echo $Result
}
这将返回:
Name Property
---- --------
.accda (default) : Access.ACCDAExtension.16
Content Type : application/msaccess.addin
.accdb (default) : Access.Application.16
Content Type : application/msaccess
下半场示例:
[string[]]$Patch = ("
.accda=Access.ACCDAExtension.16
.accdb=Access.Application.16
" -split "`n")
Foreach ($a in $Patch) {
$RegKey = ($a -split "=")[1]
$Result = Get-Item -Path "Registry::HKEY_CLASSES_ROOT\$RegKey"
}
这将返回:
Get-Item : Cannot find path 'HKEY_CLASSES_ROOT\Access.ACCDAExtension.16' because it does not exist.
At line:6 char:15
+ $Result = Get-Item -Path "Registry::HKEY_CLASSES_ROOT\$RegKey"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKEY_CLASSES_RO...DAExtension.16:String) [Get-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Hive: HKEY_CLASSES_ROOT
Name Property
---- --------
Access.Application.16 (default) : Microsoft Access Database
但是,该注册表项确实存在,如果我手动运行该命令,它会找到它:
get-item Registry::HKEY_CLASSES_ROOT\Access.ACCDAExtension.16
Hive: HKEY_CLASSES_ROOT
Name Property
---- --------
Access.ACCDAExtension.16 (default) : Microsoft Access Add-in
我很确定这是由每行末尾的返回引起的。
PowerShell 5.1 版
解决方案
我已经解决了这个问题,我让我的列表成为字符串列表:
[string[]]$Patch = (".accda=Access.ACCDAExtension.16",
".accdb=Access.Application.16" -split "`n")
Foreach ($a in $Patch) {
$RegKey = ($a -split "=")[1]
$Result = Get-Item -Path "Registry::HKEY_CLASSES_ROOT\$RegKey"
}
该问题可能是由于每行末尾的返回引起的,也许我也可以将其从命令中过滤掉。
推荐阅读
- caching - Magento 2 2.3 整页购物车问题
- c++ - 仅将需要的数据从一个大文件复制到另一个
- javascript - jQuery + SVG:无法访问 iFrame 中的 SVG 元素
- android - 没有这样的实例方法:'com.example.android.instagramclone.Login.LoginActivity.getCurrentUser'
- java - JPA/Hibernate 只写字段,没有读取
- intrinsics - 如何广播 __m256i 的最低单词?
- r - 如何使用 purrr 中的 map 和 dplyr 中的 mutate 来生成 glm 汇总表?
- uitableview - 错误当我从 tableview Swift 中删除一行时
- javascript - 使用 Jquery 删除所选项目(不在选项字段内)
- html - 如何使用按钮和HTML修复导航栏悬停问题