2014-11-03 23 views
12

創建一個註冊表值,包括路徑上到這,如果路徑已經存在不示數是容易用老派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 -not test-path」部分。 http://stackoverflow.com/a/26707878/3093031 – 2014-11-03 20:10:54

+0

這是真的。但是,它甚至更大。我使用'-ErrorAction SilentlyContinue'或'-Force'來避免錯誤。 – Vimes 2014-11-03 20:38:40

+0

這對我來說是一種破壞者:powershell :( – hl3mukkel 2017-04-12 10:12:05

回答

13

可以通過管道創建行至New-ItemProperty行,如下所示,但要知道,在New-Item-Force標誌將刪除鍵的任何預先存在的-內容:

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

您可以在嘗試創建它之前使用'Test-Path'來檢查它們是否存在,如果它確實存在,則檢查該屬性。如果您多次執行此操作,將會值得加入功能。 – arco444 2014-11-24 10:03:40

+0

我開始認爲這是將數據「覆蓋」到註冊表中的選項,並沒有很好的單行程。 – Vimes 2014-11-24 20:31:08

0

對不起,蘇亞雷斯死線但爲什麼不只是

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

我用這個SCCM的東西,它不覆蓋我現有的註冊條目。

+2

此命令將不會創建'HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ EdgeUI' Out-Null,錯誤仍然會顯示在控制檯上。 – ALIENQuake 2015-07-20 16:08:05

+0

啊,沒有看到'通往它的道路'。 – Benny 2015-07-20 19:59:18