2013-10-22 118 views
0

我試圖阻止用戶在某些情況下關閉計算機。我正在顯示確認消息來執行此操作。這是我的腳本看起來像:powershell - 如何等待用戶輸入

$sysevent = [microsoft.win32.systemevents] 

Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action $OnShutdown -SourceIdentifier "ExecuteOnShutdown" 

$OnShutdown = 
{ 

    Write-Host -ForeGround Green $event.SourceEventArgs.Reason 

    $OUTPUT= [System.Windows.Forms.MessageBox]::Show("Do you really want to shutdown the computer?." , "confirm" , 4) 

    Write-Host $OUTPUT 

} 

這工作得很好,但我不知道我該如何暫停shutdown命令,直到用戶點擊「是」或「否」。有沒有辦法阻止系統關機,並等待用戶點擊「是」或「否」,然後根據答案關閉服務器?

回答

0

在您的事件處理程序腳本塊中,定義了一些自動變量,其中之一是$EventArgs。在這種情況下會有一個Cancel屬性這個對象上,你可以設置爲$ true但該文檔警告:

設置爲true時,該屬性要求,本次會議繼續 運行。它不保證會話不會結束。

在這種情況下還有另一個變量定義 - $Sender。執行man about_automatic_variables瞭解更多信息。

0

考慮通過組策略或本地策略關機/註銷腳本來部署腳本,該腳本應防止關機,直至滿足條件。你可能需要將你的messagebox調用包裝在條件睡眠循環中(這正是我在幾年前在VBScript中做過類似的事情),也許不是。

如果您選擇使用此方法,您可能還需要爲您的消息框添加首選默認選項(也許在指定的超時時間過後?);用戶可能不會四處看到您的桌面盒,因爲它將在交互式桌面卸載後繪製。

以下是關於如何使用Technet文章的鏈接Use Startup, Shutdown, Logon, and Logoff Scripts

我不確定這是否回答你的問題,因爲這不會阻止關機,它只是停止它,直到你的條件得到滿足。