Как запустить SQL Серверный скрипт Powershell с кодом вывода и выхода - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь запустить скрипт PowerShell в качестве SQL Агента Server 2016.

Когда мой скрипт Powershell выполняется, я генерирую несколько строк вывода, используя «Write-Output». Я хотел бы сохранить этот вывод в истории заданий, и я хочу, чтобы задание продолжалось до следующего шага, если шаг, выполняемый сценарием PowerShell, завершается с кодом выхода 0.

Я использую тип шага "PowerShell" в моей работе агента. Текст команды выглядит следующим образом ..

# Does some stuff that eventually sets the $resultState variable...

Write-Output ("Job complete with result '" + $resultState + "'")

if($resultState -eq "SUCCESS") {
    [Environment]::Exit(0);
}
else {
    [Environment]::Exit(1);
}

В настройках «Дополнительно» установлен флажок «Включить вывод шага в историю». Если я удалю последний оператор if из скрипта PowerShell, я смогу увидеть результаты в истории, но шаг задания всегда будет успешным и перейдет к следующему шагу. Если я включу операторы if / else, шаг задания завершится неудачей, если $ resultState не равен «SUCCESS» (что я и хочу), но я больше не вижу свои выходные данные в истории шага задания.

Есть предложения?

1 Ответ

0 голосов
/ 26 марта 2020

Я работал над этим, сохраняя все свои выходные строки в одну переменную и используя Write-Error с -ErrorAction Stop, если мой результат был не тем, что я хотел. Это не совсем , что я пытался сделать сначала, потому что он не использует коды выхода, но SQL Агент правильно определит, успешно ли выполнен шаг задания, и мой вывод может по-прежнему отображаются в истории заданий, поскольку они будут включены в сообщение об ошибке.

Обновленный код:

# Does some stuff that sets the $resultState and saves output lines to $output...

$output += "`r`nJob complete with result '$resultState'"

if($resultState -eq "SUCCESS") {
    Write-Output ($output)
}
else {
    Write-Error ("`r`n" + $output) -ErrorAction Stop
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...