如何使用Get-ChildItem搜索包括当前键的子键

时间:2017-04-25 21:59:30

标签: powershell

如何使用Get-ChildItem搜索子键,包括注册表中$ path的当前键?我正在搜索特定字符串的数据列/值的一部分。我当前的代码有效,但不包括搜索中我的路径字符串的当前键或最后一个键。

我在HKCU注册表中设置了ABC密钥以及其他子密钥。每个都包含值和数据。搜索开头的$ Path是' HKEY_CURRENT_USER \ ABC'

  

HKCU \ ABC,其中包含值及其数据
  HKCU \ ABC \ DEF包含值及其数据
  HKCU \ ABC \ DEF \ GHI包含值及其数据

我的功能代码(或其中的一部分)如下所示

$objProps = @()

    $Key = Get-ChildItem -Path Registry::$Path -Recurse
    ForEach ($SubKey in $Key) { 
      #$Key = Get-ItemProperty -Path Registry::$CurRegistryKey
      ForEach ($Prop in $SubKey.Property) {
          if (($SubKey.GetValue($Prop)) -match $ValueDataRegex) {  
            $objProps += @{ 
                Key = $SubKey
                ValueName = $Prop
                ValueData = $SubKey.GetValue($Prop)
            } 
          } 
        }
    } 

    return $objProps

它只返回DEF和GHI的结果。我还希望它能够在ABC键中搜索数据。如果我使用' HKEY_CURRENT_USER \'作为我的$ Path它可以工作,但在搜索不必要的注册表项时需要很长时间。

1 个答案:

答案 0 :(得分:0)

在迭代结果之前再做一次Get-ChildItem调用:

$Key = @(Get-ChildItem -Path Registry::$Path -Recurse)
$Key += Get-Item Registry::$Path