Hoe Windows-updates te installeren en te beheren met PowerShell (PSWindowsUpdate)

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.

Inhoud:

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.