Попробуйте Catch с помощью Invoke-SQLCmd и -ErrorAction SilentlyContinue - PullRequest
0 голосов
/ 04 сентября 2018

По сути, я хочу иметь возможность перехватывать предупреждения, возвращаемые Invoke-SqlCmd, не останавливая выполнение скрипта. Следующий код не работает:

TRY {
    Invoke-SQLCMD -Query "selects * from syscomments" -ServerInstance $ServerAddress -Database $DatabaseName -ErrorAction 'SilentlyContinue' 
}
CATCH {
    Write-Host "[!] Errors returned, check log file for details" -ForegroundColor RED
    $_ | Out-File -Append "path to log"
}

Это просто подавляет весь вывод и не улавливает ошибку. Изменение типа ошибки на Stop действительно фиксирует ошибку, но мне нужно, чтобы эти сценарии продолжали работать после ошибки.

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете использовать оператор trap:

trap { # invoked on terminating errors
  Write-Host "[!] Errors returned, check log file for details" -ForegroundColor RED
  $_ | Out-File -Append "path to log" 
  continue # continue execution
}

# Elevate all non-terminating errors to (script-)terminating errors.
$ErrorActionPreference = 'Stop'

# All errors - whether non-terminating or terminating - now trigger
# the trap, which, due to use of `continue`, continues execution after each error.

Invoke-SQLCMD -Query "selects * from syscomments" -ServerInstance $ServerAddress -Database $DatabaseName  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...