2011-04-05 125 views
2

我已經安排了兩個PowerShell腳本作爲在00:00運行的任務。Powershell計劃任務衝突?

今天早上我檢查事件日誌,發現腳本的一個失敗,出現以下異常:

失敗。錯誤是:' 未創建日誌條目: 'C:\ Users \ SPSETU〜1 \ AppData \ Local \ Temp \ PowerShellLog.txt'。 錯誤是:'進程不能 訪問文件 'C:\ Users \ SPsetupAdmin \ AppData \ Local \ Temp \ PowerShellLog.txt' 因爲它正在被另一個 進程使用'。'。

  • 可以與日誌的問題?這兩個腳本都使用寫入日誌功能(請參閱poshcode.org)並使用相同的ID登錄Windows事件日誌。
  • 您是否知道PowerShell腳本之間的任何已知衝突作爲計劃任務?
  • 我是否必須一次執行任務?

回答

3

那麼,既然你同時嘗試從兩個不同的進程寫入相同的文件,你可以期待上述錯誤。

Powershell與任何應用程序或程序有相同的限制;在這種情況下,文件寫入鎖定。我不認爲作爲計劃任務Powershell腳本有任何「特殊」限制。

我會看到你想要執行的命令使用唯一的日誌文件(如果同時運行它們是你的最高優先級),或者將這些命令放在同一個腳本中,並將其作爲計劃任務執行(如果獲取所有內容在一個日誌中是您的首要任務)。

+0

我沒有設置日誌文件,我離開了默認的。你認爲我可以使用不同的事件源ID解決問題嗎? – 2011-04-05 08:16:58

+0

我將使用唯一的日誌文件,然後;無論如何這是一個很好的做法。 – 2011-04-05 10:18:32

2

poshcode.org代碼記錄到PowerShellLog.txt文件以及事件日誌中,因此兩個腳本都試圖寫入同一個文件。如果你只是想寫入事件日誌,你可以嘗試刪除:

if ($Clobber) { 
$msg | Out-File -FilePath $Path -Force 
} else { 
$msg | Out-File -FilePath $Path -Append 
} 

如果您想保留文件記錄那麼我建議引入一個文件名作爲參數。

+0

謝謝,最好添加一個額外的選項來禁用文件日誌記錄。反正我會用不同的日誌文件。 – 2011-04-05 10:19:46

+1

沒問題,使用不同的日誌文件就是我在介紹函數參數時所說的。如果您在調用函數時將$ path變量作爲參數,那麼同一個函數可用於多個文件。無論如何,快樂你有一個前進的方向:) – nimizen 2011-04-05 12:14:38