Powershell teile von .fullname

MacGyver34

Cadet 2nd Year
Registriert
Jan. 2014
Beiträge
28
Nabend jungs,

Bin recht frisch in Powershell und such gerade verzweifelt nach einer sauberen Lösung.
Folgendes Problem:

Ich habe auf der NAS ein Order namens Regeln liegen. Hierdrin befinden sich diverse Unterordner und Dateien. Ich möchte jetzt die Dateien mit Unterordnern auflisten, aber nicht mit dem absoluten Pfad.

Der befehl:
$Source = "\\Nas\Regeln"
$Path = (get-childitem -r).fullname
write $Path

Leider liste der befehl mir wie gesagt den Pfad und die Dateien ab "\\nas " auf.
Ich brauche den Pfad aber erst ab \Regeln. Den rest soll er weglassen. Mit Split-path komm ich auch nicht weiter. Wie kann ich das am besten anstellen? Arbeitskollege meinte ich soll mir die Arbeitsumgebung direkt auf den Pfad setzten, Problem bleibt dann aber logischerweise.

Hoffe Ihr versteht was ich meine.

Mfg
Stephan
 
Was willst du denn genau haben? Mach mal ein $Path[0] | Get-Member, dann siehst du, was alles an Properties verfügbar ist. Wenn du wirklich nur \\Nas\Regeln abschneiden willst, dann kannst du auch
Code:
((Get-ChildItem -R).FullName) | Select-Object -ExpandProperty Fullname) -replace [Regex]::Escape( $Source ),""
verwenden.
 
  • Gefällt mir
Reaktionen: MacGyver34
Yuuri schrieb:
Perfekt, der Replace befehl, den hab ich gesucht. Das ist die saubere Lösung :)

Ich brauche das, da ich die Dateien die in dem Ordner sind, auf einen anderen Server kopieren muss. Da die Dateien aber immer nur teile vom ganzen Verzeichnis sind wollte ich halt erstmal auslesen welche Dateien da sind um auf dem anderen Server von den Daten ein Backup zu machen. Danach sollen die neuen erst kopiert werden.

Hoffe das ist verständlich. Kann man echt doof beschreiben.
 
Je nachdem, wie viele Unterverzeichnisse und Dateien sich in dem Verzeichnis befinden, dauert das mit der gepipeten Regex-Methode aber ganz schön lange.

Ich glaube, hiermit geht es schneller:
Code:
$Source = (Get-Item "\\Nas\Regeln" –Verbose).FullName
$Path = (Get-ChildItem "$Source\*" -Recurse).Name
$Path
 
Zurück
Oben