2016-02-27 3 views
-1

Я хочу поймать invoke-sqlcmd, если что-то не так. Но когда я запускаю следующую команду, и если invoke-sqlcmd недействителен, ее нельзя поймать. Как поймать это исключение?Исключение сбоя, вызванное invoke-sqlcmd

Invoke-SqlCmd -InputFile "D:\Tables\Script_CreateTable.tab" 
} 

Catch{ 
$ErrorMessage = $_.Exception.Message 
$Time=Get-Date 
"This script failed at $Time and error message was $ErrorMessage" | out-file D:\Log\CreateTable.log -append 
} 

Finally{ 

$Time=Get-Date 
"This script made a read attempt at $Time" | out-file D:\Log \CreateTable.log -append 
} 
+0

Возможный дубликат [powershell: как уловить причину ошибки invoke-sqlcmd?] (Http://stackoverflow.com/questions/4766250/powershellhow-to-catch-the-error-cause-by-invoke- sqlcmd) – vonPryz

+0

Его случай был использован -Query, в то время как мой случай был -InputFile – user664481

ответ

0

Я не могу проверить это, но я предполагаю, что ошибка не является исключением. Решением этого является добавление -ErrorAction Stop в конце команды. Попробуйте:

try { 
    Invoke-SqlCmd -InputFile "D:\Tables\Script_CreateTable.tab" -ErrorAction Stop 
} 
Catch{ 
    $ErrorMessage = $_.Exception.Message 
    $Time=Get-Date 
    "This script failed at $Time and error message was $ErrorMessage" | out-file D:\Log\CreateTable.log -append 
} 

Или -AbortOnError, который, кажется, командлет конкретного параметра для Invoke-Sqlcmd.

Смежные вопросы