$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”
答案 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 =不匹配(检查)