在Powershell中打开exe文件的命令,然后在exe关闭并运行命令时关闭powershell?

时间:2019-01-22 23:38:26

标签: powershell cmd

我知道如何已经运行exe文件,简单的部分。 我还弄清楚了Powershell关闭时如何运行命令:

city_populations = [city['Population'] for city in cities]

但是我不知道如何使用Powershell运行程序,然后在关闭时再在Powershell中执行该命令,然后再关闭Powershell本身。

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

到目前为止,这是我的代码,但似乎并没有最终停止该服务。什么也没发生,它只是在我关闭程序后才关闭。它确实可以执行某些操作,但是...不确定。

1 个答案:

答案 0 :(得分:0)

找出问题所在:

首先

Register-EngineEvent PowerShell.Exiting –Action {}

使Powershell本身等待关闭。因此,如果通过完成所有命令的执行将其关闭,则它将不会运行该命令。

第二

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

这需要管理员权限。因此,最好将其转换为具有管理员权限的exe文件。这就是想到的一种方法。这是可以正常运行的完成的代码:

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

我相信不需要管理员权限。