我正在尝试编写一个单行脚本来接受一个csv文件,然后导出每个没有$ file.Source的行,以" 10开头。"以" 10开始的$ file.Destination。"。这是我到目前为止的代码:
Import-Csv $importFile | where -NotMatch {$_.Source.StartsWith("10.1") -and $_.Destination.StartsWith("10.")} Export-Csv $exportFile
答案 0 :(得分:0)
这听起来像是在Where-Object
子句的上下文中使用-not
运算符的好例子。
例如:
Import-Csv $importFile |
where {-not $_.Source.StartsWith("10.") -and -not $_.Destination.StartsWith("10.")} |
Export-Csv $exportFile
如果您的Source
和Destination
列可能会使用数值数据类型,则可以在调用.ToString()
之前调用.StartsWith()
的值。
Import-Csv $importFile |
where {-not $_.Source.ToString().StartsWith("10.") -and -not $_.Destination.ToString().StartsWith("10.")} |
Export-Csv $exportFile
提示:如果您想在导出CSV文件之前查看Where-Object
过滤的结果,可以将Export-Csv $exportFile
替换为ConvertTo-Csv
。该cmdlet只返回原始CSV字符串。