Powershell - Invoke-SQLCmd:如何检查结果

时间:2017-09-15 09:27:18

标签: powershell invoke-sqlcmd

我正在创建一个脚本,它将在部署之前在Dev服务器上执行tSQLt Unit测试,QA可以继续 - 这是持续集成的一部分......

这是我的Powershell脚本:

param(
[Parameter(Mandatory=$true)][string]$DatabaseName
, [Parameter(Mandatory=$true)][string]$UserName
, [Parameter(Mandatory=$true)][string]$Password

$filelocation = "c:\jenkinsdrops"
$DatabaseServer = "Server\DEV"

Invoke-Sqlcmd `
-Query "EXEC tSQLt.RUNALL" `
-ServerInstance $DatabaseServer `
-Database $DatabaseName `
-U $UserName `
-Password $Password `
-Verbose 4>"$Filelocation\$DatabaseName tSQLt Report.txt"`

控制台中的输出是:

enter image description here

和(详细)结果输出到文本文件是这样的: enter image description here

在我们触发下一步之前,我们必须确保所有单元测试都通过,因此单词Failure不能出现在输出结果文件中,并且单词failed不能出现在控制台输出中

我该如何检查,或者是否有更好,更正确的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

只是从您的控制台输出中假设并且当前无法对其进行测试,但是try-catch块可以正常工作。

try {
    Invoke-Sqlcmd ...
}
catch {
    # Output a error and exit script?
}

最终你需要在Invoke-Sqlcmd中添加-ErrorAction Stop。