pat.bat
Goto Top

PowerShell - Import-CSV Where Object

Hallo zusammen,

ich versuche gerade beim Import über ein Where Object die Daten zu filten, die ich haben möchte. Dafür lese ich am Anfang des Skripts eine CSV datei mit einer Spalte wo Namen drin stehen.

Nun habe ich nach vielen Probieren, das Problem, das egal was ich als Filter nehme er die Daten nicht zieht. Google hat mir leider bis jetzt auch noch kein lösendes Ergebnis liefern können.

$ZE = import-csv "H:\Entwicklung\Zahllaufkalender\Zahllaufkalender\Zahllaufkalender\bin\Debug\Config\Zahlungsempfaenger.csv" -delimiter ";"  

$datasets = $(import-csv $PfadText1 -delimiter ";" | Where-Object { $_."ZAHLUNGSEMPFAENGER" -in $ZE })  
foreach($dataset in $datasets) 
{
    $dataset | export-csv -path "$TempPath$($dataset.'ZAHLUNGSEMPFAENGER').csv" -Append -Delimiter ";" -Encoding UTF8 -NoTypeInformation -Force  
}

wo liegt das Problemchen?

kurzer Nachtrag: Pfadtext1 ist eine csv Datei mit ca. 3000 Einträgen, wovon ich allerdings nur einen geringen Anteil brauche. In dieser Datei gibts dann die Spalte "ZAHLUNGSEMPFAENGER"

Vielen Dank für eure Zeit.

Content-Key: 553684

Url: https://administrator.de/contentid/553684

Printed on: April 24, 2024 at 00:04 o'clock

Mitglied: 143127
Solution 143127 Mar 02, 2020 updated at 11:59:28 (UTC)
Goto Top
Where-Object { $_."ZAHLUNGSEMPFAENGER" -in $ZE }
Hier fehlt die Angabe der Spalteneigenschaft im Object $ZE, sonst vergleicht er ja das ganze Object anstatt nur den Inhalt einer Spalte.
Also bspw.
Where-Object { $_."ZAHLUNGSEMPFAENGER" -in $ZE.Zahlungsempfaenger }  
Member: Pat.bat
Pat.bat Mar 02, 2020 at 12:05:06 (UTC)
Goto Top
Ah ok,

hatte angenommen, weil ich keine Kopfzeile habe und nur diese eine Spalte, das er sich das dann aus der ersten zieht.
Habe nun eine Kopfzeile hinzugefügt und das Skript so abgeändert wie du beschrieben hast und nun funktioniert es wie es soll.

Danke face-smile
Mitglied: 143127
Solution 143127 Mar 02, 2020 updated at 12:10:05 (UTC)
Goto Top
Zitat von @Pat.bat:
hatte angenommen, weil ich keine Kopfzeile habe und nur diese eine Spalte, das er sich das dann aus der ersten zieht.
Wenn keine Überschrift angegeben ist und du nicht mit dem Parameter -Header beim Import-CSV CMDLet eine vorgibst wird automatisch die erste Zeile als Name der Spalte genommen, nur noch mal als Hinweis!
Wenn deine Datei also keine Überschrift hat und du trotzdem die Spalte benennen willst gebe den Namen der Spalte im Parameter -Header an, so kann man sich auch eine Überschrift in der Datei sparen wenn man möchte/will/muss.