Bildiğiniz gibi, sistemleri güncel tutmak, işletmeleri gizli bilgileri tehlikeye atabilecek ve hatta hassas veri kayıplarına neden olabilecek kötü amaçlı saldırılardan ve güvenlik ihlallerinden korumak için çok önemlidir.

Windows Update düzeltme eklerini yüklemek her zaman sıkıcı, karmaşık ve uzun bir süreç olmuştur. Microsoft, Windows Server Update Services (WSUS) veya System Center Configuration Manager (SCCM) gibi araçlarla bu aşamaları kolaylaştırsa da, sistem yöneticileri belirli senaryolarda güncelleştirmenin yüklenmesini otomatikleştirmek için komut satırı araçlarına ihtiyaç duyuyor. PowerShell Windows Update modülü veya PSWindowsUpdate komut satırı ile güncellemeleri sorunsuz yüklemenizi sağlayabilir.

PSWindowsUpdate Nasıl Yüklenir?

PSWindowsUpdate, varsayılan olarak Windows’a entegre edilmemiş üçüncü taraf bir modüldür. Bu PowerShell modülü en çok kullanılan depo olan PowerShell galerisinden indirilebilir. Bu modül, Windows güncelleştirmelerinin dağıtımını komut satırından yönetmek için farklı cmdlet’ler içerir.

Manuel Yükleme

PowerShell Galerisinden En Son PSWindowsUpdate Sürümünü İndirin.

**Modülün önceki sürümleri Microsoft Technet Galerisi’nde de mevcuttur, ancak Microsoft bu depoyu kullanımdan kaldırmıştır ve şimdi salt okunur modda.

%WINDIR%\System32\WindowsPowerShell\v1.0\Modules konumunda “PSWindowsUpdate” adlı yeni bir klasör oluşturun ve nupkg dosyasının içeriğini ayıklayın.

**NuGet paketi, bazı ek dosyalar içeren bir ZIP arşividir.

Güncellenmiş bir PowerShell penceresi açın ve güvenilir bir yayımcı tarafından imzalanan komut dosyalarının yürütülmesine izin vermek için Set-ExecutionPolicy RemoteSigned komutunu çalıştırın.
Import-Module -Name PSWindowsUpdate yazarak PSWindowsUpdate’i yükleyin.(Manuel yükleme yapar)

PowerShell kurulumu zaten çevrimiçi indirmelere izin verecek şekilde yapılandırılmışsa, PSWindowsUpdate modülü doğrudan Install-Module -Name PSWindowsUpdate komutunu çalıştırıp çevrimiçi depodan (PSGallery) da yükleyebilirsiniz.

PSWindowsUpdate’teki Komutlar Nelerdir?

PSWindowsUpdate'teki Komutlar Nelerdir?

PSWindowsUpdate komutları ve cmdlet’ler Get-Command–module PSWindowsUpdate yazılarak görüntülenebilir.

Başlıca komutların kısa bir açıklaması:

Get-WindowsUpdate: Bu, modülün ana cmdlet’idir. Önceden tanımlanmış gereksinimleri karşılayan güncelleştirmelerin listesini listeler, indirir, yükler veya gizler ve güncelleştirmeleri yüklerken yeniden başlatmaların kurallarını ayarlar.

Remove-WindowsUpdate: Yüklü bir güncelleştirmeyi kaldırır.

Add-WUServiceManage: Yeni bir Windows Update API Service Manager ekler.

Get-WUHistory: Yüklü güncelleştirmelerin listesini gösterir.

Get-WUSettings: Windows Update istemci ayarlarını alır.

Get-WUInstallerStatus: Meşgul olsun ya da olmasın, Windows Update Yükleyici Durumu’nu alır.

Enable-WURemoting: PSWindowsUpdate uzaktan iletişimi için güvenlik duvarı kurallarını etkinleştirir.

Invoke-WUJob: PSWindowsUpdate eylemlerini uzaktan çağırır.

Clear-WUJob: Görev Zamanlayıcı’daki WUJob’u temizler.

Get-WUInstall, Install-WindowsUpdate (Get-WindowsUpdate –Install için diğer ad): Windows güncelleştirmelerini yükler.

Uninstall-WindowsUpdate: Remove-WindowsUpdate komutunu kullanarak güncelleştirmeleri kaldırır.

Get-WULastResults: Güncelleştirmelerin son arama ve yükleme tarihlerini alır.

Get-WURebootStatus: Bir güncelleştirmeyi uygulamak için yeniden başlatma gerekip gerekmediğini denetler.

Remove-WUServiceManager: Windows Update Service Manager’ı devre dışı bırakır.

Set-PSWUSettings: PSWindowsUpdate modülünün ayarlarını bir XML dosyasına kaydeder.

Set-WUSettings: Windows Update istemcisinin ayarlarını yapılandırır.

Reset-WUComponents: Windows Update aracısını varsayılan durumuna sıfırlar.

Tüm PowerShell cmdlet’lerinde olduğu gibi, Get-Help "command" -examples yazılarak her komut için farklı kullanım örnekleri gösterilebilir.

PSWindowsUpdate Varsayılan Parametreler

Önceki bölümde, PSWindowsUpdate modülünün güncelleme işlemlerini kolaylaştırmak için önceden tanımlanmış farklı komutlar içerdiğinden bahsettik. Özellikle, Get-WindowsUpdate cmdlet’i için ana parametreleri aşağıda açıklamaya çalıştım.

Güncellemeleri Seçme:

AcceptAll: Mevcut tüm güncellemeleri indirir veya yükler.
KBArticleID: KBArticleID (veya KBArticleID kümeleri) içeren güncelleştirmeleri bulur.
UpdateID: Belirli bir UUID (veya UUID kümeleri) içeren güncelleştirmeleri belirtir.
Category: ‘Güncelleştirmeler’, ‘Güvenlik Güncelleştirmeleri’ veya ‘Kritik Güncelleştirmeler’ gibi belirli bir kategori adı içeren güncelleştirmeleri belirtir.
Title: Başlığın bir kısmıyla eşleşen güncellemeleri bulur.
Severity: “Important”(Önemli), “Critical”(Kritik) veya “Moderate”(Orta) gibi önem derecesinin bir kısmıyla eşleşen güncellemeleri bulur.
UpdateType: “Driver” ve “Software” gibi belirli bir türdeki güncellemeleri bulur. Varsayılan değer tüm güncelleştirmeleri içerir.

Eylemler ve Hedefler:

Download: Onaylanan güncellemeleri indirir ancak yüklemez.
Install: Onaylanan güncellemeleri yükler.
Hide: Yüklenmelerini önlemek için belirtilen güncellemeleri gizler.
ScheduleJob: İşin başlayacağı tarihi belirtir.
SendReport: Yükleme işleminden bir rapor gönderir.
ComputerName: Hedef sunucuyu veya bilgisayarı belirtir.

İstemciyi Yeniden Başlatma Davranışı:

AutoReboot: Gerekirse sistemi otomatik olarak yeniden başlatır.
IgnoreReboot: Otomatik yeniden başlatmaları engeller.
ScheduleReboot: Sistemin yeniden başlatılacağı tarihi belirtir.

Yanlışlıkla Yüklemeler Nasıl Önlenir?

Windows güncellemeleri ve yamaları, sistemin özelliklerini ve kararlılığını artırır. Ancak, bazı güncellemeler sisteminizi bozabilir ve kararsızlığa, özellikle de grafik kartı sürücüleri gibi eski yazılımlar için otomatik güncellemelerle sorunlara neden olabilir. Bu tür uygulamalar için otomatik güncelleştirmeleri ve yanlışlıkla yüklemeleri önlemek için Windows güncelleştirmelerini duraklatabilirsiniz.

Alternatif olarak, güncellenmesini istemediğiniz özellikler için belirli güncelleştirmeleri gizleyebilirsiniz. Güncelleştirmeleri gizlediğinizde, Windows artık bu tür güncelleştirmeleri karşıdan yükleyip kuramaz. Güncelleştirmeyi gizleyebilmeniz için önce, bilgi bankası (KB) numarası ve başlığı da dahil olmak üzere ayrıntılarını öğrenmeniz gerekir. Sisteminizdeki kullanılabilir tüm güncelleştirmeleri listelemek için aşağıdaki cmdlet’i yazın:

Get-WUList

KB numarasını kullanarak belirli bir güncelleştirmeyi gizlemek için, farenizi kullanarak bu KB numarasını kopyalayın. Ardından, aşağıdaki komutu yazın:

Hide-WUUpdate -KBArticleID KB_Number

“KB_Number” yazan yeri fare imleci ile seçin ve burayı istediğiniz KB Numarasıyla değiştirmek için yapıştırı tıklayın.

İşlemi onaylamanız istendiğinde, A yazın ve Enter tuşuna basın. Komut başarılı olursa, “Get-WUList” mevcut tüm güncellemeleri listeler ve gizli güncellemeler durumlarının altında “H” sembolü ile görünür.

Güncelleştirmenin KB numarası bazı güncelleştirmeler için kullanılamayabilir. Bu durumda, güncelleştirmeyi gizlemek için başlığı kullanabilirsiniz. Bunu yapmak için, aşağıdaki cmdlet aracılığıyla kullanılabilir tüm güncelleştirmeleri listeleyin:

Get-WUList

Ardından, güncelleme başlığını kopyalamak için farenizi kullanın. Diğer güncelleme başlıklarından farklı olduğundan emin olun. Şimdi, güncellemeyi gizlemek için aşağıdaki komutu yazın:

Hide-WUUpdate -Başlık “Update_Title”

Gizlemek istediğiniz güncelleme başlığını “Güncelleme Başlığı” bölümüne yapıştırmayı unutmayın.

İşlemi onaylamanız istendiğinde, A yazın ve Enter tuşuna basın. Komut başarılı olursa, “Get-WUList” kullanılabilir tüm güncellemeleri listeler. Ancak, gizli güncelleştirmelerin durumu, altlarında “H” simgesiyle görünür.

Hatalar Nasıl Belirlenir?

Hatalı dağıtımları düzeltebilmek için Windows Updates yükleme işlemleri hakkında mümkün olduğunca fazla bilgiye sahip olmanız çok önemlidir. Get-WindowsUpdate cmdlet’i ve modülde kullanılabilen diğer cmdlet’ler, güncelleştirmeleri yönetirken durum, KB Kimliği, Boyut veya Başlık dahil olmak üzere çok ayrıntılı bir fihrist düzeyi sağlar.

PowerShell ile Windows güncelleştirmelerini Denetleme ve İndirme

Windows Update Services (WSUS) ile ayarlanmış bir sunucudan Windows güncelleştirmelerini denetlemek ve indirmek için PowerShell’i kullanabilirsiniz.

Bir bilgisayarın güncelleştirmelerini nereden aldığını denetlemek için, Get-WUServiceManager komutunu çalıştırın. Sonuçlarda Windows Server Update Service = True görürseniz, bu, WSUS sunucunuzdan güncelleştirmeleri alacak şekilde ayarlanolduğunu gösterir.

Uzak bir sunucu veya bilgisayar için güncelleştirmelerin listesini almak üzere Get-WUList –BilgisayarAdı SunucuAdı komutunu çalıştırın. Örnek olarak, Get-WUList –BilgisayarAdı Sunucu1.

Microsoft Office ve diğer Microsoft ürünleri için güncelleştirmelere ihtiyacınız varsa, Get-WUList –MicrosoftUpdate komutunu çalıştırarak Microsoft Update sunucularından güncelleştirmeleri de tarayabilirsiniz. Bir uyarı alırsanız, Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7 komutunu çalıştırın ve denetleme komutunu yeniden çalıştırın.

Her güncelleme paketi için onay istemi almadan tüm güncelleştirmeleri yüklemek için Install-WindowsUpdate –AcceptAll komutunu çalıştırabilirsiniz. Sonunda bilginiz dışında yeniden başlatmaları engelleyebilmek için, komutun sonuna –IgnoreReboot anahtarı ekleyin, örneğin, Install-WindowsUpdate –AcceptAll –IgnoreReboot.

PowerShell ile Uzak Bilgisayarlara Windows Güncelleştirmelerini Yükleme

PSWindowsUpdate sunucularda da yüklü olduğu sürece, güncelleştirmeleri aynı anda birden çok uzak sunucuya yüklemek için PowerShell’i kullanabilirsiniz. Örneğin, Windows Güncelleştirmeleri’ni iki uzak sunucuya yüklemek için aşağıdakileri çalıştırmanız gerekir:

Invoke-WUInstall -ComputerName server1, server2-Script {ipmo PSWindowsUpdate; Get-WUInstall -AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -Verbose -SkipModuleTest –RunNow

PowerShell ile komut ortamında birçok şey yapabilirsiniz. Hatta yapabileceklerinizin sınırı yoktur diyebiliriz. bundan sonra PowerShell üzerinde biraz daha duracağız. Çünkü çok fazla konu var.