# System Inventory Script (PowerShell) ## 📖 Beschreibung Dieses PowerShell-Skript dient zur Erfassung der auf einem Windows-System installierten Software inklusive Versionsinformationen. Die Daten werden aus der Windows-Registry ausgelesen und anschließend als JSON-Datei exportiert. Der Dateiname enthält einen Zeitstempel, sodass mehrere Durchläufe versioniert gespeichert werden können. --- ## ⚙️ Funktionalität Das Skript führt folgende Schritte aus: 1. **Auslesen installierter Software** * Liest Einträge aus den Registry-Pfaden: * `HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*` * `HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*` * Dadurch werden sowohl **64-Bit** als auch **32-Bit Anwendungen** erfasst 2. **Filtern der Daten** * Es werden nur Einträge berücksichtigt, die einen Anzeigenamen (`DisplayName`) besitzen 3. **Extraktion relevanter Informationen** * Name * Version * Publisher * Installationsdatum 4. **Datenbereinigung** * Sortierung nach Name * Entfernen von Duplikaten 5. **Export** * Ausgabe als JSON-Datei * Dateiname enthält einen Zeitstempel (Format: `MM-dd-yyyy-HH-mm`) --- ## ▶️ Verwendung ### Script ausführen ```powershell .\Get-InstalledSoftware.ps1 ``` Nach der Ausführung wird eine Datei im aktuellen Verzeichnis erstellt: ```text software_.json ``` Beispiel: ```text software_03-25-2026-14-30.json ``` --- ## 🧪 Beispielausgabe (JSON) ```json [ { "Name": "Google Chrome", "Version": "123.0.0", "Publisher": "Google LLC", "InstallDate": "20260320" } ] ``` --- ## 🛠️ Funktionen im Detail ### `Get-InstalledSoftware` Diese Funktion: * iteriert über definierte Registry-Pfade * liest installierte Programme aus * formatiert die Daten als PowerShell-Objekte * gibt eine bereinigte Liste zurück --- ## 💡 Hinweise * Nicht alle Programme tragen vollständige Informationen in die Registry ein → Felder wie Version oder InstallDate können leer sein * Microsoft Store Apps werden in der Regel **nicht erfasst** * Für erweiterte Erkennung kann zusätzlich `winget list` verwendet werden --- ## 🚀 Erweiterungsmöglichkeiten * Export als CSV oder HTML * Vergleich mehrerer Inventories (Delta-Erkennung) * Integration in ein Logging-Framework * Automatisierung über geplante Tasks * Remote-Ausführung auf mehreren Systemen --- ## 📌 Voraussetzungen * Windows System * PowerShell 5.1 oder höher * Leserechte auf die Registry (Standard bei lokalen Admins) --- ## 🧠 Ziel des Projekts Dieses Skript bildet die Grundlage für: * Software-Inventarisierung * Lizenz- und Compliance-Checks * Update- und Patch-Management * Automatisierte Systemanalysen ---