

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

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