Windows Updater
Automatisiertes Windows Update Management per PowerShell. Installiert Windows Updates, optional Winget-Pakete, und benachrichtigt per ntfy, E-Mail und/oder Microsoft Teams.
🏰 Website · 📰 Community · 🐘 Mastodon · 💬 Support
Repository: https://git.techniverse.net/scriptos/windows-updater
Features
- Windows Updates automatisch installieren via PSWindowsUpdate-Modul
- Defender-Only Modus nur Defender-Definitionsupdates installieren (per Parameter oder Config) — ideal für häufige Ausführung alle paar Stunden
- Kommandozeilen-Parameter
-DefenderOnly,-DryRun,-ConfigFilefür flexible Steuerung ohne Config-Änderung - Winget-Updates optional (
winget upgrade --all), automatische Erkennung der Verfügbarkeit - Benachrichtigungen via ntfy, E-Mail und/oder Microsoft Teams (inkl. HTML-Report und Adaptive Cards)
- Benachrichtigungs-Ereignisse granular steuerbar (je Ereignis einzeln ein-/ausschaltbar)
- Dry-Run Modus zum Prüfen verfügbarer Updates ohne Installation
- Update-Ausschlüsse für bestimmte KBs oder Treiber-Updates
- Retry-Logik für fehlgeschlagene Updates (konfigurierbare Anzahl)
- Service Watchdog startet konfigurierte Dienste nach Updates automatisch neu (wenn kein Reboot nötig)
- Log-Rotation mit einer Datei pro Tag und konfigurierbarer Aufbewahrung
- Update-History als XLSX (mit ImportExcel-Modul) oder CSV-Fallback
- WSUS-Erkennung automatisch, inkl. Anzeige des WSUS-Servers
- Reboot-Management mit drei Modi: sofort, verzögert, oder zu bestimmter Uhrzeit
- Pre-/Post-Update Hooks für eigene Scripts vor und nach dem Update-Vorgang
- OS-Erkennung für Windows 10/11, Server 2016/2019/2022/2025
Unterstützte Betriebssysteme
| OS | Windows Updates | Winget |
|---|---|---|
| Windows 10 | Ja | Ja (wenn installiert) |
| Windows 11 | Ja | Ja |
| Windows Server 2016 | Ja | Nein* |
| Windows Server 2019 | Ja | Nein* |
| Windows Server 2022 | Ja | Nein* |
| Windows Server 2025 | Ja | Nein* |
*Winget ist auf Servern standardmäßig nicht verfügbar. Wird es manuell installiert, erkennt das Script dies automatisch.
Schnellstart
1. Repository klonen / Dateien kopieren
git clone https://git.techniverse.net/scriptos/windows-updater.git C:\scripts\windows-updater
2. Konfiguration erstellen
Copy-Item C:\scripts\windows-updater\config.example.ini C:\scripts\windows-updater\config.ini
Danach config.ini mit einem Texteditor öffnen und die gewünschten Werte anpassen. Siehe Konfiguration für alle Optionen.
3. Script ausführen (als Administrator)
# Alle Updates installieren (Standard)
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1"
# Nur Defender-Definitionsupdates
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1" -DefenderOnly
# Dry-Run (nur prüfen, nicht installieren)
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1" -DryRun
# Alternative Config-Datei verwenden
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1" -ConfigFile "D:\configs\server-config.ini"
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
-DefenderOnly |
Switch | Nur Windows Defender Definitionsupdates installieren. Überspringt Winget, Reboot und Service Watchdog |
-DryRun |
Switch | Nur prüfen welche Updates verfügbar sind, ohne zu installieren. Überschreibt die Config-Einstellung |
-ConfigFile |
String | Pfad zu einer alternativen Konfigurationsdatei (Standard: config.ini im Script-Verzeichnis) |
Parameter überschreiben die entsprechenden Config-Werte. So kann dasselbe Script mit verschiedenen Parametern für verschiedene Aufgaben verwendet werden.
Typisches Setup: Defender häufig, volle Updates monatlich
# Alle 4 Stunden: Defender-Updates (per Aufgabenplanung)
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1" -DefenderOnly
# Einmal im Monat: Alle Updates (per Aufgabenplanung)
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1"
4. Optional: Aufgabenplanung einrichten
Für automatische Ausführung per Windows Aufgabenplanung siehe Aufgabenplanung einrichten.
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Erfolg (Updates installiert, keine Updates verfügbar, oder Dry-Run) |
| 1 | Fehler (Modul-Fehler, Config fehlt, Updates fehlgeschlagen) |
| 2 | Neustart erforderlich, aber Auto-Reboot ist deaktiviert |
PSWindowsUpdate-Modul
Das Script versucht zuerst, das PSWindowsUpdate-Modul online von der PowerShell Gallery zu installieren. Falls das nicht möglich ist (kein Internet, Firewall), wird automatisch die im Repository enthaltene Offline-Kopie verwendet.
Dokumentation
- Konfiguration - Alle INI-Optionen im Detail
- Benachrichtigungen - ntfy und E-Mail einrichten
- Aufgabenplanung - Windows Task Scheduler Setup
- Problembehandlung - Häufige Fehler und Lösungen
© Patrick Asmus · Techniverse Network · Lizenz
