繁体   English   中英

如何在Powershell中附加到日志文件?

[英]How to append to a log file in powershell?

我正在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窗口中并且不会转到文件中。 有什么建议么?

谢谢马克。

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

sqlcmd是否可能将其日志输出到stderr? 如果是这样,则在末尾放置2>&1 ,这将使标准错误流与标准输出流相同。

我敢问如果您已经在使用PowerShell,为什么要通过cmd来完成所有这些工作? Start-Process什么问题? :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM