2014-02-09 37 views
0

我有一個PowerShell腳本運行在多臺機器上並行寫入同一個日誌文件,爲此我使用這個簡單的行代碼:$ line >> $ LogFilePowerShell - 幾個進程更新相同的日誌文件

顯然有時文件被鎖在多個進程試圖更新 我想,在情況下,日誌文件被鎖定,該腳本將繼續嘗試更新文件,直到他成功

有沒有辦法做到這一點?

+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 
0

你可以準備在處理這個問題specialed線程。首先,Tou可以聲明一個隊列,當進程想要寫入文件時,把它放入隊列中,當隊列不空時,讓這個過程寫入文件

相關問題