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

EC2实例开机时user_data的PowerShell脚本未执行,手动运行可注册ECS集群

Windows EC2 UserData 开机不执行PowerShell脚本的常见原因及修复方案

1. 未添加PowerShell用户数据标识头

Windows EC2的用户数据默认不会自动识别PowerShell代码片段,必须在脚本前后添加专属标签,否则用户数据执行服务会直接跳过该内容,这是你遇到问题的最高概率原因。

你需要把你的脚本修改为如下格式:

<powershell>
Import-Module ECSTools
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster "my-dev-cluster" -EnableTaskIAMRole -EnableTaskENI
</powershell>

手动执行时不需要该标签,直接运行代码即可生效,和你测试的结果一致。

2. 已创建实例未开启用户数据重执行

EC2实例默认仅在首次初始化启动时执行一次用户数据,后续重启/开机不会主动运行修改后的用户数据。如果你是在实例创建完成后才修改的用户数据,需要额外开启重执行配置:

  • 编辑用户数据时,勾选界面上的 在下一次实例重启时执行用户数据 选项
  • 或者在实例内以管理员权限执行如下命令,标记下次启动执行用户数据:
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule

3. 脚本执行上下文权限问题

UserData默认以System账户身份执行,需确认以下配置避免异常退出:

  • 你使用的ECS优化版Windows AMI已预安装ECSTools模块,且System账户有加载该模块的权限,可以在脚本开头添加模块加载容错逻辑,避免模块未就绪导致脚本提前退出:
Import-Module ECSTools -ErrorAction Stop
  • 可在脚本开头添加执行策略设置,避免默认策略阻止脚本运行:
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force

4. 环境变量未即时生效问题

你设置的系统环境变量不会在当前脚本会话中自动生效,可在设置变量后添加一行命令重载环境变量,避免ECS Agent读取到旧的配置:

$env:ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE = $TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:10