如何编写PowerShell脚本实现弹窗提醒定时关应用、支持会话延长
PowerShell 应用自动关闭提醒脚本实现
以下是可直接运行的完整脚本,匹配你需要的15分钟倒计时提醒、支持延长会话、超时自动关闭应用的需求:
# 加载WPF程序集用于弹出消息框 Add-Type -AssemblyName PresentationCore,PresentationFramework # 配置参数,可根据需求修改 $targetProcess = "Notepad" # 目标应用进程名 $waitMinutes = 15 # 倒计时关闭时长(分钟) $MessageBody = "提示:$targetProcess 应用将在 $waitMinutes 分钟后自动关闭,是否需要延长会话?" $MessageTitle = "应用自动关闭提醒" $ButtonType = [System.Windows.MessageBoxButton]::YesNoCancel $MessageIcon = [System.Windows.MessageBoxImage]::Warning # 弹出消息框获取用户选择 $Result = [System.Windows.MessageBox]::Show($MessageBody, $MessageTitle, $ButtonType, $MessageIcon) Write-Host "用户选择:$Result" # 根据用户选择执行对应逻辑 switch ($Result) { # 用户选择延长会话:等待设定时长后触发下一轮提醒 "Yes" { Write-Host "已延长会话,下一次提醒将在$waitMinutes分钟后触发" Start-Sleep -Seconds ($waitMinutes * 60) & $MyInvocation.MyCommand.Path } # 用户选择立即关闭:直接终止目标应用进程 "No" { Write-Host "正在关闭$targetProcess 进程" Get-Process $targetProcess -ErrorAction SilentlyContinue | Foreach-Object { $_.CloseMainWindow() | Out-Null } } # 用户点击取消/关闭弹窗:倒计时结束后自动关闭应用 "Cancel" { Write-Host "将在$waitMinutes分钟后关闭$targetProcess 进程" Start-Sleep -Seconds ($waitMinutes * 60) Get-Process $targetProcess -ErrorAction SilentlyContinue | Foreach-Object { $_.CloseMainWindow() | Out-Null } } }
自定义修改指引
- 修改目标管控应用:将
$targetProcess = "Notepad"中的Notepad替换为对应应用的进程名,可在任务管理器「详细信息」页查看进程的exe名称(不需要加.exe后缀) - 修改倒计时时长:调整
$waitMinutes = 15的数值即可,单位为分钟 - 修改弹窗提示内容:直接修改
$MessageBody和$MessageTitle的文本内容即可
功能说明
- 脚本运行后会先弹出提示框,告知用户应用即将关闭的时间
- 选择「是」则延长会话,等待设定时长后会再次弹出提醒
- 选择「否」会立即关闭对应应用的所有运行进程
- 选择「取消」或者直接关闭弹窗,脚本会等待设定的时长后自动关闭对应应用
内容的提问来源于stack exchange,提问作者NotWorkingAgain
相关产品推荐
相关产品推荐

