2017-03-16 27 views
0

所以我試圖使用亞馬遜Ec2Config.exe -sysprep命令來sysprep一個實例,並準備將它克隆到一個新的AMI與我需要安裝的程序。以下是我在這個特定powershell.ps1腳本中運行的代碼的最後兩行代碼,它們是事物似乎偏離的地方(我已經嘗試了執行.exe的幾種不同方法,所有代碼都得到了相同的結果):Ec2Config.exe -sysprep威盛powershell腳本

cd "C:\Program Files\Amazon\Ec2ConfigService\" 
./Ec2Config.exe -sysprep 

如果我將這些行註釋掉,請登錄到實例並手動運行完全相同的命令,事情按預期工作(這意味着所有相關的xml文件都已正確配置)。

現在,這裏是它變得有趣。當這些行沒有被註釋掉並且腳本運行它們時,我可以登錄到運行該腳本的實例並查看通過進程管理器運行的sysprep進程,但它永遠不會結束,並且實例會過早關閉。

我相信在這一點上,考慮到我可以看到在進程管理器中運行的進程,我排除了它是一個權限錯誤(該腳本作爲「NT AUTHORITY \ SYSTEM」用戶運行RunLevel集到最高)。

我的直覺告訴我,這與Ec2config.exe -sysprep不允許你傳入sysprep的'/ quiet'選項有關,但我不確定是否重要。

任何想法?

回答

0

我一直有同樣的問題。我發現了亞馬遜創建的一個腳本。它位於「C:\ Program Files \ Amazon \ Ec2ConfigService \ Scripts」中。這是調用InstallUpdates.ps1,並在您登錄時運行正常,並從管理PowerShell提示符運行。我嘗試了很多事情來讓它遠程工作。我能弄清楚如何讓它運行remotelty的唯一方法是通過從批處理文件調用它來運行它,但它只是在那裏。我已經得出了同樣的結論。我相信/ quiet需要傳遞給ec2config調用的sysprep cmd。以下是我在嘗試添加/安靜現在做的:

$path = 'C:\Program Files\Amazon\Ec2ConfigService\Settings\BundleConfig.xml' 
$BCxml = Get-Content $path 
$BCxml = ($BCxml).replace('<Switches>/oobe /shutdown /generalize</Switches>', '<Switches>/oobe /shutdown /generalize /quiet</Switches>') 
$BCxml | out-file $path -Force 

我可以使用一些XML解析已經這樣做了,但這個工程,是較少的線路。我只是跑這個,它像一個冠軍。希望這可以幫助。