Benutzer mit den meisten Antworten
Aktuelles Objekt von Get-Childitem ausgeben

Frage
-
Hallo Community,
Als Powershell Anfänger stecke ich mal wieder fest. Diesmal bei der Fehlerbearbeitung. Zur Zeit bin ich bei dieser Zeile:
Get-ChildItem -Path "$Readpath" -Recurse -Filter $Filter | Move-Item -Destination "$Writepath" -Force -ErrorAction SilentlyContinue -ErrorVariable $MoveData | if ($MoveData) {Write-Host "Fehler beim verschieben"}
Gibt es eine Möglichkeit den Dateinamen der Datei, die einen Fehler hervorgerufen hat anzuhängen?
Gruß, Joejoe
Antworten
-
Moin,
Du könntest dafür entweder -PipelineVariable oder eine foreach-Schlleife verwenden.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Joejoearmany Montag, 20. Februar 2017 15:53
-
Probier mal
$Data = Get-ChildItem -Path "$Readpath" -Recurse -Filter $Filter foreach ($curfile in $Data) { try { $curfile | Move-Item -Destination "$Writepath" -ErrorAction Stop } Catch { Write-Host "Fehler beim Verschieben von $($curfile.FullName)" -ForegroundColor Red } }
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Joejoearmany Montag, 20. Februar 2017 15:54
Alle Antworten
-
Moin,
Du könntest dafür entweder -PipelineVariable oder eine foreach-Schlleife verwenden.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Joejoearmany Montag, 20. Februar 2017 15:53
-
Danke schon mal für die schnelle Antwort!
Ich habe es jetzt mit einer Foreach-Schleife ausprobiert, aber die Fehlermeldung ist dann doch arg länger, als ich gedacht habe. Anscheinend verwandelt das Move-Item die Bezeichnung vom aktuellen Objekt in die komplette Fehlermeldung...
$Data = Get-ChildItem -Path "$Readpath" -Recurse -Filter $Filter foreach ($_ in $Data) { try { $_ | Move-Item -Destination "$Writepath" -ErrorAction Stop } Catch { Write-Host "Fehler beim Verschieben von $_" -ForegroundColor Red } }
-
Probier mal
$Data = Get-ChildItem -Path "$Readpath" -Recurse -Filter $Filter foreach ($curfile in $Data) { try { $curfile | Move-Item -Destination "$Writepath" -ErrorAction Stop } Catch { Write-Host "Fehler beim Verschieben von $($curfile.FullName)" -ForegroundColor Red } }
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com- Als Antwort markiert Joejoearmany Montag, 20. Februar 2017 15:54
-
Moin,
$curfile hat keine besondere Bedeutung. $_ in einer catch-Klausel hingegen enthält nicht mehr die Pipeline- oder Schleifen-Variable, sondern das Fehlerobjekt.
foreach ($_ in $some_collection) { ... } zu schreiben ist übrigens nicht wirklich zielführend, $some_collection | foreach { ... } macht genau dasselbe.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com -
> foreach ($_ in $some_collection) { ... } zu schreiben ist übrigens nicht wirklich zielführend, $some_collection | foreach { ... } macht genau dasselbe.Ja, aber nur logisch, aber nicht technisch :-)Hängt damit zusammen, wie PoSh intern die | verarbeitet, das erste Konstrukt ist schneller. Aber bitte nicht fragen, warum genau - auch da verweise ich gerne auf Mai :-)
-
Hängt damit zusammen, wie PoSh intern die | verarbeitet, das erste Konstrukt ist schneller.
Also das war jetzt stark untertrieben... eine einfache Zuweisung von $_ an eine andere Variable, 10.000 Mal in Schleife ausgeführt, dauert mit foreach ($_ in $collection) gerade mal 11 ms und mit $collection | foreach ganze 167 ms (16x)! Und wenn man eine Collection mit 100.000 Mitgliedern generieren mag, liegen die Werte bei 54 respektive 1375 ms (25x)!
Der Mai wird immer spanender ;-)
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> http://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com