$ line.StartsWith有多个选项

时间:2016-11-25 18:19:13

标签: powershell powershell-v3.0

我希望能够在一行中扫描两个单独的值,我该怎么做?

$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
    }
}

以上不起作用。它给了我一个意想不到的代币。

2 个答案:

答案 0 :(得分:3)

为了检查变量是否以多个值之一开始,正则表达式可能比菊花链式StartsWith()调用更好。

if ($line -cmatch '^(snl|HSM1)')
{
    ...
}

^匹配字符串的开头,(snl|HSM1)匹配snlHSM1-cmatch执行区分大小写的匹配。如果您不需要区分大小写,请使用-imatch-match

答案 1 :(得分:2)

显然我只需要一个' - '

if ($line.StartsWith("snl") -or $line.StartsWith("HSM1"))