Подтвердить что ты не робот

PowerShell создать путь к реестру один лайнер?

Создание значения реестра, включая путь до него, а не ошибки, если путь уже существует, легко с помощью old-school reg.exe:

reg add HKCU\Software\Policies\Microsoft\Windows\EdgeUI /f /v DisableHelpSticker /t reg_sz /d 1

Это красиво и лаконично. Самый короткий способ, который я нашел в чистом PowerShell, - две строки или три, если вы не хотите повторять путь:

$regPath = 'HKCU:\Software\Policies\Microsoft\Windows\EdgeUI'
New-Item $regPath -Force | Out-Null
New-ItemProperty $regPath -Name DisableHelpSticker -Value 1 -Force | Out-Null

Есть ли более простой способ использования чистого PowerShell? И без добавления служебной функции.

4b9b3361

Ответ 1

Вы можете подключить строку создания к строке New-ItemProperty следующим образом, но имейте в виду, что флаг -Force на New-Item удалит любое ранее существующее содержимое ключа:

New-Item 'HKCU:\Software\Policies\Microsoft\Windows\EdgeUI' -Force | New-ItemProperty -Name DisableHelpSticker -Value 1 -Force | Out-Null

Ответ 2

Другой способ упростить обработку реестра PS - это непосредственный вызов функции .Net SetValue():

[microsoft.win32.registry]::SetValue("HKEY_CURRENT_USER\Software\Test", "Test-String", "Testing")
[microsoft.win32.registry]::SetValue("HKEY_CURRENT_USER\Software\Test", "Test-DW", 0xff)

Ответ 3

Извините за мертвый поток, но почему бы просто не

New-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\EdgeUI -Name DisableHelpSticker -Value Contoso -Force | Out-Null

Я использую это для некоторых материалов SCCM и не перезаписывает существующие записи reg.