none
Dynamischer Pfad in Powershell weiterverarbeiten RRS feed

  • 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?

    Montag, 18. Mai 2020 11:18

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''

    Montag, 18. Mai 2020 13:52
  • > $Path = gci -r -Directory \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad |  select -Last 1 | |select fullname
     
    select -expandproperty fullname
     
    Montag, 18. Mai 2020 12:57

Alle Antworten

  • > $Path = gci -r -Directory \\domäne\Pfad\mehrpfad\bla\bla\bla\ende-pfad |  select -Last 1 | |select fullname
     
    select -expandproperty fullname
     
    Montag, 18. Mai 2020 12:57
  • 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''

    Montag, 18. Mai 2020 13:52

  • Übrigens: Du hast Dir einen netten Account-Namen gewählt! ;-) :-D  Erstellst Du jetzt für jede Frage einen neuen?  :-P  :-D ;-)

    Das Phänomen ist tatsächlich so verbreitet, dass ich vermute, das Registrierungs-Formular muss total missverständlich sein an diesem Punkt...

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Dienstag, 19. Mai 2020 06:15
  • 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''

    Dienstag, 19. Mai 2020 07:26