Konfigurasikan Pembaruan Windows di Windows Server 2016

3

Masalah

Aktifkan Pembaruan Windows untuk secara otomatis mengunduh dan menjadwalkan pemasangan. Jadwal berjalan pada hari tertentu (Sabtu).

Solusi saya coba

Menulis sebuah powershell skrip menggunakan gpmc / grouppolicy modul untuk mengubah pengaturan Pembaruan Windows.

Keadaan akhir yang saya cari adalah:

gpedit.msc - & gt; Administrative Templates/Windows Components/Windows Update

Konfigurasikan Pembaruan Otomatis - & gt;

Enabled

Auto download and schedule the install (4)

Every Saturday (7)

Masalah yang Dihadapi

Tidak menemukan dokumentasi untuk melakukan ini untuk Windows Server 2016 menggunakan PowerShell.

Catatan:

  • Mesin ini bukan bagian dari AD.
  • Saya mencoba mengubah kebijakan lokal.
M4ver1k
sumber

Jawaban:

3

Sayangnya Get-GPO cmdlet hanya bisa mendapatkan GPO dari domain; tampaknya tidak ada yang dikelola setara dengan metode COM IGroupPolicyObject::OpenLocalMachineGPO. Ada beberapa cara lain untuk mengatur ini. Dengan asumsi Kebijakan Grup yang ada belum menentukan pengaturan kebijakan ini, mengubah Registry secara langsung akan berfungsi dengan baik:

$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()

Ini tidak akan memengaruhi apa yang Anda lihat di Penyunting Kebijakan Grup Lokal, tetapi akan dilihat oleh infrastruktur Pembaruan Windows. Karena Anda tidak mengatakan jam berapa pembaruan harus diinstal, saya mengaturnya menjadi tengah malam. Anda dapat mengubahnya dengan mengubah ScheduledInstallTime nilai.

Untuk menentukan pengaturan Registry apa yang sesuai dengan kebijakan yang diberikan, Anda dapat menggunakan alat Element Inspector di aplikasi open-source saya Kebijakan Plus . Berbicara tentang Policy Plus, Anda juga dapat memuatnya sebagai perakitan dari PowerShell untuk mengedit GPO lokal. Pertama, unduh itu dan gunakan tab Properties di Explorer untuk "membuka blokir" itu; ini memungkinkan .NET memuatnya ke proses lain. Kemudian letakkan di direktori yang sama dengan skrip ini:

[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()

Ini mengambil keuntungan dari Policy Plus PolicyLoader dan PolFile kelas. Ketika skrip selesai, Anda akan melihat output ini (karena dua panggilan terakhir):

saved to disk and invoked policy refresh
True

Dengan cara ini, perubahan akan dapat dilihat di Editor Kebijakan Grup Lokal dan infrastruktur Kebijakan Grup normal akan menerapkannya ke Registry.

Ben N
sumber