Kurzbeschreibung
Ein hilfreiches Skript um ganze Verzeichnisse nach allen oder bestimmten Dateitypen aufzulisten (Verzeichnis-Inventur nach CSV) Dieses Tool inventarisiert einen gewählten Ordner rekursiv und exportiert eine CSV-Datei (UTF-8 mit BOM).
Es erfasst pro Datei:
Verzeichnis, Dateiname, Dateiendung, Grösse in Byte, Erstellungsdatum, letztes Änderungsdatum, Besitzer (Owner) und optional den letzten Bearbeiter (LastEditor). Fortschritt, Status und ein Log-Bereich werden im Fenster angezeigt. Nach erfolgreichem Lauf kann die erzeugte CSV direkt mit der verknüpften Anwendung geöffnet werden.
Voraussetzungen
- Windows 10 oder neuer (WPF-Oberfläche, Windows Shell erforderlich).
- PowerShell 5.1 (Windows PowerShell) oder PowerShell 7.x (pwsh) auf Windows.
- Start im STA-Modus empfohlen:
PS5.1: powershell.exe -STA -File "Pfad\Inventur.ps1"
PS7.x: pwsh.exe -STA -File "Pfad\Inventur.ps1" - Ausführungsrichtlinie: Bei Bedarf Skript entsperren bzw. temporär erlauben:
Unblock-File "Pfad\Inventur.ps1"
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass - Für eine korrekte Anzeige von Umlauten die .ps1-Datei als UTF-8 mit BOM gespeichert.
- Die Option „Letzten Bearbeiter“ nutzt Windows-Shell-Funktionen (Property Store), wofür ein STA-Thread benötigt wird (im Skript bereits berücksichtigt).
Erfasste Spalten (CSV)
- Directory: vollständiger Ordnerpfad
- FileName: Dateiname
- Extension: Dateiendung (inklusive Punkt, z. B. .txt)
- SizeBytes: Dateigrösse in Byte
- Creation_YYYYMMDD_HHmm: Erstellungsdatum (yyyyMMdd HHmm)
- LastWrite_YYYYMMDD_HHmm: letztes Änderungsdatum (yyyyMMdd HHmm)
- Owner: NTFS-Besitzer (z. B. DOMAIN\Benutzer)
- LastEditor: letzter Bearbeiter (falls ermittelbar, siehe unten)
Bedienung – Schritte
- Quellordner wählen.
- Ziel-CSV festlegen (Standardvorschlag: Desktop).
- Optional Endungen filtern (z. B. txt;log oder .pdf .xlsx).
- Trennzeichen wählen: „Auto (System)“ nimmt den Listentrenner der Region (z. B. „,“ in ENU, „;“ in DEU/FRA/ITA) oder explizit „;“ bzw. „,“.
- Optional „Versteckte/Systemdateien einschliessen“.
- Optional „Letzten Bearbeiter ermitteln“ aktivieren:
- Liest bei Office-Open-XML (docx, xlsx, pptx/m) aus docProps/core.xml (lastModifiedBy).
- Zusätzlich Fallback über Windows Property Store: System.Document.LastAuthor bzw. System.Author.
- Optionaler weiterer Fallback (Checkbox): Wenn LastEditor leer bleibt, Owner als LastEditor verwenden.
- Start drücken. Fortschritt und Status werden angezeigt; das Log listet Meldungen zur Diagnose.
- Nach Abschluss kann „CSV öffnen“ verwendet werden, um die Datei mit der Standardanwendung zu öffnen.
Filter für Dateiendungen
- Mehrere Endungen mit Komma, Semikolon oder Leerzeichen trennen.
- Formate „txt“, „.txt“ oder „*.txt“ sind möglich; intern wird „.txt“ verwendet.
- Beispiel: txt;log oder .csv .xlsx oder *.pdf
Ausgabeformat (CSV)
- UTF-8 mit BOM (Excel-freundlich).
- Datumsformat ist kulturunabhängig (yyyyMMdd HHmm) und gut sortierbar.
- Trennzeichen je nach Auswahl („Auto“ = aktueller Listentrenner des Systems).
Leistung und Verhalten
- Streaming-Schreiben: CSV wird zeilenweise geschrieben (speicherschonend, geeignet für grosse Datenmengen).
- Fortschritt: Zunächst werden passende Dateien gezählt, anschliessend exportiert; Prozentanzeige basiert auf der Gesamtanzahl.
- Die Ermittlung von Owner und insbesondere von LastEditor (Property Store) kann die Laufzeit erhöhen. Für maximale Geschwindigkeit die Option „Letzten Bearbeiter ermitteln“ deaktivieren.
Grenzen und Hinweise
- LastEditor:
- Verlässlich für Office-Open-XML-Dateien (docx/xlsx/pptx/m).
- Property-Store-Felder (LastAuthor/Author) sind nicht in allen Formaten befüllt (z. B. Bilder meist leer).
- Optionaler Fallback: Owner als LastEditor.
- Besitzer (Owner) erfordert Zugriffsrechte auf die Datei/den Pfad; auf Netzlaufwerken/OneDrive kann es langsamer sein oder leer bleiben.
- OneDrive/SharePoint „Dateien bei Bedarf“: Für manche Metadaten muss die Datei lokal verfügbar sein. Bei Platzhaltern kann LastEditor leer sein.
- Sehr lange Pfade können auf Systemen ohne aktivierte „lange Pfade“-Unterstützung Probleme machen. Ggf. Gruppenrichtlinie/Registry für lange Pfade aktivieren oder Laufwerksbuchstaben verwenden.
- Excel und Trennzeichen: In anderssprachigen Umgebungen erwartet Excel oft den systemweiten Listen-Trenner. Bei falscher Spaltenaufteilung in Excel das passende Trennzeichen wählen oder in Excel „Daten > Aus Text/CSV“ importieren.
Fehlersuche
- GUI startet nicht oder schliesst sofort: Skript im STA-Modus starten; sicherstellen, dass die Datei als UTF-8 mit BOM gespeichert ist; eventuelle Parser-Fehler in der Konsole prüfen.
- Umlaute werden falsch angezeigt: Skript als UTF-8 mit BOM speichern.
- „CSV öffnen“-Button bleibt deaktiviert: Warten bis 100 % erreicht; Log prüfen. Falls die CSV manuell geöffnet werden soll, den im Feld „CSV-Datei“ eingetragenen Pfad verwenden.
- CSV öffnet in Excel in einer einzigen Spalte: Trennzeichen anpassen (Auto/„;“/„,“) oder in Excel den Text/CSV-Import nutzen.
- „Zugriff verweigert“ oder Owner leer: Berechtigungen auf Dateien/Ordner prüfen; auf Netzpfaden kann die Ermittlung eingeschränkt sein.
Datenschutz
- Das Tool liest Dateieigentümer (Owner) und ggf. Autoreninformationen (LastAuthor/Author, lastModifiedBy) aus. Einsatz bitte in Übereinstimmung mit den internen Datenschutzrichtlinien.
Support
- Bei Wunsch nach erweiterten Feldern (z. B. FullPath, Checksummen, EXIF-Daten), Mehrsprachigkeit im UI, Protokollierung in Datei, Signierung oder zusätzlichen Filtern kann das Skript erweitert werden.