Я пишу сценарий PowerShell, который отображает пользовательский интерфейс WPF. Планировщик задач должен запускать этот скрипт каждый день в определенное время.

Сценарий работает нормально, когда я запускаю его вручную, но когда я планирую его с помощью планировщика задач, графический интерфейс не отображается. Задача войдет в рабочее состояние примерно на полминуты, а затем выйдет без ошибок. В течение этого времени он отображается как фоновый процесс в диспетчере задач.

Задача запускается как 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

2
mvrma 24 Апр 2017 в 17:16

2 ответа

Лучший ответ

Не могли бы вы показать код, используемый для отображения формы WPF?

  • Зачем использовать учетную запись SYSTEM?
  • Почему используется параметр -NonInteractive в powershell.exe?

Вы должны использовать зарегистрированного пользователя, чтобы видеть форму WPF во время выполнения.

2
Timothée Christin 24 Апр 2017 в 14:37

PowerShell.exe не загружает сборки WPF. Вам необходимо принудительно загрузить сборки в сценарии:

Add-Type –AssemblyName PresentationFramework
Add-Type –AssemblyName PresentationCore
Add-Type –AssemblyName WindowsBase
0
omniomi 24 Апр 2017 в 14:32