我有一个与csv文件密切配合的脚本。在这些文件中存储不同类型的数据。在某些时候,我想删除这些文件中的来源。
当我想删除单个条目时,我会这样做:
$csv = Import-Csv -Path $path -Delimiter ";"
$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Single
$csv = $csv -notmatch $selectedEntry
$csv | Export-Csv $path -NoTypeInformation -Delimiter ";"
这种方法非常稳定但是如果我将参数-OutputMode从Single更改为Multiple,则以下行不再起作用:
$csv = $csv -notmatch $selectedEntry
为什么会这样?如何从csv文件中删除多个enys?
答案 0 :(得分:0)
您应该可以使用数组差异Where-Object
子句来执行此操作。
$selectedEntry = $csv | Out-GridView -Title $title -OutputMode Multiple
$filteredCsv = $csv | where { $selectedEntry -notcontains $_ }
这会遍历$csv
数组的每个元素,并且只生成那些不在$selectedEntry
数组中的元素。