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

如何在脚本中复用已启动的独立PowerShell/cmd窗口执行命令

实现方案

方案1:PowerShell 原生进程交互(推荐)

这是Windows平台最稳妥的实现方式,全程不需要第三方工具:

  • 第一步:启动sip-client子进程,重定向标准输入流,后台驻留
# 初始化进程启动参数
$processStartInfo = [System.Diagnostics.ProcessStartInfo]::new()
$processStartInfo.FileName = "sip-client.exe" # 替换为你的sip-client实际路径
$processStartInfo.Arguments = "这里填你注册sip中继的启动参数"
$processStartInfo.RedirectStandardInput = $true
$processStartInfo.UseShellExecute = $false
$processStartInfo.CreateNoWindow = $true # 不需要显示窗口的话可以开启

# 启动进程并保存实例
$global:sipClientProcess = [System.Diagnostics.Process]::Start($processStartInfo)
  • 第二步:后续需要拨打电话时,直接往进程的标准输入流写指令即可
# 假设sip-client的拨打电话指令是 dial 138XXXXXXX
$global:sipClientProcess.StandardInput.WriteLine("dial 138XXXXXXX")
# 指令发送后不需要重启进程,进程会继续保持监听模式
  • 退出时清理进程的操作
if (!$sipClientProcess.HasExited) {
    $sipClientProcess.StandardInput.WriteLine("quit") # 替换为sip-client的退出指令
    $sipClientProcess.WaitForExit(3000)
    $sipClientProcess.Close()
}

方案2:CMD 环境下的替代方案

如果必须用CMD脚本实现,可以用命名管道做进程间通信:

  • 第一步:先创建命名管道,启动sip-client后台监听
:: 创建命名管道,后台启动sip-client绑定管道输入
start /B sip-client.exe < \\.\pipe\sip_client_pipe
  • 第二步:需要发送指令时,往命名管道写入内容即可
:: 发送拨号指令
echo dial 138XXXXXXX > \\.\pipe\sip_client_pipe

注意事项

  • 确保你用的sip-client支持标准输入交互模式,部分CLI工具只支持启动参数传参不支持运行中输入指令,这种情况需要先确认工具的交互逻辑
  • 如果sip-client有输出日志需要读取,可以同步重定向StandardOutput和StandardError流做日志记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:57:03