Where-object $ _匹配多个标准

时间:2014-05-27 18:20:41

标签: powershell

$data|where-object{$_.Name -eq "$serverName.domain.com"}|select-object -Property Description1, Version | where-object{$_.Description1 -match "bnx2x" -or "be2net"} | %{"{0}" -f $_.Version}

所以我正在尝试获取版本号。但是,Description1可以有两个我想要查找的名称。我已经将我的代码用于匹配一个字符串,但我似乎无法找到正确的语法来匹配多个字符串与“-or”

3 个答案:

答案 0 :(得分:11)

这应该做你想要的,并且比你原来的要短一些。

$data | Where-Object{
  $_.Name -eq "$serverName.chrobinson.com" -and (
     $_.Description1 -match "bnx2x" -or
     $_.Description1 -match "be2net"
  )
} | Select-Object -expand version

你真的需要$_.Description1 -match "bnx2x" -or $_.Description1 -match "be2net",但我认为这比你的阅读更容易阅读。

答案 1 :(得分:10)

可替换地:

$data|
where-object{ ($_.Name -eq "$serverName.chrobinson.com") -and
              ($_.Description1 -match 'bnx2x|be2net') } | 
select -ExpandProperty Version

答案 2 :(得分:0)

在寻找答案时找到了这个。找到了一些非常奇怪的东西......

拿这个代码

if ($myName -match "Bill*|Will*")
{
    write-host "-----Match"
}
else
{
    write-host "-----Nope"
} 

$ myName =

billy =匹配(检查)

willy =匹配(检查)

愚蠢=不匹配(检查)

bil =匹配(?????)< ----什么??

bi =不匹配(检查)