从关键字数组中匹配 属性 字符串
Matching a property string from an array of keywords
我正在开发一个 SCOM 脚本来根据 MonitoringObjectName 对警报进行排序,
由于有不同名称的服务器,我想将此 (MonitoringObjectName) 属性 字符串与关键字列表进行匹配。
我想知道如何将 属性 与数组
中的关键字相匹配
$keywords = @("ABC","DEF","XYZ","GHI")
Get-SCOMAlert | ? ($_.MonitoringObjectName -like "*$keyword*"
正在寻找 ideas/hints 如何做到这一点
要么像这样使用正则表达式匹配:
$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 "*$_*" }
}
我正在开发一个 SCOM 脚本来根据 MonitoringObjectName 对警报进行排序, 由于有不同名称的服务器,我想将此 (MonitoringObjectName) 属性 字符串与关键字列表进行匹配。 我想知道如何将 属性 与数组
中的关键字相匹配$keywords = @("ABC","DEF","XYZ","GHI")
Get-SCOMAlert | ? ($_.MonitoringObjectName -like "*$keyword*"
正在寻找 ideas/hints 如何做到这一点
要么像这样使用正则表达式匹配:
$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 "*$_*" }
}