2014-11-03 3 views
12

Создание значения реестра, включая путь к нему, и не erroring, если путь уже существует, просто с помощью старой школы reg.exe:PowerShell создать путь реестра один лайнер?

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? И без добавления функции полезности.

+0

не важно, но вы можете подавить ошибку, которая возникает, когда ключ существует, сначала проверяя путь. См. Раздел 'if -nt-path-path' этого ответа. http://stackoverflow.com/a/26707878/3093031 –

+0

Это правда. Но это еще больше. Я использовал либо «-ErrorAction SilentlyContinue», либо «-Force», чтобы избежать ошибки. – Vimes

+0

Это своего рода разбойник для меня в отношении powershell :( – hl3mukkel

ответ

13

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

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

Я только что узнал, что флаг «-Force» нового элемента сдувает все под-ключи/значения. '-SilentlyContinue' не извлекает объект. Я пытаюсь думать о простой способ установить значение неразрушающим образом, создавая p если он не существует, в одной строке без типа «если ключ существует ...». Потому что это глупо для однострочного. Дайте мне знать, если у вас есть идеи. – Vimes

+0

Вы можете использовать «Test-Path», чтобы проверить наличие ключа перед тем, как его создать, если он существует и проверяет свойство. Было бы целесообразно включить функцию, если вы делаете это несколько раз. – arco444

+0

Я начинаю думать, что это возможность «наложить» данные в реестр, и нет приятного однострочного интерфейса. – Vimes

0

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

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

Я использую это в течение некоторого SCCM материала и не переписывает мои существующие записи REG.

+2

Эта команда не будет создавать «HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ EdgeUI», если она не существует и не зависит от использования | Out-Null, ошибка будет отображаться на консоли. – ALIENQuake

+0

Ahh, не видел «и путь, ведущий к нему». – Benny

Смежные вопросы