

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

# 使用 Windows Sysprep 建立 Amazon EC2 AMI
<a name="ami-create-win-sysprep"></a>

Microsoft 系統準備 (Windows Sysprep) 工具建立作業系統的通用版本，並在擷取新影像之前刪除特定於執行個體的系統組態。

我們建議您使用 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 來自動建立、管理和部署自訂、安全且最新的「最佳」伺服器映像，這些映像會預先安裝並預先設定為軟體和設定。

您也可以使用 Windows Sysprep 透過 Windows 啟動代理程式來建立標準化 AMI：EC2Launch v2、EC2Launch 和 EC2Config。

**重要**  
請不要使用 Windows Sysprep 來建立執行個體備份。Windows Sysprep 會移除系統特定資訊；移除此資訊可能會在執行個體備份時發生意料之外的結果。

若要疑難排解 Windows Sysprep，請參閱 [針對 Amazon EC2 Windows 執行個體的 Sysprep 問題進行疑難排解](sysprep-troubleshoot.md)。

**Topics**
+ [Windows Sysprep 階段](#sysprep-phases)
+ [開始之前](#sysprep-begin)
+ [使用 Windows Sysprep 搭配 EC2Launch v2](sysprep-using-ec2launchv2.md)
+ [使用 Windows Sysprep 搭配 EC2Launch](ec2launch-sysprep.md)
+ [使用 Windows Sysprep 搭配 EC2Config](sysprep-using.md)

## Windows Sysprep 階段
<a name="sysprep-phases"></a>

Windows Sysprep 會執行下列階段：
+ **一般化**：此 Sysprep 工具會移除映像特定資訊和組態。例如，Windows Sysprep 會移除安全識別符 (SID)、電腦名稱、事件日誌和特定驅動程式等。完成本階段之後，作業系統 (OS) 即準備好建立 AMI。
**注意**  
當您使用 Windows 啟動代理程式執行 Windows Sysprep 時，系統會防止驅動程式被移除，因為 `PersistAllDeviceInstalls` 設定預設為 true。
+ **特製化**：隨插即用會掃描電腦，並為任何偵測到的裝置安裝驅動程式。此 Sysprep 工具會產生電腦名稱和 SID 等 OS 要求。或者，您可以在此階段執行命令。
+ **立即可用體驗 (OOBE)**：系統執行縮簡版的 Windows 安裝程式，並要求您輸入系統語言、時區和已註冊的組織這類資訊。當您使用 Windows 啟動代理程式執行 Windows Sysprep 時，回應檔案會自動執行此階段。

## 開始之前
<a name="sysprep-begin"></a>
+ 執行 Windows Sysprep 之前，除了用於執行 Windows Sysprep 的單一管理員帳戶外，建議您移除其他所有本機使用者帳戶和所有帳戶描述檔。如果您以其他帳戶和描述檔執行 Windows Sysprep，可能會發生非預期的行為，包括遺失描述檔資料或無法完成 Windows Sysprep。
+ 了解有關 [Sysprep 概觀](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)的更多資訊。
+ 了解 [Sysprep 支援的伺服器角色](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)。

# 使用 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
```

# 使用 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)。

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

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

**Topics**
+ [Windows Sysprep 操作](#sysprep-actions)
+ [Sysprep 後續階段](#sysprep-post)
+ [搭配 EC2Config 服務執行 Windows Sysprep](#sysprep-gui-procedure)

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

Windows Sysprep 和 EC2Config 服務會在準備映像時執行下列動作。

1. 當您在 **EC2 服務屬性**對話方塊中選擇**使用 Sysprep 關機**時，系統會執行 **ec2config.exe -sysprep** 命令。

1. EC2Config 服務會讀取 `BundleConfig.xml` 檔案的內容。此檔案預設位在下列目錄：`C:\Program Files\Amazon\Ec2ConfigService\Settings`。

    `BundleConfig.xml` 檔案包括下列設定。您可以變更這些設定：
   + **AutoSysprep**：指出是否自動使用 Windows Sysprep。如果您要從 EC2 服務屬性對話方塊中執行 Windows Sysprep，則不需要變更此值。預設值為 `No`。
   + **SetRDPCertificate**：設定遠端桌面伺服器的自簽憑證。這可讓您安全地使用遠端桌面通訊協定 (RDP) 連線至執行個體。如果新的執行個體應該使用憑證，請將值變更為 `Yes`。此設定不適用於 Windows Server 2012 執行個體，因為這些作業系統可以產生自己的憑證。預設值為 `No`。
   + **SetPasswordAfterSysprep**：在新啟動的執行個體上設定隨機密碼，並以使用者啟動金鑰加密，然後將加密的密碼輸出到主控台。如果新執行個體不應該設定為隨機加密密碼，請將值變更為 `No`。預設值為 `Yes`。
   +  **PreSysprepRunCmd**：要執行之命令的位置。根據預設，命令位於下列目錄：`C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd`。

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

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

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

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

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

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

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

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 sysprep2008.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 的同步命令**：系統會將管理員密碼變碼。此安全措施的用途在於您未啟用 ec2setpassword 設定時，可防止在 Windows Sysprep 完成之後存取執行個體。

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **順序為 3 的同步命令**：系統會執行下列命令：

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   此命令會新增下列登錄機碼，以重新啟用 RDP：

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

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

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

1. OOBE 階段完成後，系統會從下列位置執行 `SetupComplete.cmd`：`C:\Windows\Setup\Scripts\SetupComplete.cmd`。在 2015 年 4 月之前的 Amazon 公有 AMI 中，此檔案為空白，而且不會對映像執行任何操作。在 2015 年 4 月之後的公有 AMI 中，此檔案包含以下數值：**call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"**。

1. 系統會執行 `PostSysprep.cmd`，執行下列操作：
   + 將本機管理員密碼設定為不過期。如果密碼過期，管理員可能會無法登入。
   + 設定 MSSQLServer 機器名稱 (如果已安裝)，讓名稱與 AMI 同步。

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

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

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

EC2Config 接著會執行下列動作：

1. 讀取 config.xml 檔案的內容，並列出所有已啟用的外掛程式。

1. 同時執行所有「Windows 就緒之前」(“Before Windows is ready”) 外掛程式。
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. 完成之後，會將「Windows 就緒」(“Windows is ready”) 訊息傳送至執行個體系統日誌。

1. 同時執行所有「Windows 就緒之後」(“After Windows is ready”) 外掛程式。
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager (Systems Manager) 

如需 Windows 外掛程式的詳細資訊，請參閱[在 EC2 舊版 Windows 作業系統執行個體啟動期間，使用 EC2Config 服務執行任務](ec2config-service.md)。

## 搭配 EC2Config 服務執行 Windows Sysprep
<a name="sysprep-gui-procedure"></a>

使用下列程序，使用 Windows Sysprep 和 EC2Config 服務來建立標準化 AMI。

1. 在 Amazon EC2 主控台中，找出或[建立](creating-an-ami-ebs.md)您要複製的 AMI。

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

1. 自訂執行個體。

1. 在 EC2Config 服務回應檔案中指定組態設定：

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. 從 Windows **開始**選單中，選擇**所有程式**，然後選擇 **EC2ConfigService Settings (EC2ConfigService 設定)**。

1. 選擇 **Ec2 Service Properties (Ec2 服務屬性)** 對話方塊中的 **Image (映像)** 標籤。如需 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中之選項和設定的詳細資訊，請參閱 [Ec2 服務屬性](ec2config-service.md)。

1. 選取管理員密碼的選項，然後選取 **Shutdown with Sysprep (使用 Sysprep 關機)** 或 **Shutdown without Sysprep (不使用 Sysprep 關機)**。EC2Config 會根據您選取的密碼選項來編輯設定檔案。
   + **Random (隨機)**：EC2Config 會產生密碼，並以使用者金鑰加密，然後將已加密的密碼輸出到主控台。我們會在第一次啟動後停用此設定，以便執行個體重新開機或是停止後再啟動時，能持續使用這個密碼。
   + **指定**：密碼會以未加密形式 (純文字) 存放於 Windows Sysprep 回應檔案。Windows Sysprep 接著執行時，會設定管理員密碼。如果您立即關機，即會立即設定密碼。在服務重新啟動時，會移除管理員密碼。請務必記住此密碼，之後即無法再擷取此密碼。
   + **保留現有項目**：執行 Windows Sysprep 或重新啟動 EC2Config 時，管理員帳戶的現有密碼不會變更。請務必記住此密碼，之後即無法再擷取此密碼。

1. 選擇 **OK** (確定)。

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

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

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**注意**  
如果 CMD shell 已在 C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 目錄中，則不需要命令中的雙引號標記。

不過，您必須審慎確認 `Ec2ConfigService\Settings` 資料夾中指定的 XML 檔案選項正確；否則，您可能無法連線至該執行個體。如需設定檔案的詳細資訊，請參閱 [EC2Config 設定檔](ec2config-service.md#UsingConfigXML_WinAMI)。如需從命令列設定 Windows Sysprep 並執行的範例，請參閱 `Ec2ConfigService\Scripts\InstallUpdates.ps1`。