From 6353da47c5e6a1205fc1090a8131ff95920e2349 Mon Sep 17 00:00:00 2001 From: Micha Date: Sat, 6 Jun 2026 08:27:10 +0200 Subject: [PATCH] ops: add baerchen app license readiness check --- docs/MASTER_TODO.md | 2 +- .../check-baerchen-app-license-readiness.ps1 | 194 ++++++++++++++++++ ...erchen-app-license-readiness-2026-06-06.md | 86 ++++++++ .../docs/windows-neuaufsetzen-masterplan.md | 4 + 4 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 ops/windows-reinstall/check-baerchen-app-license-readiness.ps1 create mode 100644 ops/windows-reinstall/docs/baerchen-app-license-readiness-2026-06-06.md diff --git a/docs/MASTER_TODO.md b/docs/MASTER_TODO.md index c58e49c..3539a17 100644 --- a/docs/MASTER_TODO.md +++ b/docs/MASTER_TODO.md @@ -27,7 +27,7 @@ Host-/Entscheidungsaufgaben beim **Operator**. | Family-Onboarding erster Termin | Operator | Checkliste ist fertig (`docs/FAMILY_ONBOARDING.md` Abschnitt "Erster Onboarding-Termin"). Operator legt fest, welche Personen/Geraete real verfuegbar sind, und arbeitet die Reihenfolge Vaultwarden -> Immich -> Mealie pro Person ab | `docs/FAMILY_ONBOARDING.md`, `docs/AUDIT_2026-05-25_TODO.md` | | Restore-Test Unraid OS Flash (Stick-Boot) | Operator | Artefakt-Validierung am 2026-06-05 erledigt (`ops/maintenance/check-unraid-flash-backup.sh`, sha256 OK, 8 Kern-Configs). **Verbleibt:** physischer Ersatzstick-Boot-Test, wenn ein Wegwerf-Stick bereitliegt | `docs/RESTORE_MATRIX.md` Abschnitt "Unraid OS Flash" | | Restore-Test Tailscale | Operator | Runbook-Stub abarbeiten: State-Validierung + Reconnect nur auf Wegwerf-Host/VM, danach Geraet in Tailscale-Admin entfernen | `docs/RESTORE_MATRIX.md` Abschnitt "Tailscale" | -| Manuelle App-/Lizenzchecks `baerchen` | Codex/Operator | Passwortmanager/2FA-Recovery-Codes, Banking4, WISO, Microsoft/M365/OneDrive im laufenden System bestaetigen | `ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md` | +| Manuelle App-/Lizenzchecks `baerchen` | Operator | Technisches Inventar erledigt (`ops/windows-reinstall/docs/baerchen-app-license-readiness-2026-06-06.md`): Banking4, WISO, Microsoft 365/OneDrive und relevante Datenpfade sichtbar. Verbleibt: Apps/Konten wirklich oeffnen und manuelle Checkliste im Report abhaken | `ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md` | --- diff --git a/ops/windows-reinstall/check-baerchen-app-license-readiness.ps1 b/ops/windows-reinstall/check-baerchen-app-license-readiness.ps1 new file mode 100644 index 0000000..6578156 --- /dev/null +++ b/ops/windows-reinstall/check-baerchen-app-license-readiness.ps1 @@ -0,0 +1,194 @@ +param( + [string]$ReportPath = "G:\Gitea_Clone\homelab-infra\ops\windows-reinstall\docs\baerchen-app-license-readiness-2026-06-06.md" +) + +$ErrorActionPreference = "Stop" + +function Get-InstalledProgram { + param([string[]]$NamePattern) + + $roots = @( + "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*", + "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", + "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" + ) + + Get-ItemProperty $roots -ErrorAction SilentlyContinue | + Where-Object { + $display = $_.DisplayName + if (-not $display) { return $false } + foreach ($pattern in $NamePattern) { + if ($display -like $pattern) { return $true } + } + return $false + } | + Sort-Object DisplayName | + Select-Object DisplayName,DisplayVersion,Publisher,InstallDate +} + +function Test-PathSummary { + param([string]$Path) + + $item = Get-Item -LiteralPath $Path -ErrorAction SilentlyContinue + if (-not $item) { + return [pscustomobject]@{ + Path = $Path + Exists = $false + Type = "" + LastWriteTime = "" + Bytes = "" + } + } + + $bytes = "" + if ($item.PSIsContainer) { + $measure = Get-ChildItem -LiteralPath $Path -Recurse -Force -ErrorAction SilentlyContinue | + Measure-Object -Property Length -Sum + $bytes = [int64]($measure.Sum) + } else { + $bytes = [int64]$item.Length + } + + [pscustomobject]@{ + Path = $Path + Exists = $true + Type = $(if ($item.PSIsContainer) { "Directory" } else { "File" }) + LastWriteTime = $item.LastWriteTime.ToString("s") + Bytes = $bytes + } +} + +function ConvertTo-MarkdownTable { + param( + [Parameter(ValueFromPipeline = $true)]$InputObject, + [string[]]$Columns + ) + + begin { + $rows = @() + } + process { + $rows += $InputObject + } + end { + if (-not $rows -or $rows.Count -eq 0) { + return "_Keine Treffer._" + } + + $lines = @() + $lines += "| " + ($Columns -join " | ") + " |" + $lines += "| " + (($Columns | ForEach-Object { "---" }) -join " | ") + " |" + foreach ($row in $rows) { + $values = foreach ($column in $Columns) { + $value = [string]$row.$column + $value.Replace("|", "\|") + } + $lines += "| " + ($values -join " | ") + " |" + } + $lines -join "`n" + } +} + +$programGroups = [ordered]@{ + "Passwortmanager / Browser" = @("*Bitwarden*", "*Vaultwarden*", "*1Password*", "*KeePass*", "*KeePassXC*", "*Chrome*", "*Microsoft Edge*", "*Brave*", "*Firefox*") + "Banking4 / Subsembly" = @("*Banking4*", "*Subsembly*") + "WISO / Buhl" = @("*WISO*", "*Buhl*") + "Microsoft 365 / Office / OneDrive" = @("*Microsoft 365*", "*Microsoft Office*", "*Office 16*", "*OneDrive*") +} + +$pathChecks = @( + "C:\Users\michi\AppData\Local\Subsembly", + "C:\Users\michi\AppData\Local\Buhl", + "C:\Users\michi\AppData\Local\Buhl Data Service GmbH", + "C:\ProgramData\Buhl Data Service GmbH", + "C:\Users\michi\Documents\steuer", + "C:\Users\michi\Desktop\Banking", + "C:\Users\michi\OneDrive", + "D:\30_Finanzen", + "D:\30_Finanzen\Recovery-Codes", + "D:\30_Finanzen\BitLocker-RecoveryKey-baerchen-2026-06-06.txt" +) + +$oneDriveProcess = Get-Process OneDrive -ErrorAction SilentlyContinue | + Select-Object ProcessName,Id,StartTime + +$oneDriveAccounts = Get-ChildItem "HKCU:\Software\Microsoft\OneDrive\Accounts" -ErrorAction SilentlyContinue | + Select-Object PSChildName + +$officeCscript = @( + "$env:ProgramFiles\Microsoft Office\Office16\OSPP.VBS", + "${env:ProgramFiles(x86)}\Microsoft Office\Office16\OSPP.VBS" +) | Where-Object { Test-Path -LiteralPath $_ } | Select-Object -First 1 + +$officeStatus = @() +if ($officeCscript) { + $raw = & cscript.exe //Nologo $officeCscript /dstatus 2>$null + $officeStatus = $raw | + Where-Object { $_ -match "LICENSE NAME|LICENSE STATUS|ERROR CODE|Last 5 characters" } | + ForEach-Object { $_.Trim() } +} + +$lines = @() +$lines += "# baerchen App-/Lizenz-Readiness - 2026-06-06" +$lines += "" +$lines += "Automatisch erzeugter lokaler Check. Keine Lizenzkeys, Passwoerter, Tokens oder Recovery-Code-Werte wurden ausgelesen oder ins Repo geschrieben." +$lines += "" +$lines += "## Ergebnis" +$lines += "" +$lines += "- Technische Inventarisierung: erledigt" +$lines += "- Manuelle Konto-/Recovery-Bestaetigung: weiterhin Operator-Schritt" +$lines += "" + +$lines += "## Installierte Programme" +$lines += "" +foreach ($group in $programGroups.Keys) { + $lines += "### $group" + $lines += "" + $programs = Get-InstalledProgram -NamePattern $programGroups[$group] + $lines += ($programs | ConvertTo-MarkdownTable -Columns DisplayName,DisplayVersion,Publisher,InstallDate) + $lines += "" +} + +$lines += "## Relevante Datenpfade" +$lines += "" +$pathResults = $pathChecks | ForEach-Object { Test-PathSummary $_ } +$lines += ($pathResults | ConvertTo-MarkdownTable -Columns Path,Exists,Type,LastWriteTime,Bytes) +$lines += "" + +$lines += "## OneDrive / Microsoft 365 Indikatoren" +$lines += "" +$lines += "### OneDrive Prozess" +$lines += "" +$lines += ($oneDriveProcess | ConvertTo-MarkdownTable -Columns ProcessName,Id,StartTime) +$lines += "" +$lines += "### OneDrive Accounts Registry" +$lines += "" +$lines += ($oneDriveAccounts | ConvertTo-MarkdownTable -Columns PSChildName) +$lines += "" +$lines += "### Office Aktivierungsindikatoren" +$lines += "" +if ($officeStatus.Count -gt 0) { + $lines += '```text' + $lines += $officeStatus + $lines += '```' +} else { + $lines += "_Keine Office-OSPP-Aktivierungsdaten gefunden oder Office nicht klassisch installiert._" +} +$lines += "" + +$lines += "## Manuell noch zu bestaetigen" +$lines += "" +$lines += "- [ ] Passwortmanager laesst sich oeffnen und enthaelt Homelab-/Banking-/Provider-Eintraege." +$lines += "- [ ] 2FA-Recovery-Codes fuer Microsoft, Hetzner, Cloudflare, Tailscale, Gitea/GitHub und Banken sind offline oder in Vaultwarden auffindbar." +$lines += "- [ ] Banking4 oeffnet den aktuellen Datentresor; ein frischer Backup-/Exportpfad ist bekannt." +$lines += '- [ ] WISO Steuer 2026 oeffnet, Buhl-Konto/Lizenz ist aktiv, Steuerdateien unter `C:\Users\michi\Documents\steuer` bzw. neuem Zielpfad sind sichtbar.' +$lines += "- [ ] Microsoft-Konto zeigt aktives M365/Office-Installationsrecht." +$lines += "- [ ] OneDrive-Sync ist angemeldet und synchronisiert die erwarteten Ordner." +$lines += "" +$lines += "## Bewertung" +$lines += "" +$lines += 'Dieses Dokument ersetzt nicht die manuelle Kontoanmeldung. Es belegt nur, welche lokalen Programme, Datenpfade und Aktivierungsindikatoren auf `baerchen` sichtbar waren.' + +New-Item -ItemType Directory -Force -Path (Split-Path -Parent $ReportPath) | Out-Null +$lines -join "`r`n" | Set-Content -LiteralPath $ReportPath -Encoding UTF8 +Write-Host "Report written: $ReportPath" diff --git a/ops/windows-reinstall/docs/baerchen-app-license-readiness-2026-06-06.md b/ops/windows-reinstall/docs/baerchen-app-license-readiness-2026-06-06.md new file mode 100644 index 0000000..c93943d --- /dev/null +++ b/ops/windows-reinstall/docs/baerchen-app-license-readiness-2026-06-06.md @@ -0,0 +1,86 @@ +# baerchen App-/Lizenz-Readiness - 2026-06-06 + +Automatisch erzeugter lokaler Check. Keine Lizenzkeys, Passwoerter, Tokens oder Recovery-Code-Werte wurden ausgelesen oder ins Repo geschrieben. + +## Ergebnis + +- Technische Inventarisierung: erledigt +- Manuelle Konto-/Recovery-Bestaetigung: weiterhin Operator-Schritt + +## Installierte Programme + +### Passwortmanager / Browser + +| DisplayName | DisplayVersion | Publisher | InstallDate | +| --- | --- | --- | --- | +| Brave | 149.1.91.168 | Die Brave-Autoren | 20260604 | +| Google Chrome | 149.0.7827.54 | Google LLC | 20260604 | +| Microsoft Edge | 148.0.3967.96 | Microsoft Corporation | 20260604 | +| Microsoft Edge WebView2-Laufzeit | 148.0.3967.96 | Microsoft Corporation | 20260604 | + +### Banking4 / Subsembly + +| DisplayName | DisplayVersion | Publisher | InstallDate | +| --- | --- | --- | --- | +| Banking4 Home | | Subsembly GmbH | | + +### WISO / Buhl + +| DisplayName | DisplayVersion | Publisher | InstallDate | +| --- | --- | --- | --- | +| WISO Steuer 2026 | 33.07.3410 | Buhl Data Service GmbH | 20260604 | + +### Microsoft 365 / Office / OneDrive + +| DisplayName | DisplayVersion | Publisher | InstallDate | +| --- | --- | --- | --- | +| Microsoft 365 - de-de | 16.0.20026.20140 | Microsoft Corporation | | +| Microsoft 365 - en-us | 16.0.20026.20140 | Microsoft Corporation | | +| Microsoft OneDrive | 23.038.0219.0001 | Microsoft Corporation | | +| Office 16 Click-to-Run Extensibility Component | 16.0.20026.20076 | Microsoft Corporation | 20260604 | +| Office 16 Click-to-Run Localization Component | 16.0.20026.20140 | Microsoft Corporation | 20260604 | + +## Relevante Datenpfade + +| Path | Exists | Type | LastWriteTime | Bytes | +| --- | --- | --- | --- | --- | +| C:\Users\michi\AppData\Local\Subsembly | True | Directory | 2026-06-04T12:23:43 | 43360359 | +| C:\Users\michi\AppData\Local\Buhl | True | Directory | 2026-06-04T12:55:57 | 680833 | +| C:\Users\michi\AppData\Local\Buhl Data Service GmbH | False | | | | +| C:\ProgramData\Buhl Data Service GmbH | True | Directory | 2026-06-04T12:57:08 | 6037194 | +| C:\Users\michi\Documents\steuer | True | Directory | 2026-01-26T11:21:44 | 13069132 | +| C:\Users\michi\Desktop\Banking | False | | | | +| C:\Users\michi\OneDrive | True | Directory | 2026-06-04T12:39:24 | 39370265 | +| D:\30_Finanzen | True | Directory | 2026-06-04T20:14:26 | 128994854 | +| D:\30_Finanzen\Recovery-Codes | False | | | | +| D:\30_Finanzen\BitLocker-RecoveryKey-baerchen-2026-06-06.txt | False | | | | + +## OneDrive / Microsoft 365 Indikatoren + +### OneDrive Prozess + +_Keine Treffer._ + +### OneDrive Accounts Registry + +| PSChildName | +| --- | +| Business1 | +| Personal | + +### Office Aktivierungsindikatoren + +_Keine Office-OSPP-Aktivierungsdaten gefunden oder Office nicht klassisch installiert._ + +## Manuell noch zu bestaetigen + +- [ ] Passwortmanager laesst sich oeffnen und enthaelt Homelab-/Banking-/Provider-Eintraege. +- [ ] 2FA-Recovery-Codes fuer Microsoft, Hetzner, Cloudflare, Tailscale, Gitea/GitHub und Banken sind offline oder in Vaultwarden auffindbar. +- [ ] Banking4 oeffnet den aktuellen Datentresor; ein frischer Backup-/Exportpfad ist bekannt. +- [ ] WISO Steuer 2026 oeffnet, Buhl-Konto/Lizenz ist aktiv, Steuerdateien unter `C:\Users\michi\Documents\steuer` bzw. neuem Zielpfad sind sichtbar. +- [ ] Microsoft-Konto zeigt aktives M365/Office-Installationsrecht. +- [ ] OneDrive-Sync ist angemeldet und synchronisiert die erwarteten Ordner. + +## Bewertung + +Dieses Dokument ersetzt nicht die manuelle Kontoanmeldung. Es belegt nur, welche lokalen Programme, Datenpfade und Aktivierungsindikatoren auf `baerchen` sichtbar waren. diff --git a/ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md b/ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md index 7ca07b7..1b8ae87 100644 --- a/ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md +++ b/ops/windows-reinstall/docs/windows-neuaufsetzen-masterplan.md @@ -51,6 +51,10 @@ Noch offen: - Banking4 im Programm selbst oeffnen und aktuellen Datentresor/Backup-Export bestaetigen. Der Key und der Datentresor sind bereits lokal auf H: gesichert. - WISO Steuer 2026 oeffnen und Lizenz/Buhl-Konto sowie Speicherorte der Steuerdateien bestaetigen. - Microsoft-Konto fuer M365 pruefen: Office-Webkonto/Abonnement, Installationsrecht, OneDrive-Sync. +- Technisches Nachinstallations-Inventar 2026-06-06 erledigt: + `baerchen-app-license-readiness-2026-06-06.md`. Banking4, WISO Steuer + 2026, Microsoft 365/OneDrive und relevante Datenpfade sind lokal sichtbar; + verbleibend sind echte Konto-/App-Oeffnen-Checks durch den Operator. - Optional Keyfinder-Lauf durchfuehren und Ergebnisse lokal auf H: speichern. - `G:\Ollama` bewusst entscheiden: nicht gesichert, ca. 40,9 GB lokale Modell-/Cache-Daten. - D:, F: und G: vor dem spaeteren Loeschen noch einmal in Ruhe final bestaetigen.