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

如何通过SSM API在AWS EC2实例上启动可交互查看的Google Chrome进程?

如何通过SSM API在AWS EC2实例上启动可交互查看的Google Chrome进程?

这个问题我之前处理过,核心原因很明确:SSM执行PowerShell命令默认是在会话0(系统后台会话)运行的,而你通过RDP登录的是普通用户的桌面会话(通常是会话1、2这类非0会话),不同会话之间的进程是完全隔离的,所以你看不到后台启动的Chrome窗口。

下面给你两个实用的解决方案,亲测有效:

方案一:使用PsExec指定用户会话启动(推荐)

PsExec是Windows Sysinternals工具集里的工具,它可以跨会话启动进程,直接把Chrome启动到你RDP登录的用户桌面。

步骤:

  1. 先确保EC2实例上有PsExec工具:
    你可以先通过SSM执行命令下载PsExec到实例,比如:
    Invoke-WebRequest -Uri "https://download.sysinternals.com/files/PSTools.zip" -OutFile "C:\PSTools.zip"
    Expand-Archive -Path "C:\PSTools.zip" -DestinationPath "C:\PSTools"
    
  2. 修改你的SSM命令,先获取当前活跃的用户会话ID,再用PsExec启动Chrome:
    # 获取当前RDP登录用户的会话ID(如果多个用户登录,需要调整逻辑选目标会话)
    $sessionId = (quser | Select-Object -Skip 1 | ForEach-Object { ($_ -split '\s+')[2] })
    # 用PsExec在目标会话启动Chrome
    & "C:\PSTools\psexec.exe" -i $sessionId "C:\Program Files\Google\Chrome\Application\chrome.exe"
    

方案二:通过进程会话ID关联启动

如果不想用第三方工具,也可以通过获取用户桌面进程的会话ID,再启动Chrome到对应会话:

# 找到当前登录用户的explorer.exe进程(它运行在用户桌面会话)
$userSessionProcess = Get-Process explorer | Where-Object { $_.SessionId -ne 0 } | Select-Object -First 1
if ($userSessionProcess) {
    $targetSessionId = $userSessionProcess.SessionId
    # 创建进程启动信息,指定会话ID启动Chrome
    $startInfo = New-Object System.Diagnostics.ProcessStartInfo
    $startInfo.FileName = "C:\Program Files\Google\Chrome\Application\chrome.exe"
    $startInfo.UseShellExecute = $false
    $process = New-Object System.Diagnostics.Process
    $process.StartInfo = $startInfo
    # 这里需要管理员权限才能跨会话启动,启动后Chrome会出现在目标会话桌面
    $process.Start() | Out-Null
}

关键注意事项:

  • 你的SSM命令必须以管理员权限执行,跨会话启动进程需要足够权限;
  • 如果EC2实例有多个用户同时登录,记得通过quser命令确认目标会话ID,避免启动到其他用户桌面;
  • 确保Chrome的安装路径正确,不同版本的Chrome路径可能略有差异。

备注:内容来源于stack exchange,提问作者Hasse Andersen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:00:29