IF语句中的意外令牌

时间:2018-12-19 17:59:25

标签: powershell

我正在尝试将查询结果存储到变量中,并在IF条件下使用它。但是,它在“ eq”和“)”中的意外令牌不断失败。

我在做什么错了?

我验证了所有引号均已关闭,并且在ISE中代码看起来很干净。 它抱怨If语句中缺少“)”,但它在那里。

$ServerName='10.x.x.x'
$Database = 'MyDB'
$Value = 'Y'

$QueryResult =   Invoke-Sqlcmd -ServerInstance $ServerName -Database $Database -Query  "Select value from QcTable where appid=5;"

if ($QueryResult -eq $Value) {
 <<do that>>>
}
else {
  <<do this>>
 }

如果程序阻塞,则预期程序会进入内部。

但是会引发错误: 表达式或语句中出现意外的标记“ eq” 在'If'语句中的表达式后缺少关闭')'。

编辑:删除了“ =”以进行查询。结果还是一样。

1 个答案:

答案 0 :(得分:2)

我不确定100%,因为我无法在计算机上重新创建您遇到的异常,但是我认为问题出在这里:

-Query = "Select value from QcTable where appid=5;"
       ^
       |

这可能会导致奇怪的行为,请尝试将其删除并检查是否有帮助:)

编辑:

由于无济于事,所以还有另一个建议。

下面的代码按预期工作:

$ServerName='10.x.x.x'
$Database = 'MyDB'
$Value = 'Y'

$QueryResult = echo 'Y'

if ($QueryResult -eq $Value) {
   echo $Value
   echo $ServerName
}
else {
   echo $Database
}

输出:

Y
10.x.x.x

请尝试,如果工作原理相同,如果可行,那么我敢打赌,您已经从pdf复制了代码,并且其中一个字符有问题,例如:

$val = 1 ∕ 2

给出错误:

  

[PowerShell]表达式或语句中出现意外的标记'∕'。

因为∕是Unicode字符:U + 2215(DIVISION_SLASH),它与普通斜杠U + 002F(SLASH)不同。也许方程式符号也一样?尝试手动编写此代码,并检查是否有帮助。

如果仍然无法解决问题,请尝试削减代码,直到按预期工作为止,这样您就可以找到问题的根源。