[英]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.