0

我正在 Powershell 中进行一些并行的 SQL Server 2005 数据库恢复。我这样做的方法是使用 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 窗口中并且没有转到文件。有什么建议么?

谢谢,马克。

4

2 回答 2

1

如果 sqlcmd.exe 的 -o 有效但被覆盖,我将为每次还原创建一个日志文件,然后将每个日志文件的内容通过管道返回到一个主日志文件中。然后,您可以选择清理中间文件。

于 2010-03-17T03:28:01.643 回答
0

是否sqlcmd可能将其日志输出到标准错误?如果是这样,那么将 a2>&1放在末尾,这使得标准错误流与标准输出流的方式相同。

cmd如果你已经在使用 PowerShell ,我敢问你为什么要这样做?有什么问题Start-Process?:-)

于 2010-03-16T14:15:12.950 回答