functionstrut
Goto Top

(PS) Pfad zu lang bei move-item?

Hallo,

ich habe irgendwie ein ganz simples problem face-confused

einfach folgender versuchsaufbau:

$a = "C:\Ordner11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\test.txt"  
$b = "C:\Ordner22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222\test.txt"  
move-item -Path $a -Destination $b -force -WhatIf
sagt er mir:

move-item : Der Pfad "C:\Ordner111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111  
11111111111111111111111111111111111111111111111111111111111111111111111111111\test.txt" kann nicht gefunden werden, da er nicht vorhanden ist.  
In Zeile:3 Zeichen:1
+ move-item -Path $a -Destination $b -force -WhatIf
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Ordner111111...111111\test.txt:String) [Move-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

Die Datei ist aber über den Explorer ganz normal zu öffnen, umbenennen etc.

wie kann das sein?

Content-Key: 363565

Url: https://administrator.de/contentid/363565

Printed on: April 25, 2024 at 07:04 o'clock

Mitglied: 135333
135333 Feb 04, 2018 at 18:32:22 (UTC)
Goto Top
Es ist bekannt das die Powershell bei 260 Zeichen die Segel streicht face-wink. Für den Explorer hast du in deinem OS sicher schon das Limit aufgehoben.

Gruß snap
Member: Penny.Cilin
Penny.Cilin Feb 04, 2018 updated at 18:45:24 (UTC)
Goto Top
Zitat von @135333:

Es ist bekannt das die Powershell bei 260 Zeichen die Segel streicht face-wink. Für den Explorer hast du in deinem OS sicher schon das Limit aufgehoben.
Hm, das wusste ich jetzt nicht. Ich finde das allerdings SEHR schwach. Dann NTFS erlaubt eigentlich Pfadlängen im 5-stelligen Bereich.

File System Functionality Comparison, siehe Tabelle Limits

Gruß snap

Gruss Penny
Member: functionstrut
functionstrut Feb 04, 2018 at 18:48:21 (UTC)
Goto Top
ne oder? gibts keine möglichkeit?

und wie sieht es mit cmd aus?
Mitglied: 135333
135333 Feb 04, 2018 updated at 19:10:50 (UTC)
Goto Top
Dat ist jetzt aber so alt wie ranziger Käse face-smile

\\?\

Lesen:
https://blogs.msdn.microsoft.com/bclteam/2007/02/13/long-paths-in-net-pa ...
Member: functionstrut
functionstrut Feb 04, 2018 at 20:21:53 (UTC)
Goto Top
das habe ich schon gefunden gehabt und auch gerade nochmals probiert aber irgendwie mag das nicht funktionieren.
Member: Pedant
Pedant Feb 06, 2018 at 10:39:57 (UTC)
Goto Top
Hallo functionstrut,

ich finde es auch etwas irritierend, dass Windows als Hochregallager mit kurzer Haushaltsleiter ausgeliefert wird.
Wie snapdragon schon schrieb, kann man für den Explorer diese Limitierung abschalten.
Ich mach das allerdings nicht, sondern sorge dafür, dass zumindest auf meinen Fileserver die Pfadlängen kurz genug sind. (Regelmäßiger, automatischer Scan und manuelles Umbenennen)
Das mache ich, damit die Daten auch außer Haus problemlos genutzt werden können, da die Limtierung per Default aktiv ist.

Ein Workaround beim Kopieren ist die Verwendung von subst.
Damit lassen sich Pfade "verkürzen".
subst x: "C:\Temp\Mein Ordner"
Das stellt den angegebenen Pfad als Laufwerksbuchstabe zur Verfügung.
subst x: /d
Das hebt die Zuordung wieder auf.
Subst ist also ähnlich wie net use, aber funktioniert mit Pfaden auch ohne Freigaben.

Gruß Frank
Member: Penny.Cilin
Penny.Cilin Feb 06, 2018 updated at 10:54:17 (UTC)
Goto Top
Zitat von @Pedant:

Subst ist also ähnlich wie net use, aber funktioniert mit Pfaden auch ohne Freigaben.
Subst geht auch nicht über das Netz, sondern bleibt lokal.

Gruß Frank

Gruss Penny
Member: Pedant
Pedant Feb 06, 2018 at 11:54:56 (UTC)
Goto Top
Hallo Penny,

Zitat von @Penny.Cilin:
Subst geht auch nicht über das Netz, sondern bleibt lokal.
Wie meinst Du das?

subst x: \\Server\Freigabe
funktioniert einwandfrei.

Gruß Frank
Member: Penny.Cilin
Penny.Cilin Feb 06, 2018 at 12:25:02 (UTC)
Goto Top
Zitat von @Pedant:

Hallo Penny,

Zitat von @Penny.Cilin:
Subst geht auch nicht über das Netz, sondern bleibt lokal.
Wie meinst Du das?

subst x: \\Server\Freigabe
funktioniert einwandfrei.
Ja das funktioniert einwandfrei, keine Frage.
Nur lese Dich mal ein bzgl. des Befehles
net
Der Befehl
subst
leitet lokal ein Verzeichnis zu einem Laufwerksbuchstaben um.
Das gab es schon zu DOS-Zeiten. So konnte man die maximale Pfadlänge lokal anpassen, indem man bestimmte Pfade in Laufwerke umbiegt.

Gruß Frank

Gruss Penny
Member: Pedant
Pedant Feb 06, 2018 at 13:18:15 (UTC)
Goto Top
Hallo Penny,

ich weiß nicht genau was Du mir sagen möchtest.

So konnte man die maximale Pfadlänge lokal anpassen.
Klar lokal, was denn sonst?
(Die Aufgabenstellung des TO ist auch lediglich eine lokale Aufgabe.)

Klar leitet subst nur lokal um, also auf dem Rechner, auf dem es ausgeführt wird.
Das tut net use x: \\Server\Freigabe aber auch.
Ich sehe da keinen Unterschied und keinen Anlass zu sagen "Subst ginge nicht über das Netz".
Okay, zugegeben, bildlich gesehen geht es nicht über das Netz, sondern bedient sich des Netzes.

Im Gegensatz zu "lokal" wäre eine Verkürzung per Freigabe anzusehen.
So könnte ein langer Pfad auf dem Server als kürzerer UNC-Pfand zur Verfügung gestellt werden.
Mit
net share kurz="C:\Temp\Mein langer Ordner"
wird aus
"C:\Temp\Mein langer Ordner"
bzw.
"\\Server\c$\Temp\Mein langer Ordner"
dann
\\Server\kurz
und mit
net use x: \\Srever\kurz oder auch mit subst x: \\Server\kurz
würde es optional, lokal nochmal kürzer werden
X:\

Hattest Du mit dem Unterstreichen von "lokal" den unterschiedlichen Lösungsansatz von "net share" und "net use"/"subst" gemeint?

Gruß Frank
Member: Penny.Cilin
Penny.Cilin Feb 06, 2018 at 13:41:47 (UTC)
Goto Top
Zitat von @Pedant:

subst x: \\Server\kurz
Da funktioniert NICHT!
Mit SUBST kannst Du KEINE Netzwerkressourcen mappen, sondern nur lokale Pfade.
Schau Dir dazu die Hilfe
subst /?
an.

Hattest Du mit dem Unterstreichen von "lokal" den unterschiedlichen Lösungsansatz von "net share" und "net use"/"subst" gemeint?
Richtig. Net Share und Net Use gehen über das Netzwerk, während ein subst lokal auf dem verwendeten Rechner bleibt, bzw. NUR LOKAL verwendet werden kann.
Wenn Du einen lokalen Pfad als Laufwerk mappen willst, nehme SUBST.
Wenn Du eine Freigabe als Laufwerk mappen willst, nehme NET USE

Gruß Frank

Gruss Penny
Member: Pedant
Pedant Feb 06, 2018 at 13:57:23 (UTC)
Goto Top
Hallo Penny,

auch dick und rot wird es nicht richtiger.

subst x: \\Server\kurz funktioniert.
Probier es doch einfach mal, statt auf subst /? zu beharren.

Einschränkend ist nur zu erwähnen, dass man bei subst keine Anmeldeinformationen als Parameter mitgeben kann.
Man muss also die Zugriffsrechte für die Freigabe haben oder sie sich zuvor mit
net use \\Server\ipc$ /u:BerechtigterUser Kennwort
verschaffen, sofern man denn für "BerechtigterUser" und für "Kennwort" etwas Passendes einzugeben weiß.

Gruß Frank
Member: Penny.Cilin
Penny.Cilin Feb 06, 2018 at 14:25:23 (UTC)
Goto Top
Hallo Frank,

das stimmt nicht ganz. Nimm folgendes Beispiel:

Richte auf einem Server die Freigabe kurz ein:
net share kurz="C:\Temp\Mein langer Ordner"  
Setze die Berechtigungen.
Jetzt ruft Du rufst Du auf einem Client mittels
subst x: \\server\kurz
die Freigabe kurz auf.

Das sollte eigentlich NICHT funktionieren. Denn subst kann nicht auf eine Freigabe auf einem anderen Rechner im Netzwerk zugreifen.

Ich habe lokal einige Verzeichnisse, welche ich lokal mittels subst ein Laufwerksbuchstaben verpasse.
Da benötige ich kein net use.

Gruss Penny
Member: Pedant
Pedant Feb 06, 2018 at 14:39:37 (UTC)
Goto Top
Hallo Penny,

Das sollte eigentlich NICHT funktionieren. Denn subst kann nicht auf eine Freigabe auf einem anderen Rechner im Netzwerk zugreifen.
Es kann es aber doch !!!

Wie wäre es wenn Du das von Dir Vorgeschlagene mal ausprobierst?
Ein theortisierendes "das sollte nicht funktionieren", nur weil es so im Readme steht, ist mir echt egal.
Es funktioniert - hier und heute.

Gruß Frank