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

PowerShell中使用Open-Device执行远程命令无法捕获输出求助

解决Open-Device连接远程设备后无法捕获cmdd命令输出的问题

问题原因

cmdd命令是在Open-Device建立的交互会话中直接向控制台输出内容,并未通过PowerShell的标准输出流传递,因此常规的Out-String、变量赋值、重定向等方法无法捕获输出。

可行解决方案

1. 远程生成文件后拉取

先让cmdd把输出写入远程设备的本地文件,再通过工具的文件传输命令将文件拉回本地读取:

# 连接远程设备
Open-Device <Device Serial Number>
# 在远程设备执行dir并将输出写入临时文件
cmdd dir > C:\temp\dir_output.txt
# 将远程文件拉到本地(假设工具提供Get-DeviceFile命令)
Get-DeviceFile -Path C:\temp\dir_output.txt -LocalPath .\local_dir_output.txt
# 读取本地文件内容到变量
$output = Get-Content .\local_dir_output.txt

2. 使用会话对象捕获(若工具支持)

如果Open-Device返回可操作的会话对象,尝试通过会话管道传递命令并捕获输出:

# 建立会话并保存到变量
$deviceSession = Open-Device <Device Serial Number>
# 通过会话执行命令并捕获输出
$output = $deviceSession | cmdd dir

3. 转录控制台输出提取内容

用PowerShell的Start-Transcript记录整个会话的控制台输出,再从日志中提取目标命令的输出:

# 开始转录会话输出到日志文件
Start-Transcript -Path .\device_session.log
# 连接设备并执行命令
Open-Device <Device Serial Number>
cmdd dir
# 停止转录
Stop-Transcript
# 从日志中提取dir命令的输出(根据实际输出调整过滤规则)
$output = Get-Content .\device_session.log | Where-Object { $_ -match "Directory of|^\s+[0-9/]+ [0-9:]+ " }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:09:58