Как добавить файл журнала в powershell?

Я делаю несколько параллельных восстановлений базы данных SQL Server 2005 в powershell. Я сделал это с помощью cmd.exe и запустил так, чтобы powershell не ждал его завершения. Что мне нужно сделать, так это передать вывод в файл журнала с помощью append. Если я использую Add-Content, то powershell ждет, чего я не хочу.

Мой фрагмент кода

foreach ($line in $database_list)
{
<snip>
    # Create logins
    sqlcmd.exe -S $instance -E -d master -i $loginsFile -o $logFile

    # Read commands from a temp file and execute them in parallel with sqlcmd.exe
    cmd.exe /c start "Restoring $database" /D"$pwd" sqlcmd.exe -S $instance -E -d master -i $tempSQLFile -t 0 -o $logFile

    [void]$logFiles.Add($logFile)
}

Проблема в том, что sqlcmd.exe -o перезаписывает. Я пытался сделать это, чтобы добавить:

    cmd.exe /c start "Restoring $database" /D"$pwd" sqlcmd.exe -S $instance -E -d master -i $tempSQLFile -t 0 >> $logFile

Но это не работает, потому что вывод остается в окне SQLCMD и не переходит в файл. Какие-либо предложения?

Спасибо, Марк.


person Mark Allison    schedule 16.03.2010    source источник
comment
Небольшая опечатка в вашем вопросе. Пожалуйста, измените SQL Server 20005 на SQL Server 2005.   -  person Ashish Gupta    schedule 16.03.2010


Ответы (2)


Если -o для sqlcmd.exe работает, но перезаписывает, я бы создал файл журнала для каждого восстановления, а затем все возвратили содержимое каждого файла журнала в один главный файл журнала. Затем вы можете очистить промежуточные файлы, если хотите.

person Brian    schedule 17.03.2010

Возможно, sqlcmd выводит свой журнал на стандартный вывод? Если это так, то поставьте 2>&1 в конце, чтобы стандартный поток ошибок работал так же, как и стандартный поток вывода.

И осмелюсь спросить, зачем вы все это делаете через cmd, если вы уже используете PowerShell? Что не так с Start-Process? :-)

person Joey    schedule 16.03.2010
comment
Я бы использовал Start-Process, но я использую Powershell 1.0. SQLCMD выводит на стандартный вывод. - person Mark Allison; 16.03.2010