我正在尝试将查询结果存储到变量中,并在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'语句中的表达式后缺少关闭')'。
编辑:删除了“ =”以进行查询。结果还是一样。
答案 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)不同。也许方程式符号也一样?尝试手动编写此代码,并检查是否有帮助。
如果仍然无法解决问题,请尝试削减代码,直到按预期工作为止,这样您就可以找到问题的根源。