Windows Defender Updates per WindowsUpdate API installieren

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...

Wir standen vor der Herausforderung, dass es Systeme bei unseren Kunden gibt, welche zwar Windows Updates herunterladen dürfen, diese aber erst nach Prüfung installiert werden. Bis Windows 10 wurden die Windows Defender Updates unabhängig von der Windows Update Einstellung installiert. Mit Windows 10 ist das jetzt anders, d.h. auch die Defender Updates werden nur heruntergeladen aber nicht installiert.

Lange haben wir nach einer passenden Lösung gesucht -> und gefunden. Wir setzen jetzt auf ein Windows Powershell Modul, ein kleines Script sowie die Windows Aufgabenplanung.

Das Modul nennt sich PSWindowsUpdate und kann via folgendem Befehl installiert werden:
Öffnen Sie eine Powershell mit Adminrechten, geben Sie dann folgenden Befehl ein:

Install-Module -Name PSWindowsUpdate

Es wird nun gefragt, ob Sie das Modul installieren wollen, weiterhin ist noch ein Zusatzmodul NuGet provider benötigt. Alle Details zu dem Zusatzmodul finden Sie hier. Bestätigen Sie beide Nachfragen jeweils mit y.

Nun muss die ExecutionPolicy noch angepasst werden:

Set-ExecutionPolicy RemoteSigned

Damit sind alle Vorbereitungen abgeschlossen. Speichern Sie folgendes Skript als Powershell Skript ab:

$basePath = "C:\Users\User1\Downloads\DefenderWsusUpdater"
$pidFile = "$basePath\defenderUpdateTool.pid"
$logFile = "$basePath\defenderUpdate.log"
 
$date = Get-Date
 
If (Test-Path $pidFile){
  # // File exists
  $id = Get-Content -Path $pidFile
  Stop-Process -id $id -Force
 
    while ($true)
    {
      Try {
            [IO.File]::OpenWrite($pidFile).close()
            echo "[$date] Process $id kill" >> $logFile
            Break
          }
 
        Catch {}
     }
  del $pidFile
}
 
echo "[$date] Process $pid successfully started" >> $logFile
 
echo $pid > $pidFile
 
Get-WUInstall -title "Windows Defender" -AcceptAll -verbose >> $logFile
 
C:\Windows\System32\wuauclt.exe /reportnow
 
del $pidFile
 
echo "[$date] Process $pid successfully finished" >> $logFile

Hier gilt es anzumerken, über die API bleibt das Installieren von Windows Defender Updates regelmäßig hängen und das Script beendet sich nicht. Hierfür habe ich bis heute keine Lösung gefunden, daher beendet das Script beim erneuten Start automatisch den Vorgängerlauf. Spannend, trotz des Hängenbleibens wird das Update aber fertig installiert.

Das Skript können Sie jetzt in der Powershell schon einmal manuell an der Konsole starten, es sollte ein Logfile angelegt werden und Sie sehen eine Ausgabe in der Konsole. Im nächsten Schritt werden wir dies noch automatisieren.

Öffnen Sie dazu den Aufgabenplaner und legen eine neue Aufgabe an. Ich empfehle den Task als Administrator ausführen zu lassen, Unabhängig von der Benutzeranmeldung und auf höchsten Berechtigungen.
Den Trigger konfigurieren Sie wie folgt:

Aufgabenplaner Trigger

Als Aktion fügen Sie einen Programmstart hinzu: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe mit den folgenden Argumenten: -command „C:\Users\User1\Downloads\DefenderWsusUpdater\installWindowsDefenderUpdates.ps1“.

Letzter wichtiger Schritt, auf dem Reiter Einstellungen müssen Sie ganz unten die Regel, falls die Aufgabe bereits ausgeführt wird anpassen auf: Neue Instanz parallel ausführen

Wir nutzen das Script in Verbindung mit einem lokalen WSUS, welcher alle 4 Stunden nach neuen Updates sucht. Das Script funktioniert aber auch Problemlos wenn kein eigener WSUS betrieben wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Sicherheitsfrage * Time limit is exhausted. Please reload CAPTCHA.