首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能体通过mcp协议,使用subprocess.Popen打开powershell终端时,会闪退?

智能体通过mcp协议,使用subprocess.Popen打开powershell终端时,会闪退?

提问于 2025-11-12 16:32:47
回答 0关注 0查看 3
代码语言:txt
复制
@mcp.tool(name="open_powershell", description="打开新的 PowerShell 窗口")
def open_new_powershell(working_directory:
     Annotated[str, Field(description="可选的工作目录,为空则使用当前目录", examples="C:\\Users")] = "") -> str:
    """打开新的 PowerShell 窗口"""
    try:
        # 1. 检查并修复执行策略(关键步骤!)
        fix_execution_policy()

        # 2. 使用 Windows 'start' 命令启动 PowerShell,这是最可靠的方法
        import subprocess
        import os
        
        # 构建 start 命令
        if working_directory and os.path.exists(working_directory):
            # 切换到指定目录并启动 PowerShell
            command = f'start cmd /c "cd /d "{working_directory}" && powershell.exe -NoExit"'
        else:
            # 直接启动 PowerShell
            command = 'start powershell.exe -NoExit'
        
        # 使用 CREATE_NEW_CONSOLE 标志启动新控制台
        subprocess.Popen(
            command,
            shell=True,
            creationflags=subprocess.CREATE_NEW_CONSOLE
        )

        time.sleep(2)  # 等待窗口初始化
        processes = get_powershell_processes()
        return f"PowerShell 已打开,当前运行进程数: {len(processes)}"
    except Exception as e:
        return f"打开 PowerShell 失败: {str(e)}" return f"打开 PowerShell 失败: {str(e)}"

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档