К сожалению, Get-GPO
командлет может получать объекты групповой политики только из домена; похоже, что не существует какого-либо управляемого эквивалента метода COM IGroupPolicyObject::OpenLocalMachineGPO
. Однако есть и другие способы установить это. Предполагая, что существующая групповая политика еще не указывает этот параметр политики, настройка реестра напрямую должна работать нормально:
$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()
Это не повлияет на то, что вы видите в редакторе локальной групповой политики, но это будет видно по инфраструктуре Центра обновления Windows. Поскольку вы не сказали, в какое время дня должны быть установлены обновления, я установил его на полночь. Вы можете изменить это, изменив ScheduledInstallTime
значение.
Чтобы определить, какие параметры реестра соответствуют данной политике, вы можете использовать инструмент Element Inspector в моем приложении с открытым исходным кодом Policy Plus . Говоря о Policy Plus, вы также можете загрузить его как сборку из PowerShell для редактирования локального объекта групповой политики. Сначала загрузите его и используйте вкладку «Свойства» в проводнике, чтобы «разблокировать» его; это позволяет .NET загрузить его в другой процесс. Затем поместите его в тот же каталог, что и этот скрипт:
[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()
Это использует преимущества Policy Plus PolicyLoader
и PolFile
классов. Когда скрипт завершится, вы должны увидеть этот вывод (из-за последних двух вызовов):
saved to disk and invoked policy refresh True
Таким образом, изменения будут видны в редакторе локальной групповой политики, и обычная инфраструктура групповой политики будет применять их к реестру.