2015-10-19 53 views
0

我有一個PowerShell腳本。它包含將文件從文件系統遷移到某個雲共享的邏輯。在腳本執行結束時,即遷移結束時,我將日誌導出到包含數據的csv文件,例如是否使用文件遷移或使用out錯誤。PowerShell命令或代碼知道腳本執行是否已停止

現在可能出現以下情況:遷移工程師使用ctrl+BreakShift+F5手動停止腳本,或者腳本由於某些嚴重錯誤而終止。

由於我的PowerShell代碼在成功執行結束時會生成一個csv文件,因此這種介於兩者之間的中斷將不會創建任何日誌文件。

所以我在尋找一個PowerShell命令或摘錄這告訴我們,代碼執行停止。然後我們輸出日誌文件

回答

1

使用的try/catch /最後。

把任何代碼通知你在Finally塊中退出的腳本。如果中止與按Ctrl + C腳本中的Catch塊沒有運行

Try { while (1) {$i++} } 
Catch{ Write-Host 'Catch block ran' } 
Finally{Write-host 'Finally block ran'} 

通知,但最後塊的作用:

試試這個。

只有在出現錯誤時纔會運行Catch塊。 Finally塊始終運行,即使您使用Ctrl + C中止腳本。

所以:

Try {#your script here} 
Catch {} 
Finally {#Export log file} 

如果腳本在try塊中中止日誌文件將被導出。

如果按Ctrl + C,而它的出口,你可能仍然失去了一些日誌數據。

,以確保你得到所有的日誌數據的最佳方式是因爲它們發生寫日誌事件到磁盤。