AWS SSM自动化文档执行报错:PowerShell参数集无法解析,疑似Bug?
针对你遇到的Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided错误,即便本地PowerShell脚本正常运行、SSM文档参数配置反复核对仍无解的情况,可按以下步骤逐一排查:
核对参数集定义一致性
检查PowerShell脚本的[CmdletBinding()]参数集配置,确保SSM文档传递的参数组合完全匹配脚本中的某一个参数集。比如脚本中若定义了两个互斥的参数集,一个包含DomainAdminAccount,另一个包含JoinServiceAccount,则SSM执行时不能同时传递这两个参数(除非参数集明确允许)。同时确认SSM文档parameters部分的required属性,与脚本里的Mandatory=$true完全对应,既没有漏传必填参数,也没有多传参数集不允许的可选参数。验证SSM YAML文档结构
确保YAML文档的schemaVersion为0.3(SSM自动化文档的标准版本),参数的type(如String、SecureString)与脚本参数类型一致,且YAML大小写严格匹配(比如required必须小写,不能写成Required)。检查mainSteps中inputs的参数引用格式,确认是{{ parameters.参数名 }}的正确写法,没有拼写错误或遗漏parameters.前缀。排查隐性参数冲突
避免自定义参数名与SSM自动化的系统参数重名,比如InstanceId、Region、AutomationExecutionId等。SSM执行时会自动传递这些系统参数,若你的脚本中也定义了同名参数,会触发参数集冲突。简化测试定位问题
先将PowerShell脚本简化为最基础的加域逻辑(去掉分支、条件判断),生成极简版SSM文档执行。如果执行成功,再逐步添加分支逻辑和参数,定位是哪个参数或分支导致的冲突。同时尝试在SSM控制台手动输入参数执行(不使用InputPayload),排除Payload格式解析的问题。升级SSM Agent
Windows实例上的SSM Agent版本过低可能存在参数解析兼容性问题,将Agent升级到最新版本后重新测试。
如果以上所有步骤排查完毕仍无法解决,大概率是SSM服务端的问题,建议提交AWS Support工单,附上完整的SSM文档内容、执行日志、PowerShell脚本代码,让官方工程师进一步排查。
内容的提问来源于stack exchange,提问作者humbleStrength

