2016-07-07 13 views
1

Ich habe ein Skript, das intensiv mit CSV-Dateien arbeitet. In diesen Dateien sind verschiedene Arten von Daten gespeichert. Irgendwann möchte ich Einträge aus solchen Dateien löschen.PowerShell: Löschen mehrerer Einträge aus einer CSV-Datei

Wenn ich einen einzelnen Eintrag löschen möchten, ich mache es wie folgt aus:

$csv = Import-Csv -Path $path -Delimiter ";" 
$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Single 
$csv = $csv -notmatch $selectedEntry 
$csv | Export-Csv $path -NoTypeInformation -Delimiter ";" 

Dieser Ansatz Arbeit recht stabil, aber wenn ich den Parameter -OutputMode von Single auf mehrere ändern, wird die folgende Zeile funktioniert nicht mehr:

$csv = $csv -notmatch $selectedEntry 

Warum ist das so? Wie kann ich mehrere Einträge aus einer CSV-Datei löschen?

+0

Sind '$ selectedEntry' und' $ item' die gleiche Variable? –

+0

Tut mir leid, yep, '$ item' soll' $ selectedEntry' sein, ich habe es in der Frage bearbeitet. Danke für die schnelle Antwort! Der Operator NotContains funktioniert einwandfrei. –

Antwort

0

Sie sollten dies mit einer Array-Differenzierung Where-Object Klausel tun können.

$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Multiple 
$filteredCsv = $csv | where { $selectedEntry -notcontains $_ } 

Diese iteriert über jedes Element des Arrays $csv und erzeugen nur diejenigen, die nicht in den $selectedEntry Array sind.