PowerShell сканирование объектов реестра и сравнение

#powershell #registry

#powershell #реестр

Вопрос:

Я хочу просканировать раздел реестра на предмет его подразделов, сравнивая их значения value. Например:

 HKCU:SoftwareMicrosoftOffice16.0OutlookProfilesmail9375CFF0413111d3B88A00104B2A6676
  

Этот раздел реестра содержит два подраздела. Я хочу просмотреть два подраздела, пока не найду тот, у которого имя учетной записи задано как у текущего вошедшего в систему пользователя. Как только я определю правильный ключ, я также хочу добавить значения к свойствам ключей.

 if ((Test-Path $path1) -eq $true) {
    $registry = Get-ChildItem "HKCU:SoftwareMicrosoftOffice16.0OutlookProfilesOutlook9375CFF0413111d3B88A00104B2A6676"

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

На этом изображении показаны два подраздела

Показывает значения в ключах

Я хочу просканировать каждый подраздел в данном случае 00000001 и 00000002 и посмотреть, в каком из них переменная имени учетной записи установлена для текущего пользователя. По сути, как просматривать и извлекать значения из каждого объекта $ key.

Комментарии:

1. Мне непонятно, в чем здесь ваш вопрос. С какой проблемой вы столкнулись? Чего вы ожидаете от своего кода и что он на самом деле делает? Вы получаете ошибки? Что они говорят?

2. В чем ваш вопрос? Я не вижу причины, по которой вы не должны делать то, что вы хотите

3. Я обновил исходное сообщение. Если вы, ребята, можете помочь, это было бы оценено.

Ответ №1:

Я разобрался с этим самостоятельно. По сути, вы хотите использовать get-childitem для текущего вывода get-childitem. Итак, для моего примера я закончил тем, что использовал следующий фрагмент кода.

     $path1 = "HKCU:SoftwareMicrosoftOffice16.0OutlookProfilesOutlook9375CFF0413111d3B88A00104B2A6676*"  ## Reg key location for calling signature file 
$path2 = "HKCU:SoftwareMicrosoftOffice16.0OutlookProfilesmail9375CFF0413111d3B88A00104B2A6676*"     ## 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
       }