PowerShell - 更新同一日志文件的几个进程

时间:2014-02-09 13:38:40

标签: powershell logfile

我有一个PowerShell脚本在写入同一个日志文件的几台机器上并行运行,因为我使用这个简单的行代码:$ line>> $日志文件

显然,当多个进程尝试更新文件时,文件会被锁定 我希望如果日志文件被锁定,脚本将继续尝试更新文件,直到他成功

有办法吗?

2 个答案:

答案 0 :(得分:0)

一般情况下,我不建议将两个不同的进程记录到同一个文件中,但这里有一个应该有用的方法:

function Log($line, $logFile) {
    $success=$false
    while (!$success) { 
        try {
            $line >> $logFile
            $success = $true
        } 
        catch [io.ioexception] {
            # Write-Host "Retrying log to file"
        }
    }
}

Log $line $LogFile

答案 1 :(得分:0)

你可以准备一个专门处理这个问题的线程。首先,Tou可以声明一个Queue,当进程想要写入文件时,将其放入Queue,当Queue不为空时让这个进程写入文件