135 lines
2.7 KiB
Markdown
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
|
|
|
|
---
|