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

如何让PowerShell运行无扩展名的<something>_test格式可执行文件?

解决无扩展名/特定格式可执行文件的PowerShell执行问题

问题描述

需要运行一批无扩展名、命名格式为<something>_test的可执行文件,使用以下PowerShell命令时报错:

& $test_bin | Tee-Object -FilePath $log_output_file

错误信息:

Cannot run a document in the middle of a pipeline

尝试添加_test到PATHEXT环境变量($env:PATHEXT="$env:PATHEXT;_test")无效,推测该变量仅支持标准扩展名。


可行解决方案

1. 通过cmd /c执行文件

利用cmd对可执行文件的判断逻辑,直接调用cmd来运行目标文件,输出可正常通过管道传递:

cmd /c "$test_bin" | Tee-Object -FilePath $log_output_file

2. 使用Start-Process捕获输出

如果需要更精细控制执行过程,可借助Start-Process的重定向参数处理输出:

# 用临时文件暂存执行输出
$tmpLog = "$log_output_file.tmp"
Start-Process -FilePath $test_bin -NoNewWindow -Wait -RedirectStandardOutput $tmpLog
# 读取临时文件内容,同时输出到控制台和目标日志文件
Get-Content $tmpLog | Tee-Object -FilePath $log_output_file
# 清理临时文件
Remove-Item $tmpLog

3. 修改注册表将_test标记为可执行扩展名

通过注册表配置让Windows识别_test结尾的文件为可执行类型(需管理员权限):

# 创建扩展名关联,绑定到exe文件类型
New-Item -Path "HKLM:\SOFTWARE\Classes\.test" -Force | Out-Null
New-ItemProperty -Path "HKLM:\SOFTWARE\Classes\.test" -Name "(Default)" -Value "exefile" -Force | Out-Null
# 更新PATHEXT环境变量
$env:PATHEXT = "$env:PATHEXT;.TEST"

配置完成后,即可直接用& $test_bin命令运行目标文件,无需额外处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:10:11