Вызов сценария Powershell через задание агента SQL Server - start-transcript не получает вывод - PullRequest
0 голосов
/ 03 апреля 2012

Уже есть вопрос по этому вопросу (здесь) . Но я надеюсь, что из-за того, что я использую PowerShell 2 и SQL Server 2008, я мог бы получить разные ответы, если я спрошу снова.

По сути, у меня есть задание агента SQL Server, которое запускает сценарий cmd следующим образом:

powershell "&D:\SQL\Job\JobDir\Upload.ps1 (various arguments including log file name)"

Когда запускается start-transcript, файл создается, но в него ничего не записывается, кроме заголовка. Однако, когда я запускаю в командной строке, все регистрируется правильно.

У меня уже есть много логики для управления старыми файлами журналов в скрипте powershell, и я не хочу просто использовать ведение журнала по умолчанию, которое предоставляет агент SQL Server.

Для записи информации я использую invoke-sqlcmd с подробным флагом, а также write-message и write-error.

Спасибо за любые указатели! Sylvia

Ответы [ 4 ]

0 голосов
/ 13 августа 2014

Как уже указывалось выше, Start-Transcript создаст файл в указанном месте (при условии, что агент имеет разрешение на создание файлов там).Однако ничто не будет передаваться в файл расшифровки, потому что технически окно консоли не запущено.

При запуске файла powershell через агент SQL (до 2012 года), например C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0\ powershell.exe C: \ myscript.ps1 "SOMEPARAMETER"

Я просто использую опцию собственного выходного файла агента SQL в дополнительных свойствах шагов SQL, таких как C: \ LOGGING \ myfile _ $ (ESCAPE_SQUOTE (STRTDT)) _$ (ESCAPE_SQUOTE (STRTTM)). Txt и пропустить возможность расшифровки powershell.

При необходимости включите Write-Host.Write-Host "r n" создаст новую строку соответствующим образом.Также включите такие вещи, как -Verbose, где это разрешено, и попытайтесь / поймайте с выводом ошибки, и файл будет записан соответствующим образом.

0 голосов
/ 11 апреля 2012

Разрешения не были проблемой для меня. Я думаю, что есть способы очень точно манипулировать выводом из PowerShell со всеми различными потоками вывода (ошибки, подробности и т. Д.), Но вместо того, чтобы углубляться в эти детали, я просто использовал ведение журнала по умолчанию, которое агент SQL Server предоставляет для каждого шага задания. , Это работает хорошо. Я по-прежнему использую логику, которую я написал, для управления и архивирования файлов журналов в моем сценарии, но я могу сделать это, даже если сам файл журнала создается SQL Server.

0 голосов
/ 26 апреля 2012

Я считаю, что start-transcript не работает, когда консоль не была запущена (например, в службе): выходные данные не генерируются, и это объясняет, почему файл пуст.

См. start-transcript вызывает сбой скрипта в фоновом задании

0 голосов
/ 03 апреля 2012

start-transcript создает текстовый файл

вполне вероятно, что разрешения, в соответствии с которыми выполняется задание агента, не имеют разрешения для создания текстового файла, где powershell хочет его создать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...