Невозможно подтвердить ключ реестра был добавлен вручную - PullRequest
1 голос
/ 02 ноября 2019

Работа с Информация о настройке управления питанием на сетевом адаптере , я создал петлю, которая добавляет ключ, чтобы отключить отключение питания Windows от сетевых карт.

for($i=0; $i -le 20; $i++)
{
    New-Item -Path ("REGISTRY::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" + "{0:0000}" -f $i) -Name "PnPCapabilities" -Value "24"
}

Изначально возвращается

Hive: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Class {4D36E972-E325-11CE-BFC1-08002bE10318} \ 0000

Имя свойства
---- --------
PnPCapabilities (по умолчанию): 24

Так что, похоже, работает, но когда я вхожу в regedit, я могуне вижу ключа.

Запуск: Get-Itemproperty -path 'REGISTRY::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001\'

Также возвращается без ключа, который я добавил. Однако при повторном запуске цикла он возвращает:

New-Item: ключ в этом пути уже существует. В строке: 3 символа: 5 + New-Item -Path ("REGISTRY :: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentContr ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: ResourceExists: (Microsoft. Power ... RegistryWrapper: RegistryWrapper) [New-Item], IOException + FullyQualifiedErrorId: System.IO.IOException, Microsoft.PowerShell.Commands.NewItemCommand

Так что я не совсем уверен, почему я не могусм. ключ, который я создал. Я нахожусь на Windows 10 pro, если это имеет значение.

1 Ответ

1 голос
/ 02 ноября 2019

Как вы прокомментировали, вы пропустили открывающую скобку в вашем коде. Кроме того, я думаю, что вы должны использовать Set-ItemProperty вместо New-Item для создания или изменения значения существующего свойства.
Кроме того, свойство, которое вы устанавливаете, имеет тип DWord , где в вашемкод, который вы заключаете в кавычки, превращая его в строку.

Ниже код должен делать то, что вы хотите.

for($i = 0; $i -le 20; $i++) {
    # you need to double-up the opening and closing curly brackets on the GUID here, otherwise
    # the '-f' formatting operator will error out trying to find the '{0:0000}' to replace..
    $path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Class\{{4D36E972-E325-11CE-BFC1-08002bE10318}}\{0:0000}' -f $i
    Set-ItemProperty -Path $path -Name 'PnPCapabilities' -Value 24 -Type 'DWord'    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...