首页 > 解决方案 > 为什么在使用 -notMatch 条件验证参数时会满足此条件?

问题描述

我正在使用 Powershell 验证传递到发布管道的参数。我作为管道变量传递的参数是val1. 下面是我的代码:

if ("$(Value)" -notMatch "val1" -or "$(Value)" -notMatch "val2"){
  Write-Host "$(Value) must be val1 || val2"
  Write-Host "Value of param: "$(Value)""
  exit 1
}

当我打印我的价值是 states val1。为什么会满足这个条件?我想也许是因为它区分大小写,但是即使我修改条件以捕捉确切的情况,它仍然被满足。

标签: azurepowershelltestingazure-pipelinesassertion

解决方案


如果您的变量应该只有val1or val2,则必须-and改用-or

if ("$(Value)" -notMatch "val1" -and "$(Value)" -notMatch "val2"){
  Write-Host "$(Value) must be val1 || val2"
  Write-Host "Value of param: "$(Value)""
  exit 1
}

推荐阅读