2017-03-16 15 views
0

私はAmazons Ec2Config.exe -sysprepコマンドを使ってインスタンスをsysprepし、インストールが必要なプログラムで新しいAMIにクローンを作成する準備をしています。以下は、私がこの特定のpowershell.ps1スクリプトで実行したコードの最後の2行です。これらは横向きに見えます(私は.exeを実行するいくつかの異なる方法を試しましたが、すべて同じ結果が得られました):Ec2Config.exe -sysprep VIA powershellスクリプト

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

これらの行をコメントアウトすると、インスタンスにログインして同じコマンドを手動で実行すると、すべての関連するxmlファイルが適切に構成されていることがわかります。

ここで興味深いところがあります。これらの行がコメントアウトされておらず、スクリプトがそれらを実行すると、スクリプトが実行されているインスタンスにログインし、プロセスエクスプローラを介して実行されているsysprepプロセスを見ることができますが、終了することはなく、インスタンスは早期にシャットダウンします。

この時点で、プロセスエクスプローラでプロセスが実行されていることを考えれば、権限エラーです(このスクリプトはRunLevelが設定された「NT AUTHORITY \ SYSTEM」ユーザーとして実行されています)最高から最高)。

Ec2config.exe -sysprepがsysprepの '/ quiet'オプションを渡すことを許可していないという事実に関連していますが、それが重要かどうかはわかりません。

アイデア?

答えて

0

私は同じ種類の問題を抱えています。 Amazonが作成したスクリプトが見つかりました。 「C:¥Program Files¥Amazon¥Ec2ConfigService¥Scripts」にあります。それはInstallUpdates.ps1と呼ばれ、あなたがログインしているときに正常に動作し、管理者のpowershellプロンプトから実行されます。私はそれを遠隔操作するために多くのことを試みました。リモートで実行する方法を理解する唯一の方法は、バッチファイルから呼び出すことで実行することですが、そこにはちょうど座ります。あなたと同じ結論に達しました。 ec2configが呼び出すsysprep cmdに/ quietを渡す必要があると思います。

$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解析を使用して、これを行っている可能性が、これは動作し、少ないラインである:ここでは、私は/静かを追加しようとしてやっているものです。私はちょうどこれを実行し、それはチャンピオンのように動作します。お役に立てれば。