我在这里遇到两个问题。 1:使用Get-ChildItem获取密钥时的通配符。 鉴于此代码
$registryPath = 'HKLM:\SOFTWARE\Test_Tasks\Assets\Delete_Ex\New*'
$keys = Get-ChildItem -path:$registryPath
和键,新密钥, New.Key & 新* 我得到了意想不到的结果,因为Get-ChildItem使用*作为通配符,但*也是注册表路径中的有效字符。这看起来很有问题。我假设我唯一真正的选择是使用-literalPath而不是-path来禁用通配符?编辑:不,当我使用-literalPath时,它甚至找不到 New * 键。越野车McBuggerson?我在Windows 7上使用PSv5,这是值得的。
2:使用Get-ItemProperty获取属性时的通配符。 鉴于此代码
$registryPath = 'HKLM:\SOFTWARE\Test_Tasks\Assets\Delete_Ex\New*'
$properties = Get-ItemProperties -path:$registryPath
新值, New.Value 和值的属性名称 我根本无法使用通配符。
老实说,我担心在注册表操作中允许使用通配符有点危险,但我想了解如何让它与键和属性一起使用,以防我真正需要在某些时候。
答案 0 :(得分:1)
$registryPath = 'HKLM:\SOFTWARE\Test_Tasks\Assets\Delete_Ex\New[*]'
$keys = Get-ChildItem -path:$registryPath
$keys = "Key", "New Key", "New.Key", "New*"
Write-Host "--LIKE--"
$keys -like "`*"
Write-Host "--MATCH--"
$keys -match "\*"
Write-Host "--RE-MATCH--"
$keys -like "*[*]*"
--LIKE--
Key
New Key
New.Key
New*
--MATCH--
New*
--RE-MATCH--
New*
第一个例子是像文字一样对待星号;它被解释为-like "*"
(即匹配任何东西!)
第二个使用匹配运算符更多地工作“regex-y”(那是 defintely 一个词,诚实)。
最后一个仍然使用,但通过将其包装在方括号中,我们正在搜索包含星号字符的任何内容
about_Wildcards
帮助页