Patch Windows yang tertunda adalah pintu masuk favorit para penyerang. Episode ini membahas otomasi patching dengan modul PSWindowsUpdate, integrasi WSUS untuk organisasi besar, membaca riwayat update lewat Get-Hotfix, hingga verifikasi dan rollback patch.

Di episode 19 kalian mengelola registry — konfigurasi lokal setiap mesin. Namun ada satu jenis "pembaruan konfigurasi" yang jauh lebih berdampak dan sering kali paling ditunda: patch Windows. Di sinilah letak salah satu ironi terbesar administrasi sistem: patch yang terlambat diterapkan adalah pintu masuk nomor satu bagi serangan siber, tetapi jendela patching adalah saat yang paling mengganggu bagi user.
Bayangkan patching seperti vaksinasi. Satu orang menunda vaksin mungkin terasa aman — hingga wabah datang. Di dunia nyata, ribuan CVE (kerentanan keamanan) diumumkan setiap tahun, dan penyerang membaca pengumuman itu bersamaan dengan kalian. Waktu antara patch dirilis dan kalian menerapkannya adalah perlombaan. Di episode ini kita mengubah patching dari ritual manual menakutkan menjadi proses terjadwal yang bisa dipertanggungjawabkan: modul PSWindowsUpdate untuk mesin tunggal, WSUS untuk organisasi besar, dan Get-Hotfix untuk verifikasi.
Ada tiga alasan kenapa patching manual gagal di produksi:
Pola terbaik di industri adalah jendela patching (maintenance window): jadwal tetap, misalnya Minggu pukul 02.00, ketika skrip berjalan otomatis, menginstal patch, merestart jika perlu, dan menulis laporan.
Windows Update di Windows 10/11 modern sudah cukup otomatis. Namun untuk server, mesin tanpa policy update, atau kontrol penuh atas prosesnya, modul komunitas PSWindowsUpdate adalah alat yang tepat. Cmdlet-nya meniru nama Windows Update asli: Get-WindowsUpdate, Install-WindowsUpdate, Get-WUHistory, dan lain-lain.
PSWindowsUpdate tersedia di PowerShell Gallery. Karena modul ini menulis ke sistem, jalankan console sebagai Administrator:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Install-Module -Name PSWindowsUpdate -Scope CurrentUser -Force
Import-Module PSWindowsUpdate
Get-Command -Module PSWindowsUpdate | Select-Object NameGet-WindowsUpdate menampilkan update yang belum terpasang di mesin ini. Tambahkan -MicrosoftUpdate untuk mencakup update Microsoft Office dan produk lain, bukan hanya Windows:
Get-WindowsUpdate -MicrosoftUpdate | Select-Object Title, Status, Size, KBPerhatikan kolom KB — nomor Knowledge Base (misalnya KB5050021) yang akan kita pakai untuk verifikasi dan rollback nanti.
Install-WindowsUpdate mengunduh dan menginstal, dengan -AcceptAll untuk menyetujui semua lisensi dan -AutoReboot untuk restart otomatis jika diperlukan:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoRebootImportant
-AutoReboot akan me-restart mesin tanpa menunggu. Di server produksi, jangan pernah menjalankan perintah ini di luar maintenance window. Pola aman: jalankan tanpa -AutoReboot, cek -RebootRequired setelahnya, dan biarkan jadwal penjadwalan yang memutuskan kapan restart dilakukan.
Untuk kontrol penuh, gabungkan Install-WindowsUpdate dengan Task Scheduler. Pertama, simpan skrip patching:
# update-windows.ps1
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot -ErrorAction ContinueLalu daftarkan sebagai tugas terjadwal mingguan:
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\update-windows.ps1"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 02:00
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Patch-Mingguan" `
-Action $action -Trigger $trigger -Principal $principal -ForceTugas berjalan sebagai SYSTEM — akun dengan hak tertinggi di mesin — sehingga tidak perlu menyimpan password apa pun di skrip. Register-ScheduledTask adalah cara standar untuk menjadwalkan skrip PowerShell di Windows.
Untuk puluhan atau ratusan mesin, WSUS (Windows Server Update Services) adalah jawabannya: server yang mengunduh patch sekali lalu mendistribusikannya ke semua mesin klien. Manfaatnya: bandwidth hemat, kontrol penuh atas patch yang disetujui, dan satu titik pengelolaan.
Modul WSUS dibundel dengan peran WSUS di Windows Server. Cmdlet utama yang dibutuhkan administrator:
$wsus = Get-WsusServer -Name "wsus01.corp.local" -PortNumber 8530
Get-WsusUpdate -UpdateServer $wsus -Approval Unapproved |
Select-Object Title, UpdateClassification, UpdateRevisionNumberGet-WsusUpdate mengambil daftar update dari server WSUS. Filter -Approval Unapproved menampilkan patch yang sudah terunduh ke WSUS tetapi belum disetujui — ini adalah "kantong keputusan" yang harus kalian kelola.
Approve-WsusUpdate menerapkan keputusan: patch ini boleh diinstal oleh semua klien (atau target tertentu):
$wsus = Get-WsusServer -Name "wsus01.corp.local" -PortNumber 8530
$updates = Get-WsusUpdate -UpdateServer $wsus -Approval Unapproved
Approve-WsusUpdate -Update $updates -Action Install -UpdateServer $wsus-Action Install artinya update disetujui untuk diinstal; pilihan lain seperti -Action Remove untuk menolak. Setelah disetujui, klien mengambil dan memasangnya sesuai jadwal mereka.
Laporan kepatuhan adalah bahan rapat manajemen. Dari sisi server:
$wsus = Get-WsusServer -Name "wsus01.corp.local" -PortNumber 8530
Get-WsusUpdate -UpdateServer $wsus -Approval Approved |
Select-Object Title, UpdateClassification, ApprovedDate |
Export-Csv -Path "C:\Data\wsus-approved.csv" -NoTypeInformation -Encoding UTF8Get-Hotfix membaca riwayat update yang terpasang langsung dari WMI. Ini adalah alat verifikasi paling cepat dan tidak memerlukan modul tambahan:
Get-HotFix | Sort-Object InstalledOn -Descending |
Select-Object -First 10 HotFixID, Description, InstalledOn, InstalledBy
Get-HotFix -Id KB5050021Perintah kedua memverifikasi patch tertentu: jika tidak ada output, patch tersebut belum terpasang di mesin ini.
Pola verifikasi yang lazim: cek keberadaan patch sebelum dan sesudah proses patching. Jika Get-Hotfix -Id KB5050021 gagal (patch tidak ada), proses patching belum lengkap.
Jika sebuah patch ternyata merusak sistem, rollback dilakukan lewat wusa (Windows Update Standalone Installer):
wusa.exe /uninstall /kb:5050021 /quiet /norestartWarning
Rollback patch adalah operasi darurat terakhir, bukan alur normal. Beberapa patch tidak bisa dihapus, dan menghapus patch keamanan membuka kembali kerentanan. Urutan yang benar: identifikasi patch yang bermasalah lewat Get-Hotfix, periksa apakah ia baru saja dipasang, lalu putuskan apakah rollback lebih baik daripada memperbaiki dampaknya. Jangan pernah rollback "berjamaah" tanpa pengujian.
Get-Hotfix, cek log sistem untuk error, dan konfirmasi layanan inti masih hidup sebelum melanjutkan ke gelombang berikutnya.Get-Hotfix dan Export-Csv menjadi skrip kepatuhan bulanan — manajemen suka angka, dan audit akan memintanya.Di episode 20 ini kalian telah mengubah patching dari ritual manual menjadi proses yang bisa dijadwalkan dan dipertanggungjawabkan: modul PSWindowsUpdate dengan Install-Module PSWindowsUpdate, Get-WindowsUpdate, dan Install-WindowsUpdate -AcceptAll -AutoReboot; penjadwalan lewat Task Scheduler; integrasi WSUS dengan Get-WsusUpdate dan Approve-WsusUpdate untuk organisasi besar; riwayat update dan verifikasi lewat Get-Hotfix; hingga rollback dengan wusa.
Poin kunci yang harus kalian bawa:
Install-WindowsUpdate dengan -AutoReboot hanya boleh berjalan di maintenance window.Get-WsusUpdate dan Approve-WsusUpdate adalah jantung operasinya.Get-Hotfix, dan cadangkan rollback dengan wusa sebagai opsi terakhir.Mesin kalian kini selalu terkini dan aman. Pertanyaan berikutnya: bagaimana kalian yakin mesin itu terhubung dengan benar ke jaringan? Di episode 21 selanjutnya kita akan membahas Network Configuration: mengelola adapter dengan Get-NetAdapter dan Set-NetAdapter, konfigurasi IP statis dan DHCP, pengaturan DNS client, hingga troubleshooting dengan Test-Connection, Test-NetConnection, dan Resolve-DnsName. Sampai jumpa!