【问题标题】:Powershell WPF GUI not visible as scheduled taskPowershell WPF GUI 作为计划任务不可见
【发布时间】:2017-09-21 06:41:46
【问题描述】:

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

当我手动启动脚本时,它运行良好,但是当我使用任务计划程序安排它时,GUI 不会显示。该任务将进入“运行”状态大约半分钟,然后退出而没有错误。在此期间,它在任务管理器中显示为后台进程。

任务以SYSTEM 用户身份运行,并使用以下参数启动powershell.exe

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

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

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

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

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

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

【问题讨论】:

    标签: wpf powershell scheduled-tasks windows-server


    【解决方案1】:

    能否展示用于显示 WPF 表单的代码?

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

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

    【讨论】:

    • 我尝试使用我的帐户运行它,但它也不起作用。除了显示 GUI 之外,我不希望用户将 powershell 用于其他任何事情。
    • 我通过设置“仅在登录时运行”并使用我的帐户来运行它。我会把你标记为答案。
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多