使用powershell在注册表中搜索特定的值名称及其关联的数据键

时间:2018-08-19 16:24:25

标签: powershell

我正在尝试在注册表(HKLM:\ Cluster \ Resources)中搜索匹配= VirtualServerName的任何值名称。并将其关联的数据键输出到数组。

例如:

      Name            Type     Data
VirtualServerName    REG_SZ   SQLDEP05

但是我无法使用Get-ItemProperty命令为重复搜索找到正确的开关。

因此,我尝试使用Get-ChileItem insted:

$Reg = "HKLM:\Cluster\Resources\"
Get-ChildItem -recurse "$Reg" | Select-Object -Property VirtualServerName -ExcludeProperty $exclude | ForEach-Object { $_.PSObject.Properties.Value }

仅当我使用$ _。PSObject.Properties开关中的 .Name 选项时,该选项才起作用。

但是当我尝试获取VirtualServerName的值时, .Value

$Reg = "HKLM:\Cluster\Resources\"
Get-ChildItem -recurse "$Reg" | Select-Object -Property VirtualServerName -ExcludeProperty $exclude | ForEach-Object { $_.PSObject.Properties.Value }

我没有任何输出。

1 个答案:

答案 0 :(得分:1)

使用Where-Object使用GetValueNames() method测试特定键下是否存在值名称:

$Keys = Get-ChildItem -Path $Reg -Recurse |Where-Object {$_.GetValueNames() -contains 'VirtualServerName'}

现在您已经有了相关的密钥,可以使用Get-ItemProperty来获取值数据:

$Keys |Get-ItemProperty VirtualServerName

GetValue() method

$Keys |ForEach-Object {
  $_.GetValue('VirtualServerName')
}