簡體   English   中英

PowerShell命令或代碼以了解腳本執行是否已停止

[英]PowerShell command or code to know if script execution has been stopped

我有一個PowerShell腳本。 它包含將文件從文件系統遷移到某些雲共享的邏輯。 在腳本執行結束(即遷移結束)時,我將日志導出到csv文件,該文件包含數據(例如文件是否有錯誤遷移)。

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

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

因此,我正在尋找一個PowerShell命令或代碼段,該命令或代碼段告訴我們代碼執行已停止。 然后我們導出日志文件

不知道你真正的問題是什么。 也許您可以在此處發布代碼。 你可以加

$ErrorActionPreference = 'Stop'

在腳本的開頭,遇到錯誤時將停止腳本。

嘗試使用Try / Catch語句進行正確的錯誤處理。

http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/11/hey-scripting-guy-march-11-2010.aspx

使用嘗試/捕獲/最后。

放置將要通知您的代碼,以通知您在Final模塊中退出的腳本。

嘗試這個:

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

請注意,如果使用Ctrl + C中止腳本,則Catch塊不會運行,而Final塊會運行。

Catch塊僅在出現錯誤時運行。 即使使用Ctrl + C中止腳本,Final塊也始終運行。

所以:

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

如果在Try塊中腳本被中止,則將導出日志文件。

如果在導出時按Ctrl + C,您可能仍然會丟失一些日志數據。

確保獲取所有日志數據的最佳方法是在發生日志事件時將其寫入磁盤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM