

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Windows Sysprep 搭配 EC2Launch 建立 AMI
<a name="ec2launch-sysprep"></a>

若透過已安裝 EC2Launch 代理程式的執行個體建立映像，EC2Launch 會在映像就緒時執行特定任務。這包括搭配使用 Windows Sysprep。如需詳細資訊，請參閱[Windows Sysprep 階段](ami-create-win-sysprep.md#sysprep-phases)。

EC2Launch 會為 Windows Sysprep 提供預設回應檔案和批次檔案，這可自動化和保護您 AMI 上的映像準備程序。您可選擇性修改這些檔案。這些檔案預設位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep`。

**重要**  
請不要使用 Windows Sysprep 來建立執行個體備份。Windows Sysprep 會移除系統專屬資訊。如果您移除此資訊，執行個體備份可能產生意外結果。

**Topics**
+ [Windows Sysprep 的 EC2Launch 回應和批次檔案](#ec2launch-sysprep-answer-batch)
+ [使用 EC2Launch 執行 Windows Sysprep](#ec2launch-sysprep-running)
+ [啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由](#update-metadata-KMS)

## Windows Sysprep 的 EC2Launch 回應和批次檔案
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep 的 EC2Launch 回應檔案和批次檔案包含下列內容：

`Unattend.xml`  
這是預設回應檔案。如果您執行 `SysprepInstance.ps1`，或在使用者介面中選擇 **ShutdownWithSysprep**，系統會從這個檔案讀取設定。

`BeforeSysprep.cmd`  
自訂此批次檔案可在 EC2Launch 執行 Windows Sysprep 前執行命令。

`SysprepSpecialize.cmd`  
自訂此批次檔案可在 Windows Sysprep 特製化階段期間執行命令。

## 使用 EC2Launch 執行 Windows Sysprep
<a name="ec2launch-sysprep-running"></a>

完整安裝 Windows Server 2016 和更新版本 (包含桌面體驗) 後，您可以使用 EC2Launch 手動執行 Windows Sysprep，或使用 **EC2 Launch 設定**應用程式執行 Sysprep。

**使用 EC2Launch 設定應用程式執行 Windows Sysprep**

1. 在 Amazon EC2 主控台中，尋找或建立 Windows Server 2016 或更新版本 AMI。

1. 從 AMI 啟動 Windows 執行個體。

1. 連線到您的 Windows 執行個體並加以自訂。

1. 搜尋並執行 **EC2LaunchSettings** 應用程式。根據預設，其位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Settings`。  
![\[EC2 Launch Settings application (EC2 Launch 設定應用程式)\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 視需要選取或清除選項。這些設定存放在 `LaunchConfig.json` 檔案中。

1. 針對 **Administrator Password (管理員密碼)**，請執行下列其中一項作業：
   + 選擇 **Random (隨機)**。EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定，以便執行個體重新開機或停止再啟動時，能持續使用這個密碼。
   + 選擇 **Specify (指定)** 並輸入符合系統要求的密碼。系統會將該密碼以純文字存放於 `LaunchConfig.json`，並在 Windows Sysprep 設定管理員密碼後予以刪除。如果您立即關機，即會立即設定密碼。EC2Launch 會以使用者金鑰加密該密碼。
   + 選擇 **DoNothing (不執行動作)**，並在 `unattend.xml` 檔案中指定密碼。如果您未在 `unattend.xml` 中指定密碼，會停用管理員帳戶。

1. 選擇 **Shutdown with Sysprep (使用 Sysprep 關機)**。

**使用 EC2Launch 手動執行 Windows Sysprep**

1. 在 Amazon EC2 主控台中尋找或建立您想要複製的 Windows Server 2016 或更新版本 Datacenter 版 AMI。

1. 啟動和連線至 Windows 執行個體。

1. 自訂執行個體。

1. 在 `LaunchConfig.json` 檔案中指定設定。根據預設，此檔案位於 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` 目錄。

   針對 `adminPasswordType`，請指定下列其中一個值：  
`Random`  
EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定，以便執行個體重新開機或停止再啟動時，能持續使用這個密碼。  
`Specify`  
EC2Launch 會使用您在 `adminPassword` 中指定的密碼。如果該密碼不符合系統要求，EC2Launch 會改為產生隨機密碼。系統會將該密碼以純文字存放於 `LaunchConfig.json`，並在 Windows Sysprep 設定管理員密碼後予以刪除。EC2Launch 會以使用者金鑰加密該密碼。  
`DoNothing`  
EC2Launch 會使用您在 `unattend.xml` 檔案中指定的密碼。如果您未在 `unattend.xml` 中指定密碼，會停用管理員帳戶。

1. (選用) 請在 `unattend.xml` 和其他組態檔案中指定設定。如果您計畫安裝，就不需要變更這些檔案。根據預設，檔案位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep`。

1. 在 Windows PowerShell 中，執行 `./InitializeInstance.ps1 -Schedule`。根據預設，指令碼位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts`。此指令碼會排程執行個體在下一次開機期間初始化。您必須在執行下一步的 `SysprepInstance.ps1` 指令碼前，執行此指令碼。

1. 在 Windows PowerShell 中，執行 `./SysprepInstance.ps1`。根據預設，指令碼位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts`。

系統會將您登出執行個體，然後執行個體會關機。如果您檢查 Amazon EC2 主控台中的 **Instances (執行個體)** 頁面，執行個體狀態會從 `Running` 變更為 `Stopping`，然後變更為 `Stopped`。這時便能放心地從這個執行個體建立 AMI。

## 啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由
<a name="update-metadata-KMS"></a>

若要在啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由，請執行下列其中一項動作：
+ 執行 EC2LaunchSettings GUI (C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe)，然後選取選項以搭配 Windows Sysprep 來關機。
+ 在建立 AMI 之前，請執行 EC2LaunchSettings，且不搭配 Windows Sysprep 來關機。這樣會將 EC2 啟動初始化任務設為在下一次開機時執行，如此將會根據執行個體的子網來設定路由。
+ 在從 [PowerShell](ec2launch-config.md#ec2launch-inittasks) 建立 AMI 之前，手動重新排程 EC2 啟動初始化任務。
**重要**  
在重新排定任務之前，請記下預設密碼重設行為。
+ 若要在發生 Windows 啟用失敗或與執行個體中繼資料通訊失敗的執行中的執行個體上更新路由，請參閱[「無法啟用 Windows」](common-messages.md#activate-windows)。