Powershell Problem mit System.Collections.ArraylList?

1 Antwort

Dein Get-ChiIdItem -Aufruf als Array zu binden und An die Pipe zu übergeben macht wenig Sinn. Wichtig ist Dass was Du aus der Pipe raus schickst, innerhalb eier Arraydefinition erfolgt. ...sonst Wird versucht bei einem einzelnen Objekt, dieses in einzelne Felder zu zerlegen, was natürlich in die Hose geht

das geht:

[System.Collections.ArrayList]$TableData =
    1..3 |%{
        [PSCustomObject]@{
            Number  = $_
            Eiertanz = 'QuickStep{0}'-f $_ }
        }
$TableData |fl

das nicht...

(Wichtig ist Dass was Du aus der Pipe raus schickst, innerhalb einer Arraydefinition erfolgt. ...sonst wird versucht bei einem einzelnen Objekt, dieses in einzelne Felder zu zerlegen, was natürlich in die Hose geht):

[System.Collections.ArrayList]$TableData =
  1 |%{
    [PSCustomObject]@{
      Number = $_
      Eiertanz = 'QuickStep{0}'-f $_ }
    }
$TableData |fl

richtig:

#die richtige  Klammer am richtigen Platz macht  es
[System.Collections.ArrayList]$TableData = @(
    1 |%{
        [PSCustomObject]@{
            Number  = $_
            Eiertanz = 'QuickStep{0}'-f $_ }
        }
)
$TableData |fl

für Dein gci...:

#übergib  die  gesamte Pipe als Element eines Arrays an Arraylist!
[System.Collections.ArrayList]$TableData = @(
                    Get-ChildItem  'einsamedatei.txt' -File|
                        ForEach-Object `
                           -Begin {$i=0} `
                           -Process {
                                $i++
                                write-host "Datei-Nr.: $i -- " $_.Name -fo green
                                  #hier wird  das  neu geschaffene Objekt ausgegeben
                                [PSCustomObject]@{
                                    CopyFullPath     = (($_.FullName -split '\\') | Select -Last 3) -join '\'
                                    CopyFolder     = (($_.FullName -split '\\') | Select -Last 3 | Select -SkipLast 1) -join '\'
                                }
                           }
 #hier  wird  die Arraydefinition abgeschlossen
)


#mal anzeigen
$TableData|fl
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

DNSxxx 
Fragesteller
 14.07.2022, 16:18

Hallo.

Erstmal Danke für die super verständliche Erklärung.

Hab viel probiert, aber auf eine falsch gesetzte Klammer bin ich nicht gekommen.

Aber mit deinen Beispielen ist mir auch klar das es vorher "Blödsinn" war.

Nochmals DANKE für deine riesige Hilfsbereitschaft.

1