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

尝试使用Packer SysPrep AWS Windows Server 2016实例时,会引发以下错误:

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

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

Castrohenge的答案设置了正确的path,但是我更愿意将“-NoShutdown”开关传递给SysprepInstance.ps1来实现相同的目标。

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

另外请记住,需要重新启动的function可以lockingsysprep,并将无法向打包者报告。 为了解决这个问题,我简单地在sysprep之前使用packer中的' restart '预配器。

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

 # 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