Команда, которая открывает exe-файл в powershell, затем закрывает powershell, когда exe закрывается и запускает команду? - PullRequest
0 голосов
/ 23 января 2019

Я знаю, как уже запустить исполняемый файл, легкая часть. Я также выяснил, как запустить команду при закрытии powershell:

Register-EngineEvent PowerShell.Exiting –Action { 'Code' }

Но я не могу понять, как мне запустить программу с Powershell, а затем заставить ее выполнить команду в Powershell после ее закрытия, а затем закрыть сам Powershell.

$job = Start-Job { net start wuauserv }
Wait-Job $job
Receive-Job $job

Start-Process -FilePath "C:\Program Files (x86)\CpuCoreParking\CpuCoreParking3.exe" -Wait

Register-EngineEvent PowerShell.Exiting –Action {
$job = Start-Job { net stop wuauserv }
Wait-Job $job
Receive-Job $job
Start-Sleep -Seconds 2
}

Пока это мой код, но, похоже, он не останавливает службу в конце. Ничего не происходит, просто закрывается после закрытия программы. Он что-то делает, но ... не уверен, что.

1 Ответ

0 голосов
/ 24 января 2019

Обнаружены проблемы:

Прежде всего

Register-EngineEvent PowerShell.Exiting –Action {}

Заставляет сам Powershell ждать закрытия.Поэтому, если он закрывается с помощью завершения всех команд, он не будет запускать команду.

Секунда

Invoke-Expression -Command "cmd.exe /c net stop wuauserv"

Для этого требуются права администратора.Так что лучше всего превратить это в исполняемые файлы с правами администратора.Это единственный метод, который приходит на ум.Вот готовый код, который функционирует как следует:

Invoke-Expression -Command "cmd.exe /c net start wuauserv"
Start-Sleep -Seconds 2
Register-EngineEvent PowerShell.Exiting –Action {
Invoke-Expression -Command "cmd.exe /c net stop wuauserv"
}
Start-Process -FilePath "C:\Program Files (x86)\CpuCoreParking\CpuCoreParking3.exe" -Wait
Invoke-Expression -Command "cmd.exe /c net stop wuauserv"
Start-Sleep -Seconds 2

Или вы можете заменить команды Invoke-Expression на

$job = Start-Job { net start/stop wuauserv }
Wait-Job $job
Receive-Job $job

, что, как я считаю, не требует прав администратора.

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