如何通过 SSM 命令将进程作为非后台进程启动?

如何通过 SSM 命令将进程作为非后台进程启动?

我想使用 SSM Api 在我的 AWS EC2 服务器上启动 Google Chrome(chrome.exe)来启动 Powershell 命令。

我通过 C# SSM API 运行 powershell 命令:

AmazonSimpleSystemsManagementClient ssmClient = new AmazonSimpleSystemsManagementClient(credentials, Amazon.RegionEndpoint.GetBySystemName(region));

var ssmDocument = "AWS-RunPowerShellScript";

string command = @"Start-Process -FilePath 'C:\Program Files\Google\Chrome\Application\chrome.exe'";
var request = new SendCommandRequest()
{
    InstanceIds = new List<string> { instanceId },
    DocumentName = ssmDocument,
    Parameters = new Dictionary<string, List<string>>
    {
        { "commands", new List<string> { command } }
    },
};
var response = await ssmClient.SendCommandAsync(request);

虽然它确实启动了 Google Chrome,但问题是该进程作为后台进程运行。因此,如果我通过 RDP 连接到服务器,我将无法查看它。

如果我通过 RDP 连接直接在服务器上运行 Powershell 命令,那么 Chrome 就会完全启动并可见。

我需要能够查看浏览器窗口,该如何实现?

答案1

SSM 在后台运行会议。如果您有多个 RDP 会话,那么您将如何选择在哪个会话中启动 chrome?如果没有活动的 RDP 会话,那么它会失败吗?

SSM 默认也以特定用户身份运行:ssm-user。只有 SYSTEM 可以在另一个会话中启动进程,因此 SSM 无论如何都没有权限。


你可以解决方法这些限制与其他工具如 PSExec 或计划任务,但是SSM对此来说并不理想。

相关内容