Leider kann das Get-GPO
Cmdlet nur GPOs von einer Domäne abrufen. Es scheint kein verwaltbares Äquivalent der COM-Methode zu geben IGroupPolicyObject::OpenLocalMachineGPO
. Es gibt jedoch andere Möglichkeiten, dies einzustellen. Unter der Annahme, dass die vorhandene Gruppenrichtlinie diese Richtlinieneinstellung nicht bereits angibt, sollte das direkte Anpassen der Registrierung problemlos funktionieren:
$hklm = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Default') $wu = $hklm.CreateSubKey('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU') $wu.SetValue('NoAutoUpdate', 0, 'DWord') $wu.SetValue('AUOptions', 4, 'DWord') $wu.SetValue('ScheduledInstallDay', 7, 'DWord') $wu.SetValue('ScheduledInstallTime', 0, 'DWord') $wu.Dispose() $hklm.Dispose()
Dies wirkt sich nicht auf das aus, was Sie im Editor für lokale Gruppenrichtlinien sehen, wird jedoch von der Windows Update-Infrastruktur angezeigt. Da Sie nicht gesagt haben, zu welcher Stunde des Tages die Updates installiert werden sollen, habe ich sie auf Mitternacht gesetzt. Sie können dies ändern, indem Sie den ScheduledInstallTime
Wert ändern .
Um festzustellen, welche Registrierungseinstellungen einer bestimmten Richtlinie entsprechen, können Sie das Elementinspektor-Tool in meiner Open-Source-Anwendung Policy Plus verwenden . Apropos Policy Plus: Sie können es auch als Assembly von PowerShell laden, um das lokale Gruppenrichtlinienobjekt zu bearbeiten. Zuerst laden Sie es und die Registerkarte Eigenschaften im Explorer verwenden, um „zu entsperren“ es; Dadurch kann .NET es in einen anderen Prozess laden. Dann legen Sie es in das gleiche Verzeichnis wie dieses Skript:
[System.Reflection.Assembly]::LoadFile((gi '.\Policy Plus.exe').FullName) | Out-Null $loader = [PolicyPlus.PolicyLoader]::new('LocalGpo', '', $false) $pol = $loader.OpenSource() $pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'NoAutoUpdate', 0, 'DWord') $pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'AUOptions', 4, 'DWord') $pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'ScheduledInstallDay', 7, 'DWord') $pol.SetValue('SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU', 'ScheduledInstallTime', 0, 'DWord') $loader.Save() $loader.Close()
Dies nutzt die Vorteile von Policy Plus PolicyLoader
und PolFile
Klassen. Wenn das Skript abgeschlossen ist, sollten Sie diese Ausgabe sehen (aufgrund der letzten beiden Aufrufe):
saved to disk and invoked policy refresh True
Auf diese Weise werden die Änderungen werden in der lokalen Gruppenrichtlinien - Editor und die normale Gruppenrichtlinien - Infrastruktur sichtbar ist, wird sie in der Registrierung gelten.