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

SSM自动化文档中用PowerShell获取EC2实例名称遇错及相关疑问

问题解答

1. 是否可以不针对任何实例就检索EC2实例名称?

可以。EC2实例列表查询属于AWS账户级操作,无需绑定到特定EC2实例。只要SSM自动化文档的执行角色拥有ec2:DescribeInstances权限,就能直接查询符合条件的EC2实例信息。

2. AWS SSM中的PowerShell是否支持使用Get-EC2Instance这类AWS PowerShell模块命令?

SSM自动化文档的aws:executeScript步骤默认的PowerShell环境没有预装AWS PowerShell模块(AWSPowerShell/AWSPowerShell.NetCore),直接调用Get-EC2Instance这类cmdlet会触发“未识别命令”的错误。

解决办法:

  • 推荐方案:改用AWS CLI执行查询
    SSM执行环境默认预装了AWS CLI,可直接在PowerShell中运行原有CLI命令,或调整为适配PowerShell的写法:

    $instanceNames = aws ec2 describe-instances --filters "Name=tag:Name, Values='MyServer*'" --query "Reservations[*].Instances[*].Tags[?Key=='Name'].Value" --output text
    # 将输出按空格分割为实例名数组(按需使用)
    $instanceNames -split '\s+'
    

    该方案无额外依赖,执行效率更高。

  • 备选方案:手动安装AWS PowerShell模块
    若必须使用PowerShell cmdlet,可在脚本开头先安装并导入模块(需确保执行环境能访问PowerShell Gallery):

    # 安装并导入AWS PowerShell模块
    Install-Module -Name AWSPowerShell.NetCore -Force -Scope CurrentUser -AllowClobber -Repository PSGallery
    Import-Module AWSPowerShell.NetCore
    
    # 执行实例查询
    ((Get-EC2Instance -Filter @{Name="tag:Name"; Values="MyServer*"}).Instances | Select-Object -ExpandProperty Tags | Where-Object Key -eq 'Name').Value
    

    注意:该方案会增加脚本执行时间,且依赖外部网络,稳定性不如直接使用AWS CLI。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:35:14