Powershell脚本可以通过按ctrl-c轻松终止。有没有一种方法让Powershell脚本抓住ctrl-c并要求用户确认他是否真的要终止脚本?有没有办法抓住ctrl-c并要求用户确认?
5
A
回答
2
结帐this post on the MSDN forums。
[console]::TreatControlCAsInput = $true
while ($true)
{
write-host "Processing..."
if ([console]::KeyAvailable)
{
$key = [system.console]::readkey($true)
if (($key.modifiers -band [consolemodifiers]"control") -and ($key.key -eq "C"))
{
Add-Type -AssemblyName System.Windows.Forms
if ([System.Windows.Forms.MessageBox]::Show("Are you sure you want to exit?", "Exit Script?", [System.Windows.Forms.MessageBoxButtons]::YesNo) -eq "Yes")
{
"Terminating..."
break
}
}
}
}
如果你不想使用GUI消息框的确认,你可以使用读 - 主机,而不是,或$ Host.UI.RawUI.ReadKey()作为大卫表现出他的答案。
2
while ($true)
{
Write-Host "Do this, do that..."
if ($Host.UI.RawUI.KeyAvailable -and (3 -eq [int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character))
{
Write-Host "You pressed CTRL-C. Do you want to continue doing this and that?"
$key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")
if ($key.Character -eq "N") { break; }
}
}
+0
所以我不得不在我所有的代码中包装这个? –
+0
它不会干扰使用$ host.ui.rawui.readkey()的其他代码吗? –
相关问题
- 1. 有没有办法告诉HtmlUnit抓住所有依赖
- 2. 有没有办法让我从Facebook抓住用户的个人兴趣?
- 3. 有没有办法抓住editText的日期和时间
- 4. Symfony2 - 有没有办法挂钩到用户确认事件?
- 5. 为什么葡萄抓住我没有要求的罐子?
- 6. 有没有办法使用ControlSend或其他东西,而不抓住焦点
- 7. 有没有办法确定Firebase用户的UID是否有效?
- 8. 在线登录过程中,有没有办法确认用户的雇主?
- 9. SearchRequestBuilder:有没有办法要求返回所有字段?
- 10. 有没有办法抓住身体标记中的变量并将其用在头标记中
- 11. 用户有没有办法看到PHP?
- 12. Laravel - 抓住所有雄辩的请求
- 13. 有没有办法让用户选择要输入的变量?
- 14. e.preventDefault - 有没有办法做到默认?
- 15. 抓住用户没有订单与MySQL和PHP,简化这个
- 16. 有没有办法钩住或拦截CoGetClassObject和/或CoCreateInstance调用?
- 17. 有没有办法改善这个要求?
- 18. 有没有办法编写JavaScript接口要求?
- 19. 有没有办法要求Youtube显示前贴式广告?
- 20. 有没有办法让MS Access抓取当前的Active Directory用户?
- 21. 双击没有被OnMouseEvent(JavaFX2)抓住
- 22. 出现InvalidOperationException没有被抓住
- 23. WCF没有ASPNetCompatibility模式抓住weboperationcontext
- 24. 尝试抓住没有错误陈述
- 25. 有没有办法在golang/gin中关闭客户端请求?
- 26. 有没有办法让客户端发送请求时的url
- 27. 抓住所有网站抓住所有重新渲染css
- 28. 有没有办法确定用户加入了哪些Mulit用户会议(MUC)?
- 29. Jquery .show没有正确的动画,并没有抓住目标中的所有链接
- 30. 完全卡住 - 需要模型,但没有可用 - 怎么办?
我正在寻找一种方法来做相反的事情。 Powershell总是要求我确认终止。 –
你是怎么做到的? –
这就是我安装Windows 7时的情况;它让我疯狂! –