Удаленная проверка ключа реестра - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь создать сценарий, который принимает ввод имени компьютера из файла и проверяет, существует ли раздел реестра.Сценарий выдает ошибку из второй строки, похоже, что имена компьютеров не добавляются из переменной.Если имя компьютера вводится вручную, скрипт работает нормально.Вот ошибка:

Exception calling "OpenRemoteBaseKey" with "2" argument(s): "The network path
was not found.
At line:3 char:1
+ $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$lap)

Вот сценарий:

$laptop = Get-Content -Path 'Laptop.txt'
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$lap")
$RegKey= $Reg.OpenSubKey("SOFTWARE\Status\")
$NetbackupVersion = $RegKey.GetValue("Activated")

foreach ($lap in $laptop) {
    if ($NetbackupVersion -eq "Yes") {
        echo "$lap has the key"
    } else {
        echo "$lap does not have the key"
    }
}

Другая проблема заключается в том, что ключ не существует, сценарий показывает ошибки, но все равно повторяет, чтоУ машины есть ключ.

1 Ответ

0 голосов
/ 04 марта 2019

У вас ложная двойная кавычка после $lap в вызове OpenRemoteBaseKey().Удалить это.Кроме того, код поиска в реестре находится в теле вашего цикла foreach.Переменная цикла $lap не определена снаружи.

Измените это:

$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$lap")
$RegKey = $Reg.OpenSubKey("SOFTWARE\Status\")
$NetbackupVersion = $RegKey.GetValue("Activated")

foreach ($lap in $laptop) {
    ...
}

на это:

foreach ($lap in $laptop) {
    $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $lap)
    $RegKey = $Reg.OpenSubKey("SOFTWARE\Status\")
    $NetbackupVersion = $RegKey.GetValue("Activated")
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...