我正在编写一个向用户显示 WPF GUI 的 PowerShell 脚本。任务计划程序应该每天在特定时间运行此脚本。
当我手动启动脚本时,脚本工作正常,但是当我使用任务计划程序安排它时,GUI 将不会显示。该任务将进入“运行”状态大约半分钟,然后退出且没有错误。在此期间,它在任务管理器中显示为后台进程。
任务以
SYSTEM
用户身份运行,并使用以下参数启动 powershell.exe
:
-NonInteractive -NoProfile -Command "& { C:\path\to\script.ps1 }"
起初我遇到了这篇博文中描述的错误,并且提供的说明修复了它。 现在我只看到 SYSTEM 用户已通过身份验证,并且使用任务中的参数调用了 Powershell。
任何人都可以提供有关如何使 WPF 窗口可见或导致此错误的原因的任何建议吗?
我正在运行 PowerShell v3 和 .NET 版本 3.5。我已经在 Windows Server 2016 和 2012 上对此进行了测试。
Powershell 脚本:https://pastebin.com/xLw76arr
导出的任务 XML:https://pastebin.com/JRTkeFSA
您能展示一下用于显示 WPF 表单的代码吗?
您应该使用登录用户在执行期间查看 WPF 表单。
PowerShell.exe 不加载 WPF 程序集。您需要在脚本中强制加载程序集:
Add-Type –AssemblyName PresentationFramework
Add-Type –AssemblyName PresentationCore
Add-Type –AssemblyName WindowsBase
我在某处读到,当脚本作为计划任务运行时,它在非交互模式下工作。因此,在您的情况下它没有显示任何错误,它只是不显示 GUI。当我也试图让登录表单在事件触发时出现时,我亲眼目睹了这一点,但我失败了很多次,然后阅读了这个概念