Ich denke, Ihnen ist es genauso wie mir gegangen, dass Sie bereits Wege wie diesen gesehen haben. !!! Wichtig____Neu____!!! Bitte nicht löschen!!! Verordnung â98819-649-Đ vom 30. Februar 1985 ĂŒber die Ernennung von Ivan Alexandrovich Kozlov zum vorĂŒbergehenden Leiter der Abteilung fĂŒr die Betreuung von Unternehmens-VIP-Kunden und Organisation von GeschĂ€ftstreffen im Hintergrund.doc.
Und oft lĂ€sst sich ein solches Dokument unter Windows nicht sofort öffnen. Einige nutzen Umgehungsmethoden wie das Mappen von Laufwerken, andere verwenden Dateimanager, die mit langen Pfaden umgehen können: Far Manager, Total Commander und Ă€hnliche. Viele haben auch betrĂŒbt beobachtet, wie ihr PS-Skript, in das viel Arbeit investiert wurde und das in der Testumgebung hervorragend funktionierte, in der Produktionsumgebung hilflos ĂŒber die unlösbare Aufgabe klagte: Der angegebene Pfad, Dateiname oder beides sind zu lang. Der vollqualifizierte Dateiname muss weniger als 260 Zeichen und der Verzeichnisname weniger als 248 Zeichen betragen.
Wie sich herausstellte, sind 260 Zeichen nicht fĂŒr âalleâ ausreichend. Wenn Sie daran interessiert sind, die zulĂ€ssigen Grenzen zu ĂŒberschreiten â bitte nach dem Cut.
Hier sind nur einige der traurigen Folgen der Begrenzung der LĂ€nge von Dateipfaden:
- Auf dem Server gibt es einen Ordner, zum Beispiel D:DataSharedAccounting, der ĂŒber SMB freigegeben ist und von den Benutzern als Netzlaufwerk S gemountet wird; die Benutzer erstellen Dateien, die die Admins/Skripte beim lokalen Zugriff vom Server aus nicht lesen können, da der absolute Pfad lĂ€nger als der Netzwerkpfad ist;
- ;
- ;
- Bei der Migration von Daten aus anderen Systemen, in denen weniger strenge EinschrÀnkungen an die PfadlÀnge bestehen, wird ein Teil davon in der neuen Umgebung ohne viel Aufwand unzugÀnglich sein;
- ;
- uswâŠ
Etwas vom Thema abweichend möchte ich anmerken, dass fĂŒr DFS-Replikation das in diesem Artikel betrachtete Problem nicht entscheidend ist und Dateien mit langen Namen erfolgreich von Server zu Server reisen (sofern Sie ansonsten alles richtig gemacht haben) ).
Ich möchte auĂerdem auf ein sehr nĂŒtzliches Tool hinweisen, das mir mehrfach geholfen hat . Auch es fĂŒrchtet sich nicht vor langen Pfaden und kann viel. Daher kann man, wenn die Aufgabe darin besteht, Daten zu kopieren/verschieben, sich dafĂŒr entscheiden. Wenn es darum geht, mit Zugriffssteuerungslisten im Dateisystem (DACL) zu arbeiten, schauen Sie in Richtung . Trotz ihres stattlichen Alters hat sie sich unter Windows 2012 R2 hervorragend bewĂ€hrt. Es wurden Anwendungsmöglichkeiten untersucht.
Ich war allerdings gespannt darauf, PowerShell im Umgang mit langen Pfaden beizubringen. Es ist fast so wie in dem alten Witz ĂŒber Iwan-Zarewitsch und Wasilissa die Wunderschöne.
Schnelle Methode
Wechseln Sie zu Linux und machen Sie sich keine Gedanken ĂŒber Windows 10/2016/2019 und aktivieren Sie die entsprechende Gruppenrichtlinieneinstellung oder optimieren Sie die Registrierung. Ich werde nicht ausfĂŒhrlich auf diese Methode eingehen, da es bereits viele Artikel zu diesem Thema im Netz gibt, zum Beispiel, .
Angesichts der Tatsache, dass in den meisten Unternehmen viele, milde gesagt, veraltete Versionen von Betriebssystemen vorhanden sind, ist diese Methode nur auf dem Papier schnell, es sei denn, Sie gehören zu den glĂŒcklichen Personen, die nur wenige Altsysteme haben und mit Windows 10/2016/2019 arbeiten.
Lange Methode
Hier sei gleich klargestellt, dass die Ănderungen das Verhalten des Windows-Explorers nicht beeintrĂ€chtigen werden, sondern die Verwendung von langen Pfaden in PowerShell-Cmdlets wie Get-Item, Get-ChildItem, Remove-Item usw. ermöglichen.
ZunÀchst aktualisieren wir PowerShell. Dies ist im Handumdrehen erledigt.
- Wir aktualisieren das .NET Framework auf mindestens Version 4.5. Das Betriebssystem sollte mindestens Windows 7 SP1/2008 R2 sein. Die aktuelle Version kann heruntergeladen werden , weitere Informationen können gelesen werden .
- und installieren das Windows Management Framework 5.1
- Wir starten den Computer neu.
FleiĂige Personen können die oben beschriebenen Schritte manuell durchfĂŒhren, wĂ€hrend die Faulen dies mit Hilfe von SCCM, Richtlinien, Skripten und anderen Automatisierungsmitteln erledigen können.
Die aktuelle Version von PowerShell kann aus der Variable $PSVersionTableabgerufen werden. Nach dem Update sollte es ungefÀhr so aussehen:

Jetzt können Sie beim Verwenden von Cmdlets Get-ChildItem und Àhnlichen statt des gewohnten Pfad verwenden LiteralPath.
Das Format der Pfade wird dabei etwas anders sein:
Get-ChildItem -LiteralPath "?C:Folder"
Get-ChildItem -LiteralPath "?UNCServerNameShare"
Get-ChildItem -LiteralPath "?UNC192.168.0.10Share"
Zur besseren Umwandlung von Pfaden aus dem gewohnten Format in das Format LiteralPath kann folgende Funktion verwendet werden:
Function ConvertTo-LiteralPath
Param([parameter(Mandatory=$true, Position=0)][String]$Path)
If ($Path.Substring(0,2) -eq "") {Return ("?UNC" + $Path.Remove(0,1))}
Else {Return "?$Path"}
}
Bitte beachten Sie, dass beim Festlegen des Parameters LiteralPath Wildcard-Zeichen nicht verwendet werden dĂŒrfen (*, ? usw.).
Neben dem Parameter LiteralPath, hat das aktualisierte PowerShell-Cmdlet Get-ChildItem den Parameter Depth, mit dem die Tiefe fĂŒr die rekursive Suche festgelegt werden kann, den ich ein paar Mal verwendet habe und mit dem ich sehr zufrieden war.
Jetzt mĂŒssen Sie keine Angst mehr haben, dass Ihr PS-Skript von seinem langen, steinigen Weg abkommt und die weit entfernten Dateien nicht erkennt. Mich hat dieser Ansatz zum Beispiel sehr unterstĂŒtzt, als ich ein Skript zum ZurĂŒcksetzen des Attributs "vorĂŒbergehend" bei Dateien in DFSR-Ordnern schrieb. Aber das ist eine andere Geschichte, ĂŒber die ich in einem anderen Artikel zu berichten versuchen werde. Ich freue mich auf interessante Kommentare von Ihnen und lade Sie ein, an der Umfrage teilzunehmen.
NĂŒtzliche Links:
Nur registrierte Benutzer können an der Umfrage teilnehmen. .
Ist das Problem der langen Pfade fĂŒr Sie relevant?
Ja
War relevant, habe es aber bereits gelöst
Stört, aber nicht erheblich
Habe nicht darĂŒber nachgedacht, scheint alles zu funktionieren
Nein
Andere (bitte in den Kommentaren angeben)
155 Benutzer haben abgestimmt. 25 Benutzer haben sich enthalten.
Quelle: habr.com
