Where-object $ _匹配多个标准

run*_*cmd 4 powershell

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

所以我想获取版本号.但是,Description1可以有两个我想要查找的名称.我已经让我的代码只能匹配一个字符串,但我似乎无法找到正确的语法来匹配多个字符串与"-or"

The*_*ian 11

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

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

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


mjo*_*nor 11

或者:

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