2017-10-11 23 views
0

我需要能夠停止我的腳本,當用戶點擊取消某個彈出框。部分腳本如下:當我點擊彈出框中的取消時,如何停止腳本?

$OS = (Get-WmiObject -class Win32_OperatingSystem).caption 

if ($OS -ne "Microsoft Windows 10 *"){ 

    $wshell = New-Object -ComObject Wscript.Shell 
$wshell.Popup("This computer is currently running $OS. To continue with the 
script click OK, otherwise click Cancel.",0,"Windows 10 
Notification",0x1) 

} 

這就是用戶必須決定終止腳本進度或繼續。我需要能夠在用戶點擊確定時繼續執行腳本,但是當點擊取消時停止繼續執行腳本。

回答

1

你可以捕捉變量彈出的答案,並使用if-statementBreak停止腳本。嘗試使用這樣的:

$OS = (Get-WmiObject -class Win32_OperatingSystem).caption 

if ($OS -ne "Microsoft Windows 10 *"){ 

    $wshell = New-Object -ComObject Wscript.Shell 
    $answer = $wshell.Popup("This computer is currently running $OS. To continue with the 
    script click OK, otherwise click Cancel.",0,"Windows 10 
    Notification",0x1) 

    if($answer -eq 2){Break} 

} 

$answer顯示爲用於確定和爲取消

+0

我可以讓它成爲繼續或取消按鈕,而不是取消嗎?我怎麼做? –

+0

我不相信你可以使用'wscript.shell'對象來做到這一點,但你可以再次嘗試繼續或取消組合,只需將'0x1'更改爲'0x6'。如果你想知道更多關於它的信息,你可以到這個頁面[Popup Method](https://msdn.microsoft.com/en-us/library/x83z1d9f.aspx)。它會告訴您所有可用於更改按鈕的選項...如果您想要添加通知對話框和信息,您可以轉到[黃色對話框](https://technet.microsoft.com/zh-cn/library/ff730952 .aspx)這給你如何做到這一點的信息。 – ShanayL

+0

對於Yes和No按鈕,我使用了0x4,但是當我寫道:if($ answer -eq 2){exit}'終止,如果用戶單擊否,腳本不會退出。有任何想法嗎? –

0

我更喜歡使用Windows窗體和相應的更新腳本。你可以找到更多的例子here

我也改了,如果條件是因爲你在那裏檢查,如果變量$OS正是"Microsoft Windows 10 *";檢查它是否開始與字符串使用-notlike而不是-ne

$OS = (Get-WmiObject -class Win32_OperatingSystem).caption 

if ($OS -notlike "Microsoft Windows 10 *") { 
    $PopupTitle = "Windows 10 Notification" 
    $PopupMessage = "This computer is currently running $OS. To continue with the script click OK, otherwise click Cancel." 
    $PopupOptions = "OkCancel" 
    $PopupAnswer = [System.Windows.Forms.MessageBox]::Show($PopupMessage,$PopupTitle,$PopupOptions,[System.Windows.Forms.MessageBoxIcon]::Exclamation) 

    if ($PopupAnswer -eq "Cancel") { 
     Break 
    } 
} 
+0

我正在檢查$ OS是否爲「Microsoft Windows 10 *」。請注意星號作爲任何運行任何Windows 10版本的設備的通配符。 –

相關問題