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

使用Packer创建Windows AMI时遇CommandNotFoundException错误求助

解决Packer创建Windows 2019 AMI时的CommandNotFoundException错误

问题分析

日志提示指定的PowerShell脚本路径无法被识别,通常由以下几种原因导致:

  • 目标脚本路径实际不存在(比如使用了错误的EC2初始化工具版本)
  • PowerShell执行策略限制了脚本运行
  • 脚本调用格式不正确,未使用正确的执行语法

解决方案

1. 确认EC2初始化工具版本及脚本路径

AWS Windows AMI现在默认使用EC2LaunchV2替代旧版EC2Launch,两者的脚本路径不同:

  • 旧版EC2Launch路径:C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\
  • 新版EC2LaunchV2路径:C:\ProgramData\Amazon\EC2LaunchV2\Scripts\

可以先在Packer配置中添加路径检查命令,确认脚本是否存在:

build {
  sources = ["source.amazon-ebs.windows-2019"]
  provisioner "powershell" {
    inline = [
      # 检查旧版路径
      "Test-Path 'C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Scripts\\InitializeInstance.ps1' | Write-Host '旧版脚本路径存在:'",
      # 检查新版路径
      "Test-Path 'C:\\ProgramData\\Amazon\\EC2LaunchV2\\Scripts\\Initialize-Instance.ps1' | Write-Host '新版脚本路径存在:'"
    ]
  }
}

2. 修正脚本调用语法

即使路径正确,直接运行脚本可能需要用&操作符显式调用,避免PowerShell将路径识别为字符串而非可执行命令:

build {
  sources = ["source.amazon-ebs.windows-2019"]
  provisioner "powershell" {
    inline = [
      # 临时放宽执行策略,避免脚本被阻止
      "Set-ExecutionPolicy Bypass -Scope Process -Force",
      # 用&调用旧版EC2Launch脚本
      "& 'C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Scripts\\InitializeInstance.ps1' -Schedule",
      "& 'C:\\ProgramData\\Amazon\\EC2-Windows\\Launch\\Scripts\\SysprepInstance.ps1' -NoShutdown"
    ]
  }
}

如果使用的是EC2LaunchV2,替换为对应脚本路径和命令:

build {
  sources = ["source.amazon-ebs.windows-2019"]
  provisioner "powershell" {
    inline = [
      "Set-ExecutionPolicy Bypass -Scope Process -Force",
      "& 'C:\\ProgramData\\Amazon\\EC2LaunchV2\\Scripts\\Initialize-Instance.ps1' -Schedule",
      "& 'C:\\ProgramData\\Amazon\\EC2LaunchV2\\Scripts\\Invoke-Sysprep.ps1' -NoShutdown"
    ]
  }
}

3. 处理PowerShell执行策略

如果实例默认执行策略较严格(比如Restricted),会阻止本地脚本运行。通过Set-ExecutionPolicy Bypass -Scope Process -Force仅在当前进程临时放宽限制,不会影响系统全局设置。

验证步骤

  1. 运行修改后的Packer配置,观察控制台输出的路径检查结果
  2. 根据路径存在情况选择对应脚本调用方式
  3. 确认provisioner阶段无报错,AMI创建完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:22:46