Как добавить в файл журнала в powershell? - PullRequest
0 голосов
/ 16 марта 2010

Я делаю параллельное восстановление базы данных SQL Server 2005 в powershell. Я сделал это, используя cmd.exe и запустившись, чтобы PowerShell не дожидалась его завершения. Что мне нужно сделать, это направить вывод в файл журнала с помощью добавления. Если я использую 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 и не попадает в файл. Есть предложения?

Спасибо, Mark.

Ответы [ 2 ]

1 голос
/ 17 марта 2010

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

0 голосов
/ 16 марта 2010

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

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

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