我希望能够在一行中扫描两个单独的值,我该怎么做?
$file = Get-Content "D:\path\tmp\certlist.txt"
foreach ($line in $file)
{
if ($line.StartsWith("snl") or $line.StartsWith("HSM1"))
{
$baseKey = "app.swift.snl."
$profileName = $line.Substring(0,13).TrimEnd()
$certType = $line.Substring(29,10).TrimEnd()
$renewalDate = Get_Unixtime $line.Substring(42,11).TrimEnd()
$expiryDate = Get_Unixtime $line.Substring(58,11).TrimEnd()
Send_Zabbix ($baseKey + $profileName + "." + $certType + ".renewaldate") $renewalDate
Send_Zabbix ($baseKey + $profileName + "." + $certType + ".expirydate") $expiryDate
}
}
以上不起作用。它给了我一个意想不到的代币。
答案 0 :(得分:3)
为了检查变量是否以多个值之一开始,正则表达式可能比菊花链式StartsWith()
调用更好。
if ($line -cmatch '^(snl|HSM1)')
{
...
}
^
匹配字符串的开头,(snl|HSM1)
匹配snl
或HSM1
。 -cmatch
执行区分大小写的匹配。如果您不需要区分大小写,请使用-imatch
或-match
。
答案 1 :(得分:2)
显然我只需要一个' - '
if ($line.StartsWith("snl") -or $line.StartsWith("HSM1"))