首页 > 解决方案 > PowerShell 中是否有搜索选项,它可以查看整个子注册表

问题描述

我正在尝试查找 2 个注册表值,但我没有确切的路径,它可能位于子注册表中的任何位置。PowerShell 中是否有搜索选项,它可以查看整个子注册表。找到它并用新值替换它?我尝试使用 (*) 它没有找到任何东西。示例如下

当前的:

Hklm:\system\test value 10.0.0.5
Hklm:\systen\subvalues\test2 value 10.0.0.6

改成:

Hklm:\test value 10.0.0.7
Hklm:\subvalues\test2 value 10.0.0.9

在此处输入图像描述

提前致谢

标签: powershell

解决方案


我还不能发表评论,但 Get-ItemProperty 主要用于获取注册表子项信息。

例如,虽然不优雅,但这将满足您的需求。

Get-Item -ErrorAction SilentlyContinue -path  
"Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\Test" |
foreach {
    Get-ItemProperty -Path "Microsoft.PowerShell.Core\Registry::$_" | 
   foreach {
        $CurrentUserShellFoldersPath = $_.PSPath
    $_.PSObject.Properties |
    foreach {
        if ($_.Value -like "10.0.0.5") {
            write-host "Old Value:`t"$_.Value
            $newValue = $_.Value
            $newValue = $newValue -replace '10.0.0.5', "10.0.0.6"
            Set-ItemProperty -Path $CurrentUserShellFoldersPath -Name $_.Name -Value 
            $newValue
           }
        }
    }
}

推荐阅读