Проверить ключи реестра с помощью PowerShell - PullRequest
0 голосов
/ 05 мая 2020

Попытка создать функцию, которая проверяет значения в редакторе реестра. Скрипт отлично работает, если я не пытаюсь найти значения двух разных свойств с одним и тем же путем. Например, если вы закомментируете второй путь HKLM, сценарий будет работать ... но если вы оставите его, сценарий не будет работать, потому что существует повторяющийся путь ("HKLM: \ SYSTEM \ CurrentControlSet \ Services \ hyperkbd") . Как это можно обойти?

function validate-registry{

    $registrylist = 

    @{ 

    "HKLM:\SYSTEM\CurrentControlSet\Services\hyperkbd" = "ErrorControl","0";
    "HKLM:\SYSTEM\CurrentControlSet\Services\hyperkbd" = "Start","3";

     }

    foreach ($registry in $registrylist.Keys)
    { 
        $namevaluearray = $registrylist[$registry]
        $name = $namevaluearray[0]
        $value = $namevaluearray[1]

        if( 
        (Get-ItemProperty $registry -name $name).($name) -eq $value )

        {

        write-host $name "is set to the correct value."

        }
        else
        { 

        write-host "The value of" $namevaluearray "is INCORRECT."

        }

    } 
}

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете использовать вложенные хэш-таблицы для хранения отношений 1-ко-многим:

function Validate-Registry {

    $registrylist = @{
        "HKLM:\SYSTEM\CurrentControlSet\Services\hyperkbd" = @{
            "ErrorControl" = "0"
            "Start" = "3"
        }
    }

    foreach ($registry in $registrylist.Keys) { 
        foreach($valueName in $registrylist[$registry].Keys){
            $value = $registrylist[$registry][$valueName]

            if ((Get-ItemPropertyValue -LiteralPath $registry -Name $valueName) -eq $value)
            {
                write-host $valueName "is set to the correct value."
            }
            else { 
                write-host "The value of" $valueName "is INCORRECT."
            }
        }
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...