2017-10-11 22 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版本的设备的通配符。 –

相关问题