PowerShell扫描注册表对象并进行比较

时间:2019-04-24 07:50:05

标签: powershell registry

我正在寻找注册表项的子项,同时比较它们的值。例如:

HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles\mail\9375CFF0413111d3B88A00104B2A6676

此注册表项包含两个子项。我想浏览两个子项,直到找到将其“帐户名”设置为当前登录用户的子项。一旦我检测到右键,我也想向键属性添加值。

if ((Test-Path $path1) -eq $true) {
    $registry = Get-ChildItem "HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\"

    foreach ($key in $registry) {
        $key | Where-Object {$_.Name -eq "00000002"}
        Write-Host "i found 00000002"
    }    
} 

This image shows two subkeys

Shows values in keys

在这种情况下,我想扫描每个子项00000001和00000002,看看其中哪个子项的帐户名变量设置为当前用户。从本质上讲,如何遍历并从每个$ key对象中提取值。

1 个答案:

答案 0 :(得分:0)

我自己弄清楚了。本质上,您想在当前的get-childitem输出上使用get-childitem。因此,对于我的示例,我最终使用了以下代码段。

    $path1 = "HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\*"  ## Reg key location for calling signature file 
$path2 = "HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles\mail\9375CFF0413111d3B88A00104B2A6676\*"     ## Reg key location for calling signature file alternate


if ((test-path $path2) -eq $True) {

     Get-ChildItem $path2 |
     Get-ItemProperty |
     Where-Object{
          $_.'Account Name' -match $env:USERNAME
     }| Set-ItemProperty -name 'New Signature' -value $env:USERNAME
       }
相关问题