Invoke-Sqlcmdを使用してSQLServerへの接続に失敗すると、PowerShellでエラーをキャッチする際に問題が発生します。これは、問題を示すための一般的なコードです。
CLS
$server = "Localhost\fake"
try
{
Invoke-Sqlcmd -Query "SELECT DB_NAME() as [Database]" -Server $server
}
catch
{
Write-Host "Error connecting to server " $server
}
次のエラーが発生します。
Invoke-Sqlcmd:SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開くことができませんでした)
「サーバーLocalhost\fakeへの接続中にエラーが発生しました」という1行のステートメントを取得することを期待していました。