Powershell尝试Catch invoke-sqlcmd

Eri*_*c Z 8 powershell try-catch try-catch-finally

当使用Invoke-Sqlcmd连接到SQL Server失败时,我在PowerShell中捕获错误时遇到问题.这是一些用于演示此问题的通用代码:

CLS
$server = "Localhost\fake"
try
{
    Invoke-Sqlcmd -Query "SELECT DB_NAME() as [Database]" -Server $server
}
catch
{
    Write-Host "Error connecting to server " $server
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Invoke-Sqlcmd:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

我期待获得一行声明:"连接到服务器Localhost\fake时出错"

Kei*_*ill 13

看起来错误被认为是非终止的,这有点奇怪.尝试使用附加参数调用Invoke-SqlCommand : -ErrorAction Stop. 如果错误是非终止,则会将其转换为您可以捕获的终止错误.