Techniverse Community

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, -ConfigFile fü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"

Screen1

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



© Patrick Asmus · Techniverse Network · Lizenz

Description
Automatisiertes Windows-Update-Management mit Benachrichtigungen, Winget-Support und Reboot-Steuerung
Readme MIT 871 KiB
Languages
PowerShell 100%