

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

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

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

**Topics**
+ [Windows Sysprep 操作](#sysprep-actions-ec2launchv2)
+ [Sysprep 後續階段](#sysprep-post-ec2launchv2)
+ [使用 EC2Launch v2 執行 Windows Sysprep](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep 操作
<a name="sysprep-actions-ec2launchv2"></a>

Windows Sysprep 和 EC2Launch v2 會在準備映像時執行下列動作。

1. 當您在 **EC2Launch settings (EC2Launch 設定)** 對話方塊中選擇 **Shutdown with Sysprep (使用 Sysprep 關機)** 時，系統會執行 `ec2launch sysprep` 命令。

1. EC2Launch v2 透過讀取位於 `unattend.xml` 的登錄值來編輯 `HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` 檔案的內容。檔案位於以下目錄：`C:\ProgramData\Amazon\EC2Launch\sysprep`。

1. 系統會執行 `BeforeSysprep.cmd`。此命令會建立一個登錄機碼，如下所示：

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   除非重新啟用 RDP 連接，否則此登錄機碼會停用連線。停用 RDP 連線是必要的安全措施，因為在執行 Windows Sysprep 之後的第一個開機工作階段期間，RDP 會有一小段時間允許連接，而且管理員密碼會空白。

1. EC2Launch v2 服務會執行下列命令來呼叫 Windows Sysprep：

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### 一般化階段
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2 會移除映像特定資訊和組態 (例如電腦名稱和 SID)。如果執行個體是網域成員，即會從網域中移除。`unattend.xml` 回應檔案包括下列可影響此階段的設定：
  + **PersistAllDeviceInstalls**：此設定可防止 Windows 安裝程式移除和重新設定裝置，以加速映像準備程序，因為 Amazon AMI 需要執行特定驅動程式，而且重新偵測這些驅動程式需要一些時間。
  + **DoNotCleanUpNonPresentDevices**：此設定會保留目前不存在之裝置的隨插即用資訊。
+ Windows Sysprep 會在準備建立 AMI 時關閉 OS。系統會啟動新的執行個體，或啟動原始執行個體。

### 特製化階段
<a name="sysprep-specialize-ec2launchv2"></a>

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 `unattend.xml` 回應檔案中指定的組態，來執行下列動作。
+ **CopyProfile**：Windows Sysprep 可以設定為刪除所有使用者描述檔 (包括內建管理員描述檔)。此設定會保留內建管理員帳戶，因此您對該帳戶進行的任何自訂都會帶到新的映像。預設值為 `True`。

  **CopyProfile** 會以現有的本機管理員描述檔取代預設描述檔。執行 Windows Sysprep 之後登入的所有帳戶，將於第一次登入時收到該描述檔的複本及其內容。

  如果您沒有特定的使用者描述檔自訂要帶到新映像，請將此設定變更為 `False`。Windows Sysprep 將移除所有使用者描述檔 (這樣可節省時間和磁碟空間)。
+ **TimeZone**：時區會預設為國際標準時間 (UTC)。
+ **順序為 1 的同步命令**：系統會執行下列命令，以啟用管理員帳戶並指定密碼要求。

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **順序為 2 的同步命令**：系統會將管理員密碼變碼。此安全措施的用途在於您未設定 `setAdminAccount` 任務時，可防止在 Windows Sysprep 完成之後存取執行個體。

  系統從本機啟動代理程式目錄執行以下命令 (`C:\Program Files\Amazon\EC2Launch\`)。

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ 若要啟用遠端桌面連接，系統將終端伺服器 `fDenyTSConnections` 登錄機碼設定為 false。

### OOBE 階段
<a name="sysprep-oobe-ec2launchv2"></a>

1. 系統使用 EC2Launch v2 回應檔案指定下列組態：
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**注意**  
在一般化和特製化階段期間，EC2Launch v2 會監控 OS 的狀態。如果 EC2Launch v2 偵測到 OS 處於 Sysprep 階段，即會將下列訊息發佈至系統日誌：  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. 系統會執行 EC2Launch v2。

## Sysprep 後續階段
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep 完成之後，EC2Launch v2 會將下列訊息傳送至主控台輸出：

```
Windows sysprep configuration complete.
```

EC2Launch v2 接著會執行下列動作：

1. 讀取 `agent-config.yml` 檔案的內容並執行已設定的任務。

1. 執行 `preReady` 階段中的所有任務。

1. 完成後，會將 `Windows is ready` 訊息傳送至執行個體系統日誌。

1. 執行 `PostReady` 階段中的所有任務。

如需 EC2Launch v2 的詳細資訊，請參閱[在 EC2 Windows 執行個體啟動期間，使用 EC2Launch v2 代理程式執行任務](ec2launch-v2.md)。

## 使用 EC2Launch v2 執行 Windows Sysprep
<a name="sysprep-gui-procedure-ec2launchv2"></a>

請使用下列程序，使用 Windows Sysprep 搭配 EC2Launch v2 來建立標準化 AMI。

1. 在 Amazon EC2 主控台中，找出您要複製的 AMI。

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

1. 自訂設定

   1. 在 Windows 的**開始**功能表中，搜尋並選擇 **Amazon EC2Launch 設定**。如需有關 Amazon **EC2Launch 設定**對話方塊中選項和設定的詳細資訊，請參閱[設定 Windows 執行個體的 EC2Launch v2 設定](ec2launch-v2-settings.md)。

   1. 若已做出變更，選擇**儲存**後再關閉。

1. 選擇**透過 Sysprep 關閉**或**不透過 Sysprep 關閉**。

系統會要求您確認要執行 Windows Sysprep 並將執行個體關機，請按一下**是**。EC2Launch v2 執行 Windows Sysprep。接著，系統會將您登出執行個體，然後執行個體會關機。如果您檢查 Amazon EC2 主控台中的 **Instances (執行個體)** 頁面，執行個體狀態會從 `Running` 變更為 `Stopping`，再變更為 `Stopped`。這時便能放心地從此執行個體建立 AMI。

您可以從命令列使用下列命令手動調用 Windows Sysprep 工具：

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```