2014-11-03 5 views
12

einen Registrierungswert erstellen, einschließlich dem Weg dorthin auf und erroring nicht, wenn der Pfad bereits vorhanden ist einfach die alte Schule reg.exe mit:PowerShell erstellen Registrierungspfad einen Liner?

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

so schön und prägnant ist. Der kürzeste Weg ich es in reinem Powershell zu tun gefunden ist zwei Linien oder drei, wenn Sie den Pfad nicht wiederholen wollen:

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

Gibt es einen einfacheren Weg, reines Powershell? Und ohne eine Dienstprogrammfunktion hinzuzufügen.

+0

nicht wichtig, aber Sie können den Fehler unterdrücken, der auftritt, wenn ein Schlüssel vorhanden ist, indem Sie den Pfad zuerst testen. Siehe den Abschnitt "Wenn-nicht-Testpfad" dieser Antwort. http://stackoverflow.com/a/26707878/3093031 –

+0

Das stimmt. Aber dann ist es noch größer. Ich habe entweder "-ErrorAction SilentlyContinue" oder "-Force" verwendet, um den Fehler zu vermeiden. – Vimes

+0

Dies ist eine Art Dealbreaker für mich in Bezug auf Powershell :( – hl3mukkel

Antwort

13

Sie können Rohr die Schaffung Leitung zum New-ItemProperty Zeile wie folgt, aber bewusst sein, dass die -Force Flagge auf New-Item wird alle bereits vorhandenen Inhalte des Schlüssels löschen:

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

Ich habe gerade gelernt, dass New-Items "-Force" -Flag alle Sub-Keys/Werte wegbläst. '-SilentlyContinue' ruft das Objekt nicht ab. Ich versuche, an ein einfaches zu denken Möglichkeit, einen Wert nicht-destruktiv zu setzen, indem p erstellt wird ath, wenn es nicht existiert, in einer einzigen Zeile ohne "if key exists ..." Art der Sache. Weil das für einen One-Liner albern wird. Lass es mich wissen, wenn du Ideen hast. – Vimes

+0

Sie könnten 'Test-Path' verwenden, um die Existenz dieser Schlüssel zu überprüfen, bevor Sie versuchen, sie zu erstellen, falls es existiert, überprüfen Sie auch die Eigenschaft. Wäre es wert, in eine Funktion zu setzen, wenn Sie es mehrmals tun. – arco444

+0

Ich fange an zu denken, dass das die Option ist, Daten in die Registrierung zu "überlagern", und es gibt keinen netten Einzeiler. – Vimes

0

Leider rez tot Thread aber warum nicht nur

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

ich dies für einige SCCM Sachen verwenden und es ist meine bestehenden reg Einträge nicht überschrieben werden.

+2

Dieser Befehl erstellt 'HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ EdgeUI' nicht, wenn er nicht existiert und unabhängig von der Verwendung von | Out-Null, Fehler wird weiterhin an der Konsole angezeigt. – ALIENQuake

+0

Ahh, sah nicht den 'und den Weg dahin'. – Benny