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

EC2 Windows实例通过用户数据执行脚本失败:未生成预期文件

EC2 Windows实例用户数据脚本没生成文件?这么排查

先查执行日志

Windows实例里,用户数据的执行日志位置分两种:

  • 老实例用EC2ConfigService:日志在C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
  • 新实例用EC2Launch v2:日志在C:\ProgramData\Amazon\EC2Launch\log\agent.log
    直接打开日志搜报错,比如权限不足、路径写错这类问题,一查一个准。

脚本本身的坑点排查

  • 路径和日期格式:
    你脚本里用$env:SystemRoot理论上对应C:\Windows,但不如直接写死C:\Windows\Temp试试,避免变量解析出问题。另外日期格式里的hh是12小时制,换成HH(24小时制),或者干脆用MMddyyHHmm这种不带横杠的格式,防止特殊字符导致路径无效。
  • 加强制参数和日志输出:
    把脚本改成这样,强制创建文件同时记录执行情况:
    $logPath = "C:\Windows\Temp\userdata-log.txt"
    $file = "C:\Windows\Temp\" + (Get-Date).ToString("MM-dd-yy-HH-mm")
    "准备创建文件:$file" | Out-File $logPath -Append
    New-Item $file -ItemType file -Force
    "创建结果:$?" | Out-File $logPath -Append
    
    加-Force能确保就算有重名文件或者权限小问题也能创建,日志能直接告诉你到底成功没。

其他可能的原因

  • 用户数据没重新执行:如果是已经在运行的实例,改完用户数据后得重启EC2ConfigService/EC2Launch服务,或者直接重启实例,不然新的用户数据不会跑。
  • 临时文件被清理:Windows的Temp目录有自动清理机制,刚创建的文件可能被删了,换个路径比如C:\Temp(先手动建这个文件夹)测试下,排除清理的问题。

修正后的完整脚本

<powershell>
$filePath = "C:\Windows\Temp\" + (Get-Date).ToString("MM-dd-yy-HH-mm")
New-Item -Path $filePath -ItemType File -Force
Write-Output "已创建文件:$filePath" | Out-File "C:\Windows\Temp\userdata-exec.log" -Append
</powershell>
<persist>true</persist>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:36