Packer - AWS Windows 2016 SysPrep 返回退出代码 1

Packer - AWS Windows 2016 SysPrep 返回退出代码 1

尝试使用 Packer 对 AWS Windows Server 2016 实例进行 SysPrep 时抛出以下错误:

Build 'amazon-ebs' errored: Script exited with non-zero exit status: 1. Allowed exit codes are: [0]

我正在SysprepInstance.ps1按照指定的方式调用脚本http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html#ec2launch-sysprep

答案1

Castrohenge 的回答让我走上了正确的道路,但我更喜欢将“-NoShutdown”开关传递给 SysprepInstance.ps1 来实现相同的目标。

C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SysprepInstance.ps1 -NoShutdown

还请记住,需要重新启动的功能可能会锁定 sysprep,并且无法向打包程序报告。为了解决这个问题,我只需使用“重新开始' 在 sysprep 之前在打包程序中配置程序。

答案2

该问题是由于SysprepInstance.ps1脚本使用以下命令关闭实例而引起的:

# Finally, perform sysprep.
Start-Process -FilePath $sysprepPath -ArgumentList ("/oobe /shutdown /generalize `"/unattend:{0}`"" -f $answerFilePath) -Wait -NoNewWindow

我通过在SysprepInstance.ps1运行之前进行修改来解决这个问题,如下所示:

$sysPrepInstanceFile = "C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SysprepInstance.ps1"

(Get-Content $sysPrepInstanceFile -Verbose).Replace("/shutdown ", "") | Set-Content $sysPrepInstanceFile -Verbose

相关内容