Files
windows-updater/docs/configuration.md
2026-07-07 10:14:27 +02:00

9.8 KiB

Konfiguration

Alle Einstellungen werden in der Datei config.ini vorgenommen, die sich im selben Verzeichnis wie das Script befindet. Als Vorlage dient config.example.ini.

Übersicht aller Optionen

[General]

Option Typ Standard Beschreibung
LogPath String C:\logs\windows-updater Verzeichnis für Log-Dateien (eine Datei pro Tag)
LogRetentionDays Integer 365 Anzahl Tage, nach denen alte Log-Dateien gelöscht werden
DryRun Boolean false Nur prüfen welche Updates verfügbar sind, ohne zu installieren. Kann per -DryRun Parameter überschrieben werden
UpdateType String All Art der Updates: All (alle Updates), DefenderOnly (nur Defender-Definitionsupdates). Kann per -DefenderOnly Parameter überschrieben werden

[WindowsUpdate]

Option Typ Standard Beschreibung
UseMicrosoftUpdate Boolean true Microsoft Update verwenden (inkl. Office, .NET, Treiber). Bei false nur Windows Update
ExcludeKBs String (leer) Kommagetrennte Liste von KB-Artikeln die übersprungen werden sollen (z.B. KB1234567,KB7654321)
ExcludeDrivers Boolean false Treiber-Updates ausschließen
RetryCount Integer 3 Anzahl Wiederholungsversuche für fehlgeschlagene Updates

[Winget]

Option Typ Standard Beschreibung
Enabled Boolean false Winget-Updates aktivieren (winget upgrade --all). Wird automatisch übersprungen, wenn winget nicht verfügbar ist

[Reboot]

Option Typ Standard Beschreibung
Enabled Boolean false Automatischen Neustart nach Updates aktivieren
Mode String immediate Neustart-Modus: immediate (sofort), delayed (verzögert), scheduled (geplante Uhrzeit)
DelayMinutes Integer 5 Verzögerung in Minuten (nur bei Mode = delayed)
ScheduledTime String 03:00 Uhrzeit im Format HH:mm (nur bei Mode = scheduled). Liegt die Uhrzeit in der Vergangenheit, wird der nächste Tag verwendet

[Notification]

ntfy

Option Typ Standard Beschreibung
NtfyEnabled Boolean false ntfy-Benachrichtigungen aktivieren
NtfyUrl String https://ntfy.sh URL des ntfy-Servers
NtfyTopic String windows-updates ntfy-Topic-Name
NtfyToken String (leer) Zugangs-Token (leer lassen wenn nicht benötigt)
NtfyPriority String default Priorität: min, low, default, high, urgent

E-Mail

Option Typ Standard Beschreibung
EmailEnabled Boolean false E-Mail-Benachrichtigungen aktivieren
SmtpServer String (leer) SMTP-Server Adresse
SmtpPort Integer 587 SMTP-Port
SmtpUseSsl Boolean true SSL/TLS für SMTP verwenden
SmtpUsername String (leer) SMTP-Benutzername (leer für anonyme Authentifizierung)
SmtpPassword String (leer) SMTP-Passwort
EmailFrom String (leer) Absender-Adresse
EmailTo String (leer) Empfänger-Adresse(n), kommagetrennt
EmailHtmlReport Boolean true HTML-formatierten Report mit Update-Tabelle senden

Microsoft Teams

Option Typ Standard Beschreibung
TeamsEnabled Boolean false Teams-Benachrichtigungen aktivieren
TeamsWebhookUrl String (leer) Webhook-URL für den Teams-Kanal

[NotificationEvents]

Steuert, welche Ereignisse eine Benachrichtigung auslösen. Alle Ereignisse sind standardmäßig aktiviert. Details zu jedem Ereignis: siehe Benachrichtigungen.

Option Typ Standard Beschreibung
NotifyOnModuleError Boolean true PSWindowsUpdate-Modul konnte nicht geladen werden
NotifyOnHookFailure Boolean true Pre-Update Hook fehlgeschlagen, Updates abgebrochen
NotifyOnNoUpdates Boolean true Keine Updates verfügbar
NotifyOnDryRun Boolean true Dry-Run Report mit verfügbaren Updates
NotifyOnUpdateComplete Boolean true Zusammenfassung nach Update-Installation
NotifyOnReboot Boolean true Neustart wird ausgeführt (immediate/delayed/scheduled)
NotifyOnRebootRequired Boolean true Neustart nötig, aber Auto-Reboot ist deaktiviert
NotifyOnScanError Boolean true Fehler beim Scannen nach Updates
NotifyOnServiceRestartFailure Boolean true Service-Watchdog konnte einen oder mehrere Dienste nicht starten

[ServiceWatchdog]

Option Typ Standard Beschreibung
Enabled Boolean false Service-Watchdog aktivieren: Dienste nach Updates neu starten, wenn kein Reboot erforderlich ist
Services String (leer) Kommagetrennte Liste von Windows-Dienstnamen (Service Name, nicht Display Name), z.B. Spooler,W3SVC,MSSQLSERVER
WaitSeconds Integer 30 Wartezeit in Sekunden, bis ein Dienst den Status "Running" erreicht hat
RetryCount Integer 3 Anzahl Neustartversuche pro Dienst

[Hooks]

Option Typ Standard Beschreibung
PreUpdateScript String (leer) Pfad zu einem PowerShell-Script, das VOR den Updates ausgeführt wird
AbortOnPreHookFailure Boolean false Update-Prozess abbrechen wenn das Pre-Hook-Script fehlschlägt
PostUpdateScript String (leer) Pfad zu einem PowerShell-Script, das NACH den Updates ausgeführt wird

[History]

Option Typ Standard Beschreibung
Enabled Boolean false Update-History-Tracking aktivieren
HistoryPath String C:\logs\windows-updater\update-history Basispfad für die History-Datei (Dateiendung wird automatisch gewählt: .xlsx wenn ImportExcel verfügbar, sonst .csv)

Kommandozeilen-Parameter

Das Script unterstützt Parameter, die Config-Werte überschreiben. So kann dasselbe Script mit einer Config-Datei für verschiedene Einsatzzwecke verwendet werden.

Parameter Überschreibt Beschreibung
-DefenderOnly UpdateType Nur Windows Defender Definitionsupdates installieren
-DryRun DryRun Nur prüfen, nicht installieren
-ConfigFile <Pfad> (Config-Pfad) Alternative Konfigurationsdatei verwenden

DefenderOnly-Modus im Detail

Im DefenderOnly-Modus werden ausschließlich Updates der Kategorie "Definition Updates" (Windows Defender Signaturen) installiert. Folgende Funktionen werden dabei übersprungen:

  • Winget-Updates — nicht relevant für Defender-Signaturen
  • Reboot-Handling — Definitionsupdates erfordern keinen Neustart
  • Service Watchdog — kein Neustart von Diensten nötig
  • Treiber-Ausschluss (ExcludeDrivers) — nicht relevant, da nur Definitionsupdates geladen werden

Pre-/Post-Update Hooks, Logging, History und Benachrichtigungen funktionieren normal.

Boolean-Werte

Folgende Werte werden als true erkannt (Groß-/Kleinschreibung egal):

  • true, 1, yes

Alles andere wird als false interpretiert.

Beispiel-Konfigurationen

Minimal (nur Windows Updates)

[General]
LogPath = C:\logs\windows-updater
DryRun = false

[WindowsUpdate]
UseMicrosoftUpdate = true

Nur Defender-Updates (per Config)

[General]
LogPath = C:\logs\windows-updater
DryRun = false
UpdateType = DefenderOnly

[WindowsUpdate]
UseMicrosoftUpdate = true

Dual-Setup: Defender häufig + volle Updates monatlich

Eine Config-Datei genügt. Die Unterscheidung erfolgt per Parameter:

[General]
LogPath = C:\logs\windows-updater
DryRun = false
# UpdateType = All (Standard, volle Updates)

[WindowsUpdate]
UseMicrosoftUpdate = true
ExcludeDrivers = true
RetryCount = 3

Aufgabenplanung:

# Alle 4 Stunden: nur Defender-Updates
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1" -DefenderOnly

# Einmal im Monat (z.B. erster Sonntag, 03:00): alle Updates
powershell.exe -ExecutionPolicy Bypass -File "C:\scripts\windows-updater\windows-updater.ps1"

Mit E-Mail Benachrichtigung

[General]
LogPath = C:\logs\windows-updater
DryRun = false

[WindowsUpdate]
UseMicrosoftUpdate = true
ExcludeDrivers = true

[Notification]
EmailEnabled = true
SmtpServer = smtp.example.com
SmtpPort = 587
SmtpUseSsl = true
SmtpUsername = user@example.com
SmtpPassword = geheim123
EmailFrom = updater@example.com
EmailTo = admin@example.com
EmailHtmlReport = true

[Reboot]
Enabled = true
Mode = delayed
DelayMinutes = 10

Vollständig mit ntfy und History

[General]
LogPath = C:\logs\windows-updater
LogRetentionDays = 365
DryRun = false

[WindowsUpdate]
UseMicrosoftUpdate = true
ExcludeKBs = KB1234567,KB7654321
ExcludeDrivers = true
RetryCount = 3

[Winget]
Enabled = true

[Reboot]
Enabled = true
Mode = scheduled
ScheduledTime = 03:00

[Notification]
NtfyEnabled = true
NtfyUrl = https://ntfy.mein-server.de
NtfyTopic = windows-updates
NtfyToken = tk_mein_token
NtfyPriority = default

EmailEnabled = true
SmtpServer = smtp.example.com
SmtpPort = 587
SmtpUseSsl = true
SmtpUsername = user@example.com
SmtpPassword = geheim123
EmailFrom = updater@example.com
EmailTo = admin@example.com,ops@example.com
EmailHtmlReport = true

TeamsEnabled = true
TeamsWebhookUrl = https://xxxxx.webhook.office.com/webhookb2/...

[NotificationEvents]
NotifyOnModuleError = true
NotifyOnHookFailure = true
NotifyOnNoUpdates = false
NotifyOnDryRun = true
NotifyOnUpdateComplete = true
NotifyOnReboot = true
NotifyOnRebootRequired = true
NotifyOnServiceRestartFailure = true

[ServiceWatchdog]
Enabled = true
Services = Spooler,W3SVC
WaitSeconds = 30
RetryCount = 3

[Hooks]
PreUpdateScript = C:\scripts\pre-update.ps1
AbortOnPreHookFailure = true
PostUpdateScript = C:\scripts\post-update.ps1

[History]
Enabled = true
HistoryPath = C:\logs\windows-updater\update-history