匹配关键字数组中的属性字符串

时间:2016-01-12 23:07:25

标签: regex powershell keyword scom

我正在使用SCOM脚本来根据MonitoringObjectName对警报进行排序, 由于存在具有不同名称的服务器,因此我希望将此(MonitoringObjectName)属性字符串与关键字列表进行匹配。 我想知道如何将该属性与放置在数组中的关键字匹配

$keywords = @("ABC","DEF","XYZ","GHI")
Get-SCOMAlert | ? ($_.MonitoringObjectName -like "*$keyword*"

寻找想法/提示如何做到这一点

1 个答案:

答案 0 :(得分:3)

使用这样的正则表达式匹配:

$keywords = 'ABC|DEF|XYZ|GHI'
Get-SCOMAlert | ? { $_.MonitoringObjectName -match $keywords }

或者(如果你想将关键字保留为列表):

$keywords = 'ABC', 'DEF', 'XYZ', 'GHI'
$re = $keywords -join '|'
Get-SCOMAlert | ? { $_.MonitoringObjectName -match $re }

或在嵌套Where-Object中进行通配符比较:

$keywords = 'ABC', 'DEF', 'XYZ', 'GHI'
Get-SCOMAlert | ? {
  $name = $_.MonitoringObjectName
  $keywords | ? { $name -like "*$_*" }
}