2026-03-25 23:28:43 +01:00
2026-03-25 23:25:05 +01:00
2026-03-25 23:28:43 +01:00

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

.\Get-InstalledSoftware.ps1

Nach der Ausführung wird eine Datei im aktuellen Verzeichnis erstellt:

software_<timestamp>.json

Beispiel:

software_03-25-2026-14-30.json

🧪 Beispielausgabe (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

Description
No description provided
Readme 34 KiB
Languages
PowerShell 100%