任务计划的 Powershell 脚本不显示消息框

Posted

技术标签:

【中文标题】任务计划的 Powershell 脚本不显示消息框【英文标题】:Task Scheduled Powershell script do not show message box 【发布时间】:2016-06-23 19:56:17 【问题描述】:

我有一个 Powershell 脚本,它计划在多个主机上过夜运行。 它由任务计划程序中设置的 CMD 脚本(包装器)执行。

在某些情况下,我需要向用户显示一条消息,该消息将在早上到达,让他决定是继续执行脚本还是中止它。

我正在使用 system.windows.froms.MessageBox::Show("My Message","status","4") 来显示消息。

当我从 Windows PowerShell ISE 控制台执行 CMD 脚本时,它运行良好,但是如果我从任务调度程序执行它,它会跳过弹出消息。

这个问题有解决办法吗?

【问题讨论】:

如果“登录时”触发计划任务会发生什么? 你在什么环境下运行计划任务?例如,如果您以 SYSTEM 身份运行它,它会在不同的上下文中运行,您将无法以交互方式看到弹出的任何窗口。 【参考方案1】:

计划任务必须设置为“仅在用户登录时运行”才能与桌面交互(例如显示对话框)。

因此,如果主脚本必须在后台运行(即使没有用户登录),您应该将程序逻辑拆分为从 2 个计划任务运行的 2 个脚本:

一个运行后台脚本的计划任务“无论用户是否登录都运行” 运行脚本的单独计划任务检查后台任务是否仍在运行,并显示对话框。此“GUI 任务”需要设置为“仅在用户登录时运行”并在前触发。 “登录时”。

显然,这 2 个脚本必须以某种方式进行通信(通过文件、REST api 或其他方式)

【讨论】:

以上是关于任务计划的 Powershell 脚本不显示消息框的主要内容,如果未能解决你的问题,请参考以下文章

从计划任务生成文本

powershell 用于运行powershell脚本的计划任务条目

PowerShell 脚本不会作为 Windows 计划任务执行

选择特定网络打印机时显示消息框的批处理脚本

禁用多个计划任务 - PowerShell

作为计划任务运行时,Powershell 脚本无法访问文件