Просто уточнить ответ Адама. Вы If
заявление не работает, как предполагалось, поскольку PowerShell видел только три условия, которого не намерены
if($var1 -match "6.1.?" -or "6.2.?" -or "6.3.?")
if(($var1 -match "6.1.?") -or ("6.2.?" -or "6.3.?"))
Две строки выше функции же. Чтобы разбить вторую операцию ("6.2.?" -or "6.3.?")
немного больше: строка с ненулевой длиной, преобразованная в boolean, всегда будет $true
. Сравнение двух строк, отличных от нуля, с -or
всегда будет возвращаться $true
. Первый пункт ($var1 -match "6.1.?")
в вашем примере - $false
. If($true -or $false)
- это, по сути, то, что ваш If
заявление сводится к тому, что, опять же, всегда будет возвращаться $true
. Ответ Adams показывает, как получить логику, которую вы ищете
if($var1 -match "6.1.?" -or $var1 -match "6.2.?" -or $var1 -match "6.3.?")
if(($var1 -match "6.1.?") -or ($var1 -match "6.2.?") -or ($var1 -match "6.3.?"))
Оба вышеуказанных утверждения одинаковы. Второй помогает понять логику. Для получения дополнительной информации см. about_Logical_Operators. Вам нужны только скобки, когда логика не действует так, как вы этого хотите.