Powershell: Überlange Dateipfade auflisten

Überlange Dateipfade können bei Migrationen und Backup/Restore Prozessen zum Problem werden. Ein Dateipfad darf normalerweise nicht länger als 260 Zeichen sein. Es kommt allerdings vor das diese Grenze überschritten wird. Um solche langen Pfade zu identifizieren lässt sich dieses kleine Powershell Script verwenden:

#Zu prüfendes Verzeichnis oder Volume:
$Verzeichnis = „D:\Freigaben“

#Pfad zur CSV-Datei für den Export:
$CSV = „d:\export.csv“

#Warnstufe für Pfade über XX Zeichen Laenge in CSV schreiben
$Warninglevel = „250“

#———————————————–
„Pfad;Laenge“ | set-content „$CSV“
$dirlist = Get-ChildItem „$Verzeichnis“ -recurse | foreach {$_.Fullname}
foreach ($dir in $dirlist)
{
$a = $dir | Measure-Object -Character
$length = $a.characters

if ($length -gt $Warninglevel)
{
„$dir;$length“ | add-content „$CSV“
}
}
$sort = import-csv „$CSV“ -delimiter „;“ | Sort-Object -Property Laenge -Descending
„“ | set-content „$CSV“
$sort | export-csv „$CSV“ -delimiter „;“ –NoTypeInformation

Das Script durchsucht ein Verzeichnis oder ein Volume und speichert die zu langen Pfade in einer CSV Datei ab.

Hier noch ein paar Hintergrundinformationen: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

3 Gedanken zu „Powershell: Überlange Dateipfade auflisten“

  1. Hallo,

    das Script liefert mir „nur“ Dateienamen, die kleiner als 260 Zeichen sind.

    Leider bekomme ich viele Gci Fehlermeldungen das der Pfad zu lang ist. Die Dateien über 260 Zeichen werden also nicht protokolliert -> aber genau darum geht es doch, oder?

    OS: Server2012

    Thx im voraus
    Daniel

    Antworten
  2. Hallo Frank,
    ja, das ist schon ein riesen Problem.
    Dein Script macht aber einen Denkfehler.
    Die tatsächliche Länge des Pfades setzt sich aus der Länge des UNC Pfades, also mit Backslashes, Servername,Volumename, zusammen.

    Trotzdem danke,
    Gruß
    Volker

    Antworten
  3. Hallo Frank,
    vielen Dank!
    Bei mir funktionierte das Script auf Anhieb.
    Ich werde mich mehr mit der PS beschäftigen.
    *.BAT-Dateien sind bei mir ein wenig aus der Mode gekommen.
    Das war ein Fehler.
    Heute heißt das Rad zwar *.PS1, ist aber immernoch rund.
    Besten Grüße
    MS

    Antworten

Schreibe einen Kommentar