PowerShell-匹配CSV文件中的多个字符串条目

时间:2020-06-30 15:31:45

标签: powershell

我正在尝试-match CSV文件中的多个字符串。下面的CSV示例:

Hostname,IpAddress,Domain
x200apple300,1.2.3.4,contoso.local
x200banana300,1.2.3.5,contoso.local
x200orange300,1.2.3.6,contoso.local
x200kiwi300,1.2.3.7,contoso.local

示例代码:

$csv = Import-Csv "C:\Files\csvExample.csv"
$csv | Where-Object {$_.Hostname -match "kiwi"}
# All OK. Now match multiple hostnames.

$csv | Where-Object {$_.Hostname -match "kiwi", "orange"}
# Not working.

$csv | Where-Object {$_.Hostname -contains "apple", "banana"}
# Not working

在此示例中,如何匹配多个主机名?我在做什么错了。

2 个答案:

答案 0 :(得分:3)

Match使用正则表达式,因此您可以使用or运算符过滤多个值。

$csv = Import-Csv "C:\Files\csvExample.csv"
$csv | Where-Object {$_.Hostname -match "kiwi|orange|banana"}

答案 1 :(得分:3)

-match运算符在右侧需要一个正则表达式。我不确定$Value -match $A, $B是什么意思;我看不到它没有记录,而且似乎总是从我的输入中返回false。

$_.Hostname -contains "apple", "banana"向后。您需要{$_.Hostname -in "apple", "banana"}还是{"apple", "banana" -contains $_.Hostname}