Skip to content

About

Gate-based, manually-triggered Windows Server patching toolkit (PowerShell/WinRM)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Windows Server Patching

Manuell angestoßenes, gate-basiertes Patching von Windows-Servern (2016/2019/2022/2025) über PowerShell-Remoting (WinRM), OnPrem, pro Kunde getrennt.

Source of Truth ist CLAUDE.md – Grundregeln, Gate-Mechanik, Ablauf. Diese README ist der Quickstart für den Operator.

Sicherheit zuerst (nicht verhandelbar)

  • Nichts Schreibendes läuft ohne explizite Gate-Freigabe (ja eintippen).
  • Kein automatischer Reboot. Reboots werden vorgeschlagen, dann freigegeben.
  • Keine Credentials in Code, Inventory oder Logs. Abfrage zur Laufzeit.
  • Ein Kunde pro Lauf. clients/ und logs/ sind gitignored.

Voraussetzungen

Operator-Maschine: PowerShell 5.1 oder 7.x, aktive VPN zum Kunden (manuell), WinRM-Client-Dienst läuft. Optional Microsoft.PowerShell.SecretManagement. Zielserver: WinRM erreichbar (5985/5986), Operator hat lokale Admin-Rechte, PSWindowsUpdate-Modul installiert.

Kunde anlegen

Pro Kunde ein Ordner clients/<kunde>/ mit:

  • config.json – siehe clients/musterkunde/config.json (updateSource, winrmPort, useSSL, maxParallel, minFreeGB, excludeKB)
  • inventory.csv – Spalten: hostname,rolle,reihenfolge,wartungsfenster (niedrige reihenfolge zuerst; DCs hohe Nummer = zuletzt; rolle=DC wird beim Reboot zwingend einzeln behandelt)

Ablauf (ein Lauf pro Kunde)

Erst VPN manuell aufbauen, dann die Schritte der Reihe nach. Alle Schritte loggen in denselben Lauf-Ordner logs/<kunde>/<datum_zeit>/ (Schritt 00 eröffnet ihn neu).

cd scripts

.\00_Setup.ps1            -Client musterkunde   # read-only: Voraussetzungen
.\01_TestConnectivity.ps1 -Client musterkunde   # read-only: WinRM erreichbar?
.\02_Precheck.ps1         -Client musterkunde   # read-only -> GATE 1
.\03_ScanUpdates.ps1      -Client musterkunde   # read-only: was steht an?
.\04_InstallUpdates.ps1   -Client musterkunde   # SCHREIBT -> GATE 2
.\05_Reboot.ps1           -Client musterkunde   # SCHREIBT -> GATE 3
.\06_PostCheck.ps1        -Client musterkunde   # read-only: Verifikation + Report

Nützliche Schalter

  • -UseSecretStore – Credential aus Get-Secret -Name patch-<kunde> statt Get-Credential.
  • -AutoConfirm – Gates automatisch bestätigen. Nur für Tests/Trockenläufe, nie produktiv.
  • 05_Reboot.ps1 -RebootTimeoutSec 900 – Wartezeit auf WinRM-Rückkehr nach Reboot.

Was wo landet

logs/<kunde>/<datum_zeit>/
  run.log              # zeitgestempeltes Gesamtprotokoll
  connectivity.json    # 01
  precheck.json        # 02
  updates_<server>.json, scan_summary.json   # 03
  install_<server>.json, reboot_pending.json # 04
  reboot_results.json  # 05
  postcheck.json, report.html                # 06  <- Abschlussbericht

Credentials persistent hinterlegen (optional)

# einmalig pro Kunde
Set-Secret -Name "patch-musterkunde" -Secret (Get-Credential)
# danach Schritte mit -UseSecretStore aufrufen

Fehlerverhalten

Ein fehlerhafter Server killt den Lauf nicht – er wird als FEHLER markiert und im Report rot ausgewiesen. Kommt ein Server nach Reboot nicht zurück: Warnung, kein automatischer Zweit-Reboot – manuell prüfen.

About

Gate-based, manually-triggered Windows Server patching toolkit (PowerShell/WinRM)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages