You need to enable JavaScript to run this app. AWS SSM send-command CLI转义问题:Mac终端运行Windows EC2 PowerShell脚本求助
优惠活动
大模型
产品
解决方案
定价
更多

AWS SSM send-command CLI转义问题:Mac终端运行Windows EC2 PowerShell脚本求助

正确转义方案

问题根源

执行失败是因为Mac默认使用bash/zsh类Unix shell,直接传递包含$、分号、单引号的PowerShell命令时,特殊字符会被本地shell提前解析、拆分,最终传到SSM的命令内容残缺。

方案1:手动转义后传递

步骤1:正确定义CMD变量

使用单引号包裹整个PowerShell命令,Unix shell的单引号会保留内部所有字符的字面含义,不会解析$变量、分号等特殊符号。仅需要把PowerShell命令内部的单引号替换为'\''即可:

CMD='$username = '\''myusername'\'';$password = '\''mypass'\'';$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;Start-Process Notepad.exe -Credential $credential'

步骤2:调用SSM命令

调用时给commands=$CMD加上双引号,防止CMD内容被shell拆分为多个参数:

aws ssm send-command --instance-ids "i-xxxxx" --document-name "AWS-RunPowerShellScript" --comment "myscript" --parameters commands="$CMD"

方案2:免转义直接调用(更推荐)

如果不想手动处理转义,可以直接把PowerShell命令存入本地文件,通过AWS CLI内置的file://协议读取文件内容作为参数,完全不需要转义处理:

  1. 把你的PowerShell命令保存为本地文件run.ps1
  2. 执行以下命令即可:
aws ssm send-command --instance-ids "i-xxxxx" --document-name "AWS-RunPowerShellScript" --comment "myscript" --parameters commands=file://./run.ps1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:45:03