PowerShell脚本双击运行窗口闪退,手动执行正常的问题求助
解决PowerShell脚本双击运行窗口立即关闭的问题
问题分析
手动粘贴脚本到PowerShell窗口能正常运行,但双击执行时窗口立刻关闭,大概率是脚本执行过程中出现了未被捕获的错误(比如输入非数字导致日期计算失败)——双击运行的PowerShell进程在脚本终止后会直接退出,你看不到错误信息;而手动粘贴是在已打开的窗口中执行,错误会显示且窗口不会自动关闭。
修改后的脚本
$ErrorActionPreference = "Continue" try { $daysSinceLast = Read-Host "请输入上次检查至今的天数" # 验证输入是否为有效数字 if (-not [int]::TryParse($daysSinceLast, [ref]$null)) { throw "输入必须是有效的数字,请重新运行脚本" } $startDate = (Get-Date).AddDays(-[int]$daysSinceLast) Get-WinEvent -FilterHashtable @{ StartTime = $startDate LogName = 'System' Level = 1, 2 } | Select-Object ProviderName, ID | Sort-Object ProviderName –Unique | Format-Table -AutoSize } catch { Write-Host "执行出错:$_" -ForegroundColor Red } finally { Read-Host "按回车键退出..." }
关键改动说明
- 加入
try/catch块:捕获脚本执行过程中的所有错误,并以红色字体显示错误信息,让你能明确问题所在。 - 输入验证:检查用户输入是否为有效数字,避免因非数字输入导致的日期计算错误。
finally块:不管脚本执行成功还是失败,都会等待你按下回车键后再关闭窗口,确保你能完整查看结果或错误信息。
额外调试方法
右键点击脚本文件,选择用PowerShell ISE运行,ISE会保留窗口并显示详细的错误堆栈信息,方便排查更复杂的问题。
内容的提问来源于stack exchange,提问作者Brandon Bronkhorst
相关产品推荐
相关产品推荐

