电源外壳
我有PowerShell脚本调用另一个.exe文件。 Start-Process ".file.exe" -wait
file.exe是一个带有一些消息的简单窗口,并且只有一个按钮可以关闭该.exe。
这是主脚本运行的第一行。 我想等待并让用户点击关闭以继续执行其余的代码。
但是,该过程开始,但主程序不会等待并开始执行其余的代码。
还有什么我需要做的吗?
不知道这是你在找什么,但你可以使用NSI包装来运行使用ExecWait "powershell -File .file.exe"
, ExecWait "powershell -File .file.exe"
的第一个脚本,这应该可以完成这项工作。
之后运行任何其他脚本,它会做你想要的。
这个建议可能不是最好的方法,但想到开始一个过程。 诀窍是让脚本知道另一个进程正在运行,并且必须传达另一个进程已完成。 一种方法是让EXE在关闭之前通过写入文件进行通信,脚本始终读取文件,等待EXE输入的某个输出。 这很脏,所以另一种方法是在Powershell中使用Windows Forms,并在PowerShell中调用表单而不是EXE(如果需要,我可以详细说明)。 我的第三个解决方案可能是最容易实现的,但不是最干净的。 在启动EXE之前,获取所有进程并将它们存储在一个数组中。 然后,我会启动EXE并重新获取进程,但这次查找不在该阵列中的那个。 这可能是你的EXE,你可以让脚本在while循环中查找,然后等待该过程下降。 例:
$processes = (Get-Process).Id
Start-Process ".file.exe"
Start-Sleep -Seconds 1
$exeProc = (Get-Process).Id | ?{$processes -notcontains $_}
$running = (Get-Process | ?{$_.Id -match $exeProc}).Id
while($running){
Start-Sleep -Seconds 1
$running = (Get-Process | ?{$_.Id -match $exeProc}).Id
}
即使您指定了-Wait开关,启动过程似乎为过程创建了一个新窗口。
之前的工作是将一个-NoNewWindow开关添加到Start-Process
尝试
Start-Process ".file.exe" -NoNewWindow -Wait
链接地址: http://www.djcxy.com/p/89657.html
上一篇: powershell