Настройка Центра обновления Windows в Windows Server 2016

1421
M4ver1k

проблема

Включите Центр обновления Windows, чтобы автоматически загружать и планировать установку. График работы на определенный день (суббота).

Решение, которое я попробовал

Напишите powershellскрипт, используя gpmc/ grouppolicymodule для изменения настроек Центра обновления Windows.

Конечное состояние, которое я ищу:

gpedit.msc ->Administrative Templates/Windows Components/Windows Update

Настроить автоматическое обновление ->

Enabled  Auto download and schedule the install (4)  Every Saturday (7) 

Проблемы сталкиваются

Не найдено никакой документации для этого для Windows Server 2016 с использованием powershell.

Заметки:

  • Машина не является частью нашей эры.
  • Я пытаюсь изменить местную политику.
3

1 ответ на вопрос

3
Ben N

К сожалению, 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 

Таким образом, изменения будут видны в редакторе локальной групповой политики, и обычная инфраструктура групповой политики будет применять их к реестру.