Als je Windows-updates via de opdrachtregel wilt beheren, is de PowerShell-module PSWindowsUpdate erg handig. Hiermee kun je updates scannen, downloaden, installeren en zelfs verbergen of verwijderen zonder de grafische gebruikersinterface te hoeven gebruiken. Dit is vooral handig als je een scriptgestuurde aanpak wilt, met Windows-servers werkt of op afstand werkt.
- De PSWindowsUpdate-module installeren
- Scan en download Windows-updates met PowerShell.
- Windows-updates installeren met PowerShell
- Controleer de Windows-updategeschiedenis met PowerShell.
- Windows-updates verwijderen met PowerShell
- Hoe Windows-updates te verbergen of weer te geven met PowerShell
- Windows-updates installeren op externe computers met PowerShell
De PSWindowsUpdate-module installeren
Het begint allemaal met het installeren van de module vanuit de PowerShell Gallery. Voer deze opdracht uit in een PowerShell-venster met beheerdersrechten:
Install-Module -Name PSWindowsUpdate -Force
Mogelijk wordt u gevraagd of u de repository wilt vertrouwen. Typ hiervoor ‘Y’ en druk op Enter. Controleer daarna of de repository is geïnstalleerd door het volgende commando uit te voeren:
Get-Package -Name PSWindowsUpdate
Als je een pc of server met strenge beveiligingsmaatregelen gebruikt, moet je mogelijk eerst het uitvoeringsbeleid aanpassen:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
In sommige gevallen, met name bij oudere Windows-versies of als u offline werkt, moet u de module mogelijk handmatig downloaden of de bestanden overzetten, maar meestal is dat niet nodig. Na de installatie kunt u de module in uw sessie importeren:
Import-Module PSWindowsUpdate
Controleer of je de juiste commando’s beschikbaar hebt:
Get-Command -Module PSWindowsUpdate
Scan en download Windows-updates met PowerShell.
Om te zien welke updates nodig zijn, voert u het volgende commando uit:
Get-WindowsUpdate
of het alias:
Get-WUList
Dit geeft een lijst met openstaande updates. De eerste keer kan er een foutmelding verschijnen zoals ‘Waarde valt niet binnen het verwachte bereik’. Niemand weet precies waarom dit gebeurt — waarschijnlijk is er iets mis met het register of een component — maar het resetten van de Windows Update-componenten helpt vaak. U kunt dit doen door het volgende commando uit te voeren:
Reset-WUComponents -Verbose
Met deze opdracht wordt de agent gereset, worden DLL’s opnieuw geregistreerd en wordt de WUServer-service teruggezet naar de standaardinstellingen. In feite krijgt het updatesysteem zo een frisse start. Het is het proberen waard als uw updatecontroles problemen vertonen.
Om te controleren waar uw Windows Update de updates vandaan haalt (Microsoft-servers of een WSUS-server), kunt u het volgende proberen:
Get-WUServiceManager
Als u vermeldingen ziet die verwijzen naar een lokale WSUS-server (zoals het voorbeeld met http://MN-WSUS:8530 ), is uw configuratie ingesteld voor interne updates en niet rechtstreeks van Microsoft.
En als u updates van Microsoft Update wilt ontvangen (waaronder Office, stuurprogramma’s, enz.), moet u die service expliciet toevoegen:
Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7
Soms wilt u bepaalde updatecategorieën negeren, zoals stuurprogramma’s of specifieke kennisbankartikelen. Gebruik hiervoor:
Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873
En als je alle beschikbare updates wilt downloaden zonder ze nog te installeren, voer dan het volgende commando uit:
Get-WindowsUpdate -Download -AcceptAll
Dit downloadt wel, maar installeert niet — updates komen terecht in C:\Windows\SoftwareDistribution\Download. Handig als je het installatieproces wilt bekijken of spreiden.
Windows-updates installeren met PowerShell
Zodra je de updates hebt gedownload, of als je alles in één keer op het systeem wilt installeren, kun je de installatie automatiseren met:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
Hiermee worden alle beschikbare updates gestart, de licentieovereenkomsten geaccepteerd en de computer indien nodig opnieuw opgestart. Wilt u een herstart plannen of automatisch herstarten voorkomen? Andere opties zijn IgnoreReboot of ScheduleReboot met specifieke tijden.
Je kunt ook een logboek bijhouden van wat er is gedaan, wat handig is voor het oplossen van problemen of voor controledoeleinden:
Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "C:\Logs\Update-$(Get-Date -Format yyyy-MM-dd).txt"
Als u tot slot alleen specifieke KB-updates wilt installeren, hoeft u alleen hun ID’s op te geven:
Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install
En als u bepaalde updates wilt overslaan, voeg dan -NotCategory, -NotTitle of -NotKBArticleID toe :
Install-WindowsUpdate -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot
Gebruik deze functie Get-WURebootStatusom te controleren of een herstart in behandeling is of gepland staat:
Get-WURebootStatus | Select RebootRequired, RebootScheduled
Controleer de Windows-updategeschiedenis met PowerShell.
Wil je zien wat er al geïnstalleerd is? Gebruik dan:
Get-WUHistory
En om te achterhalen wanneer een bepaalde kennisbank is geïnstalleerd:
Get-WUHistory | Where-Object {$_. Title -match "KB4517389"} | Format-Table
Of controleer de datum en tijd van de laatste succesvolle scan of installatie:
Get-WULastResults | Select-Object LastSearchSuccessDate, LastInstallationSuccessDate
Windows-updates verwijderen met PowerShell
Als een patch problemen veroorzaakt, kunt u deze verwijderen via het KB-nummer:
Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart
Wees echter voorzichtig: het verwijderen van software kan soms problemen veroorzaken met afhankelijkheden, maar werkt wel goed om problematische updates te verwijderen.
Windows-updates verbergen of weergeven met PowerShell
Om een update te verbergen (zoals een driverupdate die u wilt overslaan), voert u het volgende commando uit:
$HideList = "KB4489873", "KB4489243" Get-WindowsUpdate -KBArticleID $HideList -Hide
En om verborgen updates te controleren:
Get-WindowsUpdate -IsHidden
Hier worden updates weergegeven die als verborgen zijn gemarkeerd met een H in de status. Als u ze zichtbaar wilt maken, voert u het volgende commando uit:
Get-WindowsUpdate -KBArticleID $HideList -Hidden -Hide:$false
Windows-updates installeren op externe computers met PowerShell
Om meerdere machines op afstand te beheren, moet WinRM ingeschakeld en geconfigureerd zijn (wat soms lastig kan zijn als dat niet het geval is).Zodra dat geregeld is, kunt u opdrachten uitvoeren zoals:
Invoke-Command -ComputerName "server1", "server2" -ScriptBlock { Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force Import-Module PSWindowsUpdate Enable-WURemoting } Invoke-Command -ComputerName "server1", "server2" -ScriptBlock { Install-WindowsUpdate -AcceptAll -AutoReboot }
Of plan updates in op een specifiek tijdstip door -TriggerDate toe te voegen. Dit is handig als je gebruikers niet wilt storen tijdens werktijd.
Voor een snelle controle van de updatestatus op externe systemen kunt u het volgende uitvoeren:
Get-WUHistory -ComputerName "server1" | Where-Object {$_. Title -match "KB404"}
Deze module versnelt het beheer van grote hoeveelheden systemen aanzienlijk, vooral wanneer je te maken hebt met een groot aantal Windows-servers of core-systemen zonder grafische gebruikersinterface.
Veel gebruikers melden dat deze commando’s soms niet perfect werken bij de eerste uitvoering, vooral bij nieuwe installaties of na het wijzigen van beleidsregels. Door ze opnieuw uit te voeren of de server opnieuw op te starten, wordt het probleem meestal opgelost. Het is belangrijk om altijd de huidige status te controleren voordat u iets probeert te installeren of te verwijderen.
Samenvatting
Het beheren van updates via PowerShell met PSWindowsUpdate verloopt niet altijd vlekkeloos, maar het is wel *veel* flexibeler dan handmatig te klikken. Als deze opdrachten niet meteen werken, lost het resetten van componenten en het opnieuw importeren van modules het probleem vaak op. Houd er wel rekening mee dat sommige opdrachten beheerdersrechten en een juiste configuratie voor beheer op afstand vereisen.
Samenvatting
- PSWindowsUpdate is geïnstalleerd met Install-Module.
- Scannen op updates: Get-WindowsUpdate / Get-WUList
- Updates downloaden: Get-WindowsUpdate -Download
- Updates installeren: Install-WindowsUpdate
- Geschiedenis controleren: Get-WUHistory
- Verwijder of verberg updates naar behoefte.
- Beheer updates op externe machines met Invoke-Command en Enable-WURemoting.
Tot slot
Eerlijk gezegd zijn deze commando’s niet perfect — soms geven ze zonder reden foutmeldingen. Maar ze zijn een redder in nood bij het automatiseren van patches of het oplossen van problemen met updates in bulk. Het is zeker de moeite waard om ze onder de knie te krijgen als je meerdere Windows-hosts beheert. Ik hoop dat dit iemand een paar uur bespaart of hoofdpijn voorkomt.