Files
PS-SystemInventory/readme.md
2026-03-25 23:28:43 +01:00

135 lines
2.7 KiB
Markdown

# 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_<timestamp>.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
---