Powershell WPF GUI 作为计划任务不可见

Powershell WPF GUI not visible as scheduled task

我正在编写一个向用户显示 WPF GUI 的 PowerShell 脚本。任务计划程序应该每天在特定时间 运行 此脚本。

脚本在我手动启动时工作正常,但当我使用任务计划程序安排它时,GUI 不会显示。任务会进入'running'状态约半分钟,然后无误退出。在此期间,它在任务管理器中显示为后台进程。

任务是 运行 作为 SYSTEM 用户并使用这些参数启动 powershell.exe

-NonInteractive -NoProfile -Command "& { C:\path\to\script.ps1 }"

起初我遇到了 this blog post 中描述的错误,提供的说明修复了它。 现在我只看到 SYSTEM 用户已通过身份验证,并且使用任务中的参数调用了 Powershell。

任何人都可以就如何使 WPF window 可见或导致此错误的原因提供任何建议吗?

我正在 运行使用 .NET 3.5 版的 PowerShell v3。我已经在 Windows Server 2016 和 2012 上对此进行了测试。

Powershell 脚本:https://pastebin.com/xLw76arr

导出的任务XML:https://pastebin.com/JRTkeFSA

PowerShell.exe 不加载 WPF 程序集。您需要在脚本中强制加载程序集:

Add-Type –AssemblyName PresentationFramework
Add-Type –AssemblyName PresentationCore
Add-Type –AssemblyName WindowsBase

你能显示用于显示 WPF 窗体的代码吗?

  • 为什么要使用 SYSTEM 帐户?
  • 为什么要使用 powershell.exe 的 -NonInteractive 参数?

您应该使用登录用户在执行期间查看 WPF 表单。