Обнаружены проблемы:
Прежде всего
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
, что, как я считаю, не требует прав администратора.