首页 > 解决方案 > PowerShell:获取给定子键名称和值的注册表键名称

问题描述

我正在尝试返回给定子键名称和值的注册表键名称。例如,如果存在:

HKLM:\Software\key1\home1 home_val=C:\dir1
HKLM:\Software\key2\home2 home_val=C:\dir2

我希望能够返回具有 sub-key=home_val=C:\dir1 的键名

我几乎在那里,但不知道如何返回键名。我想出了以下几点:

Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\key*' -Name HOME_VAL | Select-Object -Property 'C:dir1'

标签: powershellpowershell-5.0

解决方案


你的代码给了我这个错误......

Get-ItemPropertyValue:路径 HKEY_LOCAL_MACHINE\SOFTWARE\key1 中不存在属性 HOME_VAL

...当它遇到没有HOME_VAL值的键时。

这对我来说可以获得完整的关键路径......

PS> $filterValueName = 'home_val'
PS> $filterValueData = 'C:\dir1'
PS> Get-ChildItem -Path 'HKLM:\SOFTWARE\key*' -Recurse `
        | Where-Object { ($_ | Get-ItemProperty -Name $filterValueName).$filterValueName -eq $filterValueData } `
        | Select-Object -ExpandProperty 'Name'
HKEY_LOCAL_MACHINE\SOFTWARE\key1\home1

这将枚举任何键下的所有后代键HKLM:\SOFTWARE\key*,选择那些具有以home_val数据命名的值C:\dir1并提取其Name属性的键。如果您想要键名而不是其路径,则可以选择PSChildName属性。


推荐阅读