wpf - 包含“是/否”消息框以关闭应用程序的脚本不起作用
问题描述
我正在尝试编写一个脚本,该脚本将显示一个带有是/否按钮的消息框。我想要“是”来关闭打开的应用程序,而“否”来结束脚本。
我已经编写了下面代码的一些突变,但我能得到的最好的结果是是和否都关闭了应用程序。这是我的代码:
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()
的返回值期望/返回枚举值[1]。
但是,PowerShell 的自动类型转换方便地将值名称指定为字符串,例如'YesNo'
,'Warning'
或'Yes'
代替[System.Windows.MessageBoxButton]::YesNo
,[System.Windows.MessageBoxImage]::Warning
和[System.Windows.MessageBoxResult]::Yes
,这简化了代码。
[1] 即,从 派生的值类型的实例System.Enum
,它们在符号名称下定义离散数值。