Ü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.charactersif ($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
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
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
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