我有一个PowerShell脚本在写入同一个日志文件的几台机器上并行运行,因为我使用这个简单的行代码:$ line>> $日志文件
显然,当多个进程尝试更新文件时,文件会被锁定 我希望如果日志文件被锁定,脚本将继续尝试更新文件,直到他成功
有办法吗?
答案 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不为空时让这个进程写入文件