你實際上可以將你的腳本分解爲2個。 一個會做實際的工作,一個會做顯示。
因此,如果用戶關閉顯示窗口,實際的腳本將保持打開狀態。
例如,採取:
ScriptThatWorkHard.ps1推出使用-WindowStyleHidden
所以蹦出存在的馬上。
用戶將無法關閉該窗口。
該腳本,立即啓動ScriptThatDisplayThings.ps1
爲了他們溝通(您想第一個腳本來發送,以顯示到第二個腳本內容),我會管的所有內容所產生將隱藏的腳本放入第二個腳本將監視的文件中。
通過監視LastWriteTime,第二個腳本可以檢測對文件所做的更改並顯示其內容。
有點簡單,但這裏的第二腳本可以是什麼樣子: (除非你真正的腳本,而不是「datelimit」退出腳本,你應該用戶的一些其他方法)
if (Test-Path $logFullPath) {
$LastModifiedTime = (Get-ChildItem -Path $logFullPath).LastWriteTime
$DateLimit = (Get-Date).AddSeconds(10)
While ((Get-date) -le $DateLimit) {
$NewLastModifiedDate = (Get-ChildItem -Path $logFullPath).LastWriteTime
if ($LastModifiedTime -ne $NewLastModifiedDate) {
$LastModifiedTime = $NewLastModifiedDate
$DateLimit = (Get-Date).AddSeconds(10)
Write-Host 'The unread lines from your logfile'
}
}
}
這絕不是一個完整的例子,而是一個開始。
舉例來說,你可以檢測和使用專線在日誌傳遞命令到您的顯示腳本(如關機,所以它知道何時關閉,而不是一個「datelimit」)
而且,你將不得不實現「讀取日誌文件新內容」部分。
然而,使用該方法的結果是非常清楚的。 如果生氣的用戶關閉窗口,他實際上關閉了信息窗口,而不是下面的運行腳本。
中斷處理絕對不是你想象的那樣 – Clijsters
你可以嘗試運行腳本最小化,但用戶仍可能破壞浩浩蕩蕩。你真正需要做的是瞭解用戶的動機。 *爲什麼*他們正在關閉窗戶?在找出動機後,解決方案更容易找到答案。 – vonPryz
查看函數輸入處理方法(Begin..Process..End)鏈接:https://ss64.com/ps/syntax-function-input.html您可以在結束部分完成清理工作 – guiwhatsthat