包含用于关闭应用程序的 Yes/No 消息框的脚本无法正常工作

Script which contains a Yes/No message box to close an application is not working

我正在尝试编写一个脚本来显示带有 yes/no 按钮的消息框。我希望“是”关闭打开的应用程序,“否”结束脚本。

我已经对下面的代码进行了一些修改,但我能得到的最好的结果是是和否都关闭了应用程序。这是我的代码:

Add-Type -AssemblyName PresentationCore,PresentationFramework
[System.Windows.MessageBox]::Show('Do you want to close TAS?',‘WARNING’,‘YesNo’)
[System.Windows.MessageBoxImage]::Warning

$msgBoxInput = [System.Windows.MessageBoxButton]::Show(‘YesNo’)

   switch  ($msgBoxInput) {
       ‘Yes’ {
           Stop-Process -Name ATIS-Broadcaster2 
           ‘YES’
        }

        ‘No’ {
           Exit-PSSession
           ‘NO’
        }
}

尝试以下操作:

Add-Type -AssemblyName PresentationCore, PresentationFramework

switch (
  [System.Windows.MessageBox]::Show(
    'Do you want to close TAS?',
    'WARNING',
    'YesNo',
    'Warning'
  )
) {
  'Yes' {
    'YES'
    #  Stop-Process -Name ATIS-Broadcaster2 
  }
  'No' {
    'NO'
    #  Exit-PSSession
  }
}

注意:我还将您的“卷曲”单引号转换为常规的 ASCII 范围单引号;虽然 PowerShell 接受这两种类型,但最好坚持使用后者。

请参阅 System.Windows.MessageBox 文档。

注意传给'YesNo''Warning'的参数,还有.Show()方法的return值,expect /return枚举[1].

但是,PowerShell 的自动类型转换方便地允许仅将值名称指定为 字符串 ,例如 'YesNo''Warning''Yes'代替 [System.Windows.MessageBoxButton]::YesNo[System.Windows.MessageBoxImage]::Warning[System.Windows.MessageBoxResult]::Yes,这简化了代码。


[1] 即派生自 System.Enum 的值类型的实例,它们在符号名称下定义离散数值。