Bu yazımda sizlere WSUS (Windows Server Update Services) bahsedeceğim. WSUS ile kendi yapınızda Windows serverlar için kendi update sunucunuzu yapılandırabilir ve bu sunucu üzerinden Microsoft ürünü kullandığınız işletim sistemlerini ve Microsoft yazılımlarını güncelleyebilirsiniz.

PowerShell ile kurulum ve yapilandırmasını yapacağımız WSUS için detayları aşağıda bulabilirsiniz. Öncesinde bazı detaylardan bağsetmek isterim. WSUS normal şartlarda kolay kurulan ve yönetilen bir servistir ancak çok ilgi ister. Her gün kontrol edilmeli yada anlık olarak monitor edilmelidir. Günlük yayınlanan defender güncelllemeleri onaylanmalı yada otomatik olarak kurallaştırılarak onaylanması sağlanmalıdır. Aylık yayınlanan major ve minor Windows updateleri için incelemeler yapılmalı ve kontrollü bir şekilde uygulanmalıdır. 

Kurulum yapacağınız Windows Server domain join durumda yada workgroup olarak çalışan bir sunucu olabilir. Önerilen mimarilerde genelde Domain yapısında olması yönetim kolaylığı açısından tervcih edilemektedir. Ancak Workgroup olarakda sorunsuz çalışmaktadır.

Kurulum için Windows Server işletim sistemimizde PowerShell'i administrator olarak çalıştırarak başlıyoruz.

Install-WindowsFeature kurulum komutu ile iligli servisimiz WSUS için isim tanımlası ve yönetim araçlarını yüklemek için gerekli tanımlamaları aşağıdaki şekilde komutuma yazarak işlemlerime başlıyorum.

Install-WindowsFeature UpdateServices -IncludeManagementTools

Komut çıktısı:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
 
PS C:\Users\Administrator> Install-WindowsFeature UpdateServices -IncludeManagementTools
 
Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {ASP.NET 4.7, HTTP Activation, Remote Serv...
WARNING: Additional configuration may be required. Review the article Managing WSUS Using PowerShell at TechNet
Library (http://go.microsoft.com/fwlink/?LinkId=235499) for more information on the recommended steps to perform
WSUS installation using PowerShell.

Kurulum işlemimiz tamamlanmıştır. Yapılandırma işlemleri için aşağıdaki PowerShell scripti size yardımcı olacaktır.

### WUSUS post-deplpyment yapilandirma ayarlari
. "C:\Program Files\Update Services\Tools\WsusUtil.exe" postinstall CONTENT_DIR=C:\WSUS
 
### WSUS nesnesinin tanımlanması
$wsus = Get-WSUSServer
 
### WSUS yapilandirma tanimlamasi
$wsusConfig = $wsus.GetConfiguration()
### Microsoft güncellemelerinin yapilandirilamsi
Set-WsusServerSynchronization –SyncFromMU
 
### Güncelleme paketi dil tanımlaması sadece ingilizce yapilandirilmisiti bu bölümde istediğiniz dilleri virgul ekleyerek kısa kodunu yazabilirsiniz.
$wsusConfig.AllUpdateLanguagesEnabled = $false          
$wsusConfig.SetEnabledUpdateLanguages("en")          
$wsusConfig.Save()
 
### WSUS ve Microsoft güncelleme SYNC tanimlamasi
$wsus.GetSubscription().StartSynchronizationForCategoryOnly()
start-sleep 15
 
### SYNC tanimlamasi
while ($wsus.GetSubscription().GetSynchronizationStatus() -ne "NotProcessing") {
$time = get-date -UFormat "%H:%M:%S"
$total = $wsus.GetSubscription().getsynchronizationprogress().totalitems
$processed = $wsus.GetSubscription().getsynchronizationprogress().processeditems
$process = $processed/$total
$progress = "{0:P0}" -f $process
Write-Host ""
Write-Host "The first synchronization isn't completed yet $time"
Write-Host "Kindly have patience, the progress is $progress"
Start-Sleep 10
}
Write-Host "The synchronization has completed at $time" -ForegroundColor Green
Write-Host "The WSUS Configuration will now continue"  -ForegroundColor Green
 
### Guncelleme urunlerinin tanimlanmasi, bu bolumu genisletebilrisiniz. Ben örnek için sadece Windows Server 2019 ekledim scritpti genisleterek diger urunleride ekleyebilirsiniz.
write-host 'Setting WSUS Products'
Get-WsusProduct | where-Object {
    $_.Product.Title -in (
    'Windows Server 2019')
} | Set-WsusProduct
 
### Guncelleme sinfilarinin tanimlanmasi yine bu bolumde de siniflari arttirabilir yada azaltabilirsiniz.
write-host 'Setting WSUS Classifications'
Get-WsusClassification | Where-Object {
    $_.Classification.Title -in (
    'Critical Updates',
    'Definition Updates',
    'Feature Packs',
    'Security Updates',
    'Service Packs',
    'Update Rollups',
    'Updates')
} | Set-WsusClassification
 
### SYNC yapilandirmasi
write-host 'Enabling WSUS Automatic Synchronisation'
$subscription = $wsus.GetSubscription()
$subscription.SynchronizeAutomatically=$true
 
### otomatik sync yapilandirmasi
$subscription.SynchronizeAutomaticallyTimeOfDay= (New-TimeSpan -Hours 0)
$subscription.NumberOfSynchronizationsPerDay=1
$subscription.Save()
 
### Guncellenecek hedef grubun belirlenmesi
$wsus.CreateComputerTargetGroup("Updates")
 
### Guncelleme paketlerinin onaylanmasi
write-host 'Configuring default automatic approval rule'
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$rule = $wsus.GetInstallApprovalRules() | Where {
    $_.Name -eq "Default Automatic Approval Rule"}
$class = $wsus.GetUpdateClassifications() | ? {$_.Title -In (
    'Critical Updates',
    'Security Updates')}
$class_coll = New-Object Microsoft.UpdateServices.Administration.UpdateClassificationCollection
$class_coll.AddRange($class)
$rule.SetUpdateClassifications($class_coll)
$rule.Enabled = $True
$rule.Save()
 
### Computer groupların güncelleme islemi
 
 
$wsusConfig.OobeInitialized = $true
$wsusConfig.Save()
 
### SYNC baslamasi
$wsus.GetSubscription().StartSynchronization()

Uygulama ekran görüntüleri:




Windows Server Update Services açarsanız Overview ekranından yaptığımız işlemleri çapraz kontrolünü yapabilirsiniz.





Kaynak: docs.microsoft.com
Kaynak: spiceworks.com