Benutzer mit den meisten Antworten
Dynamischer Pfad in Powershell weiterverarbeiten

Frage
-
Hallo zusammen,
ich möchte gerne in einem Verzeinis jeweils auf den neusten Ordner Daten auslesen und dann sortieren. Kriege aber Probleme mit dem Pfad. Konkret seht ihr unten was ich mache. Die Variable $Path funktioniert, kann aber im zweiten Teil nicht verarbeitet werden. Beide Teile funktionieren einzeln, aber nicht im zusammenspiel (beim zweiten Teil natürlich nur mit UNC Pfad).
#Pfad auslesen
$Path = gci -r -Directory \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad | select -Last 1 | |select fullname
#hier lese ich alle PDFs aus, schaue mir die ersten vier Zeichen an, sortiere sie nach den prefix und mache dann eine #zusammenstellung nach prefix
Get-ChildItem -path $Path | where-object {$_.extension -eq ".pdf" } | select fullname, basename, Extension, @{Name="Prefix"; Expression={$_.basename.substring(0,4)}} | sort Prefix | Group-Object prefix | select name,count
Fehlermeldung kommt:
Get-ChildItem : Der Pfad "H:\@{FullName=\\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad}" kann nicht gefunden werden, da er nicht vorhanden ist.
Es ist egal ob ich mit -UNC oder Laufwerkbuchstaben arbeite..
hat hier jemand eine ahnung wie ich das lösen kann?
Antworten
-
Hallo Dynamischer Pfad in Variable und Willkommen im Deutschen Microsoft Windows Powershell Forum.
Wenn Du hier Code, Konsolen-Output, Fehlermeldungen oder Beispieldaten postest, formatier das doch bitte als Code: How to Use the Code Feature in a TechNet Forum Post Du brauchst auch keinen neuen Beitrag erstellen, Du kannst Deinen bereits existierenden erneut bearbeiten.
Was Dir Martin hier so knackig mitteilen möchte ist, dass Powershell mit Objekten arbeitet, die Eigenschaften haben. Dein Code sollte also entweder so:
$Path = Get-ChildItem -Path \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad -Recurse -Directory | Select-Object -Last 1 -ExpandProperty fullname Get-ChildItem -path $Path -Filter '*.pdf' | Sort-Object -Property BaseName | Select-Object fullname, basename, Extension, @{Name = "Prefix"; Expression = { $_.basename.substring(0, 4) } } | Group-Object prefix | Select-Object -Property name, count
... oder so ...
$Path = Get-ChildItem -Path \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad -Recurse -Directory | Select-Object -Last 1 -Property fullname Get-ChildItem -path $Path.FullName -Filter '*.pdf' | Sort-Object -Property BaseName | Select-Object fullname, basename, Extension, @{Name = "Prefix"; Expression = { $_.basename.substring(0, 4) } } | Group-Object prefix | Select-Object -Property name, count
... aussehen.
Im ersten Beispiel extrahierst Du die Eigenschaft "Fullname" einfach als String und benutzt sie so der nächsten Code-Zeile. Im Zweiten Beispiel belässt Du das von Select-Object gelieferte Object wie es ist und greifst in der Nächsten Code-Zeile direkt auf die benötigte Eigenschaft "FullName" zu. ;-)
Übrigens: Du hast Dir einen netten Account-Namen gewählt! ;-) :-D Erstellst Du jetzt für jede Frage einen neuen? :-P :-D ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Montag, 18. Mai 2020 13:55
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:37
-
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:38
Alle Antworten
-
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:38
-
Hallo Dynamischer Pfad in Variable und Willkommen im Deutschen Microsoft Windows Powershell Forum.
Wenn Du hier Code, Konsolen-Output, Fehlermeldungen oder Beispieldaten postest, formatier das doch bitte als Code: How to Use the Code Feature in a TechNet Forum Post Du brauchst auch keinen neuen Beitrag erstellen, Du kannst Deinen bereits existierenden erneut bearbeiten.
Was Dir Martin hier so knackig mitteilen möchte ist, dass Powershell mit Objekten arbeitet, die Eigenschaften haben. Dein Code sollte also entweder so:
$Path = Get-ChildItem -Path \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad -Recurse -Directory | Select-Object -Last 1 -ExpandProperty fullname Get-ChildItem -path $Path -Filter '*.pdf' | Sort-Object -Property BaseName | Select-Object fullname, basename, Extension, @{Name = "Prefix"; Expression = { $_.basename.substring(0, 4) } } | Group-Object prefix | Select-Object -Property name, count
... oder so ...
$Path = Get-ChildItem -Path \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad -Recurse -Directory | Select-Object -Last 1 -Property fullname Get-ChildItem -path $Path.FullName -Filter '*.pdf' | Sort-Object -Property BaseName | Select-Object fullname, basename, Extension, @{Name = "Prefix"; Expression = { $_.basename.substring(0, 4) } } | Group-Object prefix | Select-Object -Property name, count
... aussehen.
Im ersten Beispiel extrahierst Du die Eigenschaft "Fullname" einfach als String und benutzt sie so der nächsten Code-Zeile. Im Zweiten Beispiel belässt Du das von Select-Object gelieferte Object wie es ist und greifst in der Nächsten Code-Zeile direkt auf die benötigte Eigenschaft "FullName" zu. ;-)
Übrigens: Du hast Dir einen netten Account-Namen gewählt! ;-) :-D Erstellst Du jetzt für jede Frage einen neuen? :-P :-D ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Montag, 18. Mai 2020 13:55
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:37
-
Übrigens: Du hast Dir einen netten Account-Namen gewählt! ;-) :-D Erstellst Du jetzt für jede Frage einen neuen? :-P :-D ;-)
Evgenij Smirnov
-
Das Phänomen ist tatsächlich so verbreitet, dass ich vermute, das Registrierungs-Formular muss total missverständlich sein an diesem Punkt...
Das muss dann aber neueren Datums sein. Wir beide haben's ja auch hinbekommen. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''