You need to enable JavaScript to run this app. 如何在当前PowerShell终端运行变量指定的可执行程序
优惠活动
大模型
产品
解决方案
定价
更多

如何在当前PowerShell终端运行变量指定的可执行程序

PowerShell 中通过变量指定可执行文件在当前会话运行的实现

正确实现方式

直接使用PowerShell原生调用运算符&执行,和Cmd中%MY_PROGRAM% -my_program_option的执行效果完全一致:

& $MY_PROGRAM -my_program_option

如果MY_PROGRAM是系统环境变量,需替换为PowerShell对应的环境变量读取语法:

& $env:MY_PROGRAM -my_program_option

原写法触发新开终端的原因

之前使用Invoke-Expression "${MY_PROGRAM} -my_program_option"会弹出独立非PowerShell终端,核心问题点:

  • Invoke-Expression的作用是把传入的字符串当做临时PowerShell脚本解析执行,当解析到非PowerShell原生脚本(如.bat、.cmd批处理)、或路径存在空格需要特殊转义时,PowerShell会自动拉起独立的cmd子进程执行内容,进程完全脱离当前会话,表现为新开窗口,程序输出无法回流到当前会话。
  • 直接拼接字符串传给Invoke-Expression,会丢失PowerShell原生命令解析对路径的处理逻辑,带空格的路径会被错误拆分为命令名+参数,进一步触发异常的进程拉起行为。

相关注意事项

  • 使用&调用的控制台程序,标准输出、错误流会直接回流到当前PowerShell终端,无需额外配置。
  • 哪怕MY_PROGRAM存储的是带空格的绝对路径,直接通过&加变量的写法即可正确解析,无需手动拼接引号、处理路径转义。
  • 不要在调用逻辑中嵌套cmd /c、start这类命令,否则会主动触发新窗口启动行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 19:15:07