Powershell $line.StartsWith具有多个选项
我希望能够在一行中扫描两个单独的值,我该怎么做Powershell $line.StartsWith具有多个选项,powershell,powershell-3.0,Powershell,Powershell 3.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).Tri
$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
}
}
上述方法不起作用。它给了我一个意想不到的标记。显然,我所需要的只是一个“-”
if ($line.StartsWith("snl") -or $line.StartsWith("HSM1"))
显然我只需要一个“-”
if ($line.StartsWith("snl") -or $line.StartsWith("HSM1"))
为了检查变量是否以几个值中的一个值开头,正则表达式可能比菊花链
StartsWith()调用更好
if ($line -cmatch '^(snl|HSM1)')
{
...
}
^
匹配字符串的开头,(snl | HSM1)
匹配snl
或HSM1
<代码>-cmatch
进行区分大小写的匹配。如果不需要区分大小写,请使用-imatch
或仅使用-match
检查变量是否以几个值之一开头,正则表达式可能比菊花链StartsWith()
调用更好
if ($line -cmatch '^(snl|HSM1)')
{
...
}
^
匹配字符串的开头,(snl | HSM1)
匹配snl
或HSM1
<代码>-cmatch进行区分大小写的匹配。如果您不需要区分大小写,请使用-imatch
或仅使用-match
是否使用Powershell ISE?它的突出显示将让您了解此类错误的位置:)您正在使用Powershell ISE吗?它的突出显示将让您了解此类错误的位置:)