2014-11-03 66 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