Запланированное приложение pyinstaller Powershell - PullRequest
0 голосов
/ 13 июля 2020

Я создал сценарий PowerShell, который должен автоматически загружать некоторые программы. Мне удалось успешно запланировать запуск сценария при входе в систему определенного пользователя, и это нормально. Сценарий ждет программу, которая автоматически загружается отдельно от этого сценария, а затем запускает необходимые программы. Каждая программа, которую необходимо загрузить, ожидает загрузки предыдущей, прежде чем начать загрузку (они зависят от загружаемой предыдущей). На самом деле работает всего 3 программы, так что ничего сумасшедшего.

Первая программа, загружаемая скриптом, - это программа, которая была скомпилирована с помощью pysinstaller (написана в Python и затем скомпилирована в exe). Теперь по какой-то странной причине я получаю сообщение «Обнаружена фатальная ошибка: не удалось запустить средство запуска сценария» каждый раз, когда запускается запланированная задача сценария. Я подумал, что это может быть потому, что он запускается слишком рано и, возможно, нужно дождаться запуска некоторых других процессов, прежде чем он сможет работать. Так что я немного задержался, но это не сработало. Затем я попытался запустить его, убить, а затем запустить снова, как будто по какой-то причине он не загружался с первого раза. Это тоже не сработало. Любой метод, который я использовал для автоматического запуска, заканчивается этой ошибкой.

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

Как бы то ни было, я не создавал эту Python программу. Это было написано сторонним агентством. Программа также довольно велика, поэтому на ее поломку уйдет очень много времени.

Я был бы рад поделиться кодом, если это поможет. Единственное, что сценарий делает для запуска этих программ, - это командлет Start-Process:

Start-Process [path of exe to run]

В противном случае это просто вариант командлета Get-WmiObject для проверки того, запущен ли процесс:

Get-WmiObject Win32_Process | Where { $_.Path -eq [path of exe] }

Это сработало, как ожидалось, с точки зрения определения, запущена ли программа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...