Каков синтаксис подробного вывода в файл с помощью команды invoke-sqlcmd?

В настоящее время у меня есть:

(invoke-sqlcmd -inputfile (Join-Path $FileDirectory $FileName) -ServerInstance $ServerName -verbose) > $OutFileName

На что я получаю вывод:

VERBOSE: Changed database context to 'BLUELABEL'

Я пытаюсь использовать подробный вывод для записи в файл, указанный функцией Join-Path.

Что я делаю не так?

(с использованием PowerShell версии 3)

Я нашел этот вопрос с ответами, но он кажется другим, и я не могу применить те же идеи: Powershell Invoke-Sqlcmd захватывает подробный вывод


person obizues    schedule 19.05.2015    source источник
comment
Что я делаю неправильно? Не присваиваю $OutFileName значения. Вопрос в том, почему вы хотите писать в файл, содержащий выполняемую вами команду sql?   -  person arco444    schedule 19.05.2015
comment
Мне жаль, что это только часть, которую я вывожу, пожалуйста, предположим, что все переменные назначены правильно.   -  person obizues    schedule 19.05.2015


Ответы (2)


Подробный вывод записывается в поток, отличный от обычного вывода. Оператор > перенаправляет только успешный выходной поток. Чтобы перенаправить подробный поток вывода, вам нужно

(...) 4> $OutFileName

or

(...) 4>&1 > $OutFileName

если вы хотите объединить потоки успешного и подробного вывода.

Дополнительные сведения см. в разделе about_Redirection.

person Ansgar Wiechers    schedule 19.05.2015
comment
Пробуя оба предложенных решения, я получаю следующую ошибку: 4 : Unexpected token '4' in expression or statement. + CategoryInfo : ParserError: (4:String) [], ParseException + FullyQualifiedErrorId : UnexpectedToken - person obizues; 19.05.2015

в итоге я получил

sqlps -Command "&{invoke-sqlcmd -inputfile (Join-Path $PSScriptRoot $file) -ServerInstance $server -verbose}" *> "$PSScriptRoot\SqlLog_$file`_$(get-date -f yyyy-MM-dd-hh-mm-ss).txt"

работать.

Первоначально я вызывал другой скрипт, передавал ему 3 переменные и запускал вызов invoke-sqlcmd. По какой-то причине это заставило меня не использовать «*>» или любой символ в сочетании с «>».

Может быть, кто-то еще может уточнить, почему именно это так.

person obizues    schedule 19.05.2015