You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中调用可执行文件且无需等待其运行结束

PowerShell 异步启动可执行文件解决方案

你之前使用的Invoke-Expression默认会同步执行命令,阻塞当前线程直到命令执行完成,你可以通过以下几种方案实现不阻塞运行exe的需求:

方案1:使用 Start-Process (最常用简便)

Start-Process是PowerShell原生的进程启动命令,默认不会等待进程执行完成,直接返回继续执行后续代码,示例代码如下:

# 后台启动目标exe,不阻塞后续代码执行
Start-Process -FilePath ".\test_vibration.exe"
# 此处其他操作会直接运行,不需要等待exe执行结束

如果需要给exe传递启动参数,可添加-ArgumentList参数:

Start-Process -FilePath ".\test_vibration.exe" -ArgumentList "-mode test","-timeout 20"

方案2:使用后台作业(需要后续获取执行结果时使用)

如果你后续需要读取exe的运行输出、退出状态等信息,可以使用Start-Job启动后台作业:

# 启动后台作业运行目标exe
$vibrationJob = Start-Job -ScriptBlock {
    & ".\test_vibration.exe"
}
# 直接执行后续其他操作
# 若后续需要等待exe执行完成并获取结果,可使用以下代码:
# Wait-Job $vibrationJob | Out-Null
# $runResult = Receive-Job $vibrationJob

方案3:调用.NET Process 类(精细化控制进程时使用)

如果你需要对进程的生命周期、输入输出流做更精细的控制,可以直接调用.NET的Process类实现:

$exeProcess = New-Object System.Diagnostics.Process
$exeProcess.StartInfo.FileName = ".\test_vibration.exe"
$exeProcess.StartInfo.UseShellExecute = $true
# 启动进程,不阻塞
$exeProcess.Start() | Out-Null
# 后续其他操作
# 若后续需要等待进程退出可调用:$exeProcess.WaitForExit()

内容的提问来源于stack exchange,提问作者martorad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:06:03