Try/Catch 在 powershell 运行 sql 脚本中

Try/Catch in powershell running sql script

我是 powershell 的新手,正在尝试使用 try/catch 命令来处理错误消息。

$Output = Invoke-SqlCmd -ServerInstance $dbinstance -username $dbusername -password $dbpassword -Database  $dbname -Query $Query

$isconnected = ''

if ($Output.uri -eq '0' ) {
$isconnected = $true
Write-Host -Foreground Green $isconnected

}else  {
$isconnected = $false
Write-Host -Foreground Red $isconnected
}

这是我得到的错误,但结果仍然正确,即使结果应该是错误的,因为我正在尝试找出如何捕获错误。

如果你想在你的脚本中实现一个 Try / Catch 你需要将你的代码放在 Try 块中查询数据库以及你想如何处理 Catch块:

try {
    $param = @{
        ServerInstance = $dbinstance
        Username       = $dbusername
        Password       = $dbpassword
        Database       = $dbname
        Query          = $Query
    }
    $output = Invoke-SqlCmd @param -ErrorAction Stop
    Write-Host 'Connected' -Foreground Green
    # rest of your code goes here
}
catch {
    Write-Warning $_.Exception.Message
}

您可能还会受益于 Splatting

$_Catch 块的上下文中表示捕获的错误,它是 ErrorRecord. You might want to check the other properties aside from Exception.

的一个实例