Skip to main content

Verzeichnisanalyse

Zweck des Skripts

Das Skript dient zur automatisierten Analyse eines Verzeichnisses. Es zählt:

  • die Anzahl aller enthaltenen Ordner und Dateien (rekursiv),

  • die Anzahl leerer Ordner,

  • die Häufigkeit der verschiedenen Dateitypen anhand der Dateierweiterung,

  • die Gesamtgröße aller Dateien im Zielverzeichnis.

Die Ergebnisse werden als strukturierter Textbericht in einer Datei unter C:\Auswertung\AnalyseErgebnisse.txt gespeichert.

 

Einsatzszenario

Typischer Anwendungsfall ist die regelmäßige oder einmalige Analyse von zentralen Dateiablagen wie z. B. einem Intranet-Ordner, um Speicherverteilung, Ordnertiefe und Strukturierung besser bewerten zu können.

 

Voraussetzungen

  • PowerShell 5.1 oder höher

  • Schreibrechte auf dem Ausgabe-Pfad (C:\Auswertung\)

  • Leserechte auf dem analysierten Verzeichnis

 

param (
    [string]$Path = "\\XXX.XXX.XXX.\ABC"  # Standardpfad ist das aktuelle Verzeichnis
)

# Prüfen, ob der Pfad existiert
if (-Not (Test-Path -Path $Path)) {
    Write-Host "Pfad existiert nicht: $Path"
    exit
}

# Initialisierung von Zählern
$folderCount = 0
$fileCount = 0
$emptyFolderCount = 0
$fileTypeCounts = @{}
$totalSize = 0

# Rekursive Durchsuchung des Verzeichnisses
Get-ChildItem -Path $Path -Recurse | ForEach-Object {
    if ($_.PsIsContainer) {
        # Ordner
        $folderCount++
        if (-Not (Get-ChildItem -Path $_.FullName -Recurse | Where-Object { -Not $_.PsIsContainer })) {
            # Leerer Ordner
            $emptyFolderCount++
        }
    } else {
        # Datei
        $fileCount++
        $fileExtension = $_.Extension.ToLower()
        if (-Not $fileTypeCounts.ContainsKey($fileExtension)) {
            $fileTypeCounts[$fileExtension] = 0
        }
        $fileTypeCounts[$fileExtension]++
        $totalSize += $_.Length
    }
}

# Ergebnisse zusammenstellen
$output = @()
$output += "Analyse von: $Path"
$output += "-------------------"
$output += "Gesamtanzahl Ordner: $folderCount"
$output += "Anzahl leerer Ordner: $emptyFolderCount"
$output += "Gesamtanzahl Dateien: $fileCount"
$output += "Größen pro Dateityp:"
foreach ($key in $fileTypeCounts.Keys) {
    $output += " - $($key): $($fileTypeCounts[$key]) Dateien"
}
$output += "-------------------"
$output += "Gesamtgröße: $("{0:N2}" -f ($totalSize / 1MB)) MB"

# Ausgabe in Datei schreiben
$ausgabePfad = "C:\Auswertung\AnalyseErgebnisse.txt"
if (-Not (Test-Path -Path (Split-Path -Path $ausgabePfad -Parent))) {
    New-Item -ItemType Directory -Path (Split-Path -Path $ausgabePfad -Parent) | Out-Null
}
$output | Set-Content -Path $ausgabePfad

Write-Host "Analyse abgeschlossen. Ergebnisse gespeichert in: $ausgabePfad"