

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

# 在 EC2 Windows 執行個體啟動期間，使用 EC2Launch v2 代理程式執行任務
<a name="ec2launch-v2"></a>

根據預設，從 AWS Windows Server 2022 和 Windows Server 2025 AMI 啟動的所有支援 Amazon EC2 執行個體都包含 EC2Launch v2 啟動代理程式 (`EC2Launch.exe`)。 AMIs 我們亦提供將 EC2Launch v2 安裝為預設啟動代理程式的 Windows Server 2016 和 2019 AMI。除了包含 EC2Launch v1 的 Windows Server 2016 和 2019 AMI 之外，亦提供了這些 AMI。您可以從 Amazon EC2 主控台中的 **AMI** 頁面，在搜尋中輸入以下字首來搜尋預設包含 EC2Launch v2 的 Windows AMI：`EC2LaunchV2-Windows_Server-*`。

若要比較啟動代理程式版本功能，請參閱 [比較 Amazon EC2 啟動代理程式](configure-launch-agents.md#ec2launch-agent-compare)。

EC2Launch v2 在執行個體啟動期間執行任務，並在執行個體停止並稍後啟動或重新啟動時執行。EC2Launch v2 也可依據需求執行任務。其中部分作業為自動啟用，其他作業則必須手動啟用。EC2Launch v2 服務支援所有 EC2Config 和 EC2Launch 功能。

此服務會使用組態檔來控制其操作。您可以使用圖形化工具或直接將組態檔編輯為單一 .yml 檔案 (`agent-config.yml`) 來更新組態檔。若要了解關於日誌檔案位置的詳細資訊，請參閱 [EC2Launch v2 目錄結構](#ec2launch-v2-directory)。

EC2Launch v2 會發佈 Windows 事件日誌，協助您疑難排解錯誤並設定觸發程序。如需詳細資訊，請參閱[Windows 事件日誌](ec2launchv2-troubleshooting.md#ec2launchv2-windows-event-logs)。

**支援的作業系統版本**  
EC2Launch v2 代理程式支援下列 Windows Server 作業系統 (OS) 版本：
+ Windows Server 2025
+ Windows Server 2022
+ Windows Server 2019 (長期服務通道和半年通道)
+ Windows Server 2016

**預設會執行的任務**  
EC2Launch v2 代理程式在初始執行個體啟動期間，預設僅會執行以下任務一次。依據任務在其啟動階段執行的順序對其進行整理。

`Boot` 階段
+ extendRootPartition

`PreReady` 階段
+ activateWindows
+ setDnsSuffix
+ setAdminAccount
+ setWallpaper

`PostReady` 階段
+ startSsm

## EC2Launch v2 概念
<a name="ec2launch-v2-concepts"></a>

考慮 EC2Launch v2 時，下列概念有助於理解。

**agent-config**  
`agent-config` 是位於 EC2Launch v2 組態資料夾中的檔案。包括開機、網路、預備就緒和後備就緒階段的組態。此檔案用於指定執行個體組態，設定應在 AMI 第一次啟動或後續啟動時執行的任務。  
依預設，EC2Launch v2 安裝會安裝一個 `agent-config` 檔案，它包含標準 Amazon Windows AMI 中使用的推薦組態。您可以更新該組態檔案，以變更 EC2Launch v2 指定的 AMI 的預設開機經驗。若要了解關於日誌檔案位置的詳細資訊，請參閱 [EC2Launch v2 目錄結構](#ec2launch-v2-directory)。

**Frequency (頻率)**  
任務頻率確定何時執行任務，這取決於開機內容。大多數任務只有一個允許的頻率。您可以指定 `executeScript` 任務的頻率。  
您將在 [EC2Launch v2 任務組態](ec2launch-v2-settings.md#ec2launch-v2-task-configuration) 中看到以下頻率。  
+ 一次 – 當 AMI 已初次啟動 (完成 Sysprep)，執行任務一次。
+ 始終 – 每次啟動代理程式執行時，任務都會執行。啟動代理程式會執行於下列時間：
  + 執行個體啟動或重新啟動
  + 執行 EC2Launch 服務
  + `EC2Launch.exe run` 被叫用

**階段**  
階段是 EC2Launch v2 代理程式所執行任務的邏輯群組。某些工作只能在特定階段中執行。其他人可以在多個階段運行。使用 `agent-config.yml` 時，必須指定階段清單，以及要在每個階段中執行的任務清單。  
此服務會以下列順序執行各階段：    
階段 1：開機  
  
階段 2：網路  
  
階段 3：預備就緒  
  
Windows 已準備就緒  
PreReady 階段完成後，服務會將 `Windows is ready` 訊息傳送到 Amazon EC2 主控台。  
階段 4：後備就緒  
使用者資料會在 *PostReady* 階段執行。部分指令碼版本會在 `agent-config.yml` 檔案*後備就緒*階段之前執行，有些則會在之後執行，如下所示：    
`agent-config.yml` 之前  
+ YAML 使用者資料版本 1.1
+ XML 使用者資料  
`agent-config.yml` 之後  
+ YAML 使用者資料 1.0 版 (舊版供回溯相容性之用)
如需階段和任務的範例，請參閱 [範例：`agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-example-agent-config)。  
使用使用者資料時，您必須指定代理程式要執行的任務清單。此階段是隱含的。如需任務範例，請參閱 [範例：使用者資料](ec2launch-v2-settings.md#ec2launch-v2-example-user-data)。  
EC2Launch v2 會依照您在 `agent-config.yml` 和使用者資料中指定的順序來執行任務清單。階段按順序執行。下一個階段會在前一個階段完成之後開始。任務也會依序執行。

**任務**  
您可以調用任務以在執行個體上執行動作。您可以在 `agent-config.yml` 檔案中或透過使用者資料來設定任務。如需 EC2Launch v2 可用任務的清單，請參閱 [EC2Launch v2 任務](#ec2launch-v2-tasks)。如需了解任務組態結構描述和詳細資訊，請參閱 [EC2Launch v2 任務組態](ec2launch-v2-settings.md#ec2launch-v2-task-configuration)。

**使用者資料**  
使用者資料是啟動執行個體時可設定的資料。您可以更新使用者資料，以動態變更自訂 AMI 或快速入門 AMI 的設定方式。EC2Launch v2 支援 60 kB 的使用者資料輸入長度。使用者資料只包含 UserData 階段，因此在 `agent-config` 檔案之後執行。您可以在使用啟動執行個體精靈啟動執行個體時輸入使用者資料，也可以從 EC2 主控台修改使用者資料。如需處理使用者資料的資訊，請參閱 [Amazon EC2 如何處理 Windows 執行個體的使用者資料](user-data.md#ec2-windows-user-data)。

## EC2Launch v2 任務概觀
<a name="ec2launch-v2-tasks"></a>

EC2Launch v2 可以在每次開機時執行下列任務：
+ 設定新的和選擇性的自訂桌布來呈現執行個體的相關資訊。
+ 設定在本機電腦上建立的系統管理員帳戶的屬性。
+ 將 DNS 尾碼新增至搜尋尾碼清單。只有不存在的尾碼才會加入到清單中。
+ 為任何額外的磁碟區設定磁碟機代號，並將它們延伸至使用可用空間。
+ 將檔案從組態寫入磁碟。
+ 執行 EC2Launch v2 組態檔案指定的指令碼，或從 `user-data` 執行指令碼。`user-data` 的指令碼可以是純文字或壓縮，並以 base64 格式提供。
+ 執行具有指定參數的程式。
+ 設定電腦名稱。
+ 將執行個體資訊傳送到 Amazon EC2 主控台。
+ 傳送 RDP 憑證指紋到 Amazon EC2 主控台。
+ 動態擴充作業系統的分割區，以包含任何尚未分割的空間。
+ 執行使用者資料。如需指定使用者資料的詳細資訊，請參閱[EC2Launch v2 任務組態](ec2launch-v2-settings.md#ec2launch-v2-task-configuration)。
+ 設定非持久性靜態路由以到達中繼資料服務和 AWS KMS 伺服器。
+ 將非開機磁碟分割設定為 `mbr` 或 `gpt`。
+ 在 Sysprep 後啟動 Systems Manager 服務。
+ 最佳化 ENA 設定。
+ 為更新的 Windows 版本啟用開啟 SSH。
+ 啟用巨型訊框。
+ 將 Sysprep 設定為在 EC2Launch v2 中執行。
+ 發佈 Windows 事件日誌。

## EC2Launch v2 目錄結構
<a name="ec2launch-v2-directory"></a>

EC2Launch v2 應該安裝在以下目錄中：
+ 服務二進位檔案： `%ProgramFiles%\Amazon\EC2Launch`
+ 服務資料 (設定、日誌檔和狀態檔)：`%ProgramData%\Amazon\EC2Launch`

**注意**  
根據預設，Windows 會將檔案和資料夾隱藏在 `C:\ProgramData` 下。若要檢視 EC2Launch v2 目錄和檔案，您必須在 Windows 檔案總管中輸入路徑或變更資料夾屬性，才可顯示隱藏的檔案和資料夾。

`%ProgramFiles%\Amazon\EC2Launch` 目錄包含二進位檔案和支援的程式庫。它包括以下子目錄：
+ `settings`
  + `EC2LaunchSettingsUI.exe` – 用於修改 `agent-config.yml` 檔案的使用者介面
  + `YamlDotNet.dll` – 用於支援使用者介面中的某些操作的 DLL
+ `tools`
  + `ebsnvme-id.exe` – 用於檢查執行個體上 EBS 磁碟區工具
  + `AWSAcpiSpcrReader.exe` – 用於確定要使用的正確 COM 連接埠工具
  + `EC2LaunchEventMessage.dll` – 用於支援 EC2Launch 的 Windows 事件日誌記錄的 DLL
+ `service`
  + `EC2LaunchService.exe` – 啟動代理程式以服務方式執行時，所啟動的 Windows 服務可執行檔
+ `EC2AgentTelemetry.dll` – 用於支援 EC2 代理程式遙測的 DLL
+ `EC2Launch.exe` – 主 EC2Launch 可執行檔
+ `EC2LaunchAgentAttribution.txt` – EC2 Launch 中使用的代碼屬性

`%ProgramData%\Amazon\EC2Launch` 目錄包含下列子目錄。服務產生的所有資料，包括日誌、組態和狀態，都會儲存在此目錄中。
+ `config` – 組態

  服務組態檔案儲存在此目錄中為 `agent-config.yml`。此檔案可以更新，以修改、新增或移除服務所執行的預設任務。在此目錄中建立檔案的許可限制為系統管理員帳戶，以防止權限提升。
+ `log` – 執行個體日誌

  服務 (`agent.log`)、效能 (`bench.log`) 和遙測 (`telemetry.log`) 的日誌會存放在此目錄中。當 `agent.log` 達到 1 MB 大小時，會自動輪換，並使用時間戳記格式建立備份檔案 （例如 `agent-2026-03-02T18-56-39.188.log`)。一次只會維護一個備份日誌檔案。
+ `state` – 服務狀態資料

  服務用來判斷應該執行哪些任務的狀態會儲存在此處。有一個 `.run-once` 檔案會指出服務是否已在 Sysprep 之後執行 (因此，下次執行時會略過頻率為一次的任務)。此子目錄包含 `state.json` 和 `previous-state.json` 以追蹤每個任務的狀態。
+ `sysprep` – Sysprep

  此目錄包含的檔案，可用來判斷 Sysprep 在建立可重複使用的自訂 Windows AMI 時要執行哪些作業。
+ `wallpaper` – 桌布

  此桌布映像會存放在此目錄。

## 遙測
<a name="ec2launch-v2-telemetry"></a>

遙測是其他資訊，有助於 AWS 更了解您的需求、診斷問題和提供功能，以改善您使用 的體驗 AWS 服務。

EC2Launch v2 版本 `2.1.592` 及更新版本會收集遙測，例如用量指標和錯誤。這些資料是從執行 EC2Launch v2 的 Amazon EC2 執行個體中收集的資料。這包括 擁有的所有 Windows AMIs AWS。

EC2Launch v2 會收集下列類型的遙測：
+ **用量資訊** – 代理程式命令、安裝方法和排程的執行頻率。
+ **錯誤和診斷資訊** – 代理程式安裝錯誤代碼、執行錯誤代碼和錯誤呼叫堆疊。

從版本 2.0.592 到 2.1.1 所收集資料的範例：

```
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IsTelemetryEnabled=true
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentOsArch=windows_amd64
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentCommandErrorCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AdminPasswordTypeCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IpConflictDetectionCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentErrorLocation=addroutes.go:49
```

自版本 2.2.63 起，EC2 代理程式遙測資料將格式化為 JSON 物件：

```
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2" ... }
```

預設為啟用遙測。您可隨時停用遙測收集。

**停用執行個體的遙測**  
若要停用單一執行個體的遙測，您可以設定系統環境變數，或使用 MSI 來修改安裝。

若要藉由設定系統環境變數來停用遙測，請以管理員身分執行下列命令。

```
setx /M EC2LAUNCH_TELEMETRY 0
```

若要使用 MSI 來停用遙測，請在[下載 MSI](ec2launch-v2-install.md) 後執行以下命令。

```
msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q
```

**Topics**
+ [EC2Launch v2 概念](#ec2launch-v2-concepts)
+ [EC2Launch v2 任務概觀](#ec2launch-v2-tasks)
+ [EC2Launch v2 目錄結構](#ec2launch-v2-directory)
+ [遙測](#ec2launch-v2-telemetry)
+ [安裝最新版本的 EC2Launch v2](ec2launch-v2-install.md)
+ [設定 Windows 執行個體的 EC2Launch v2 設定](ec2launch-v2-settings.md)
+ [EC2Launch v2 啟動任務的任務定義](ec2launch-v2-task-definitions.md)
+ [疑難排解使用 EC2Launch v2 代理程式的問題](ec2launchv2-troubleshooting.md)
+ [EC2Launch v2 版本歷程記錄](ec2launchv2-versions.md)

# 安裝最新版本的 EC2Launch v2
<a name="ec2launch-v2-install"></a>

您可使用以下其中一種方法，在 EC2 執行個體上安裝 EC2Launch v2 代理程式：
+ 從 Amazon S3 下載代理程式，再使用 Windows PowerShell 進行安裝。如需下載 URL，請參閱 [在 Amazon S3 上下載 EC2Launch v2](#lv2-download-s3)。
+ 透過 SSM Distributor 進行安裝。
+ 當您建立自訂映像時，請從 EC2 Image Builder 元件安裝 。
+ 從已預先安裝 EC2Launch v2 的 AMI 啟動執行個體。

**警告**  
AmazonEC2Launch.msi 會解除安裝先前版本的 EC2 啟動服務，例如 EC2Launch (v1) 和 EC2Config。

如需了解安裝步驟，請選取符合您偏好方法的索引標籤。

------
#### [ PowerShell ]

若要使用 Windows PowerShell 安裝最新版本的 EC2Launch v2 代理程式，請依照下列步驟執行。

1. 建立您的本機目錄。

   ```
   New-Item -Path "$env:USERPROFILE\Desktop\EC2Launchv2" -ItemType Directory
   ```

1. 為您的下載位置設定 URL。使用您將使用的 Amazon S3 URL 執行以下命令。如需下載 URL，請參閱 [在 Amazon S3 上下載 EC2Launch v2](#lv2-download-s3)

   ```
   $Url = "Amazon S3 URL/AmazonEC2Launch.msi"
   ```

1. 使用以下複合命令來下載和安裝代理程式：

   ```
   $DownloadFile = "$env:USERPROFILE\Desktop\EC2Launchv2\" + $(Split-Path -Path $Url -Leaf)
   Invoke-WebRequest -Uri $Url -OutFile $DownloadFile
   msiexec /i "$DownloadFile"
   ```
**注意**  
如果您在下載檔案時收到錯誤，且您使用 Windows Server 2016 或更早版本，則 PowerShell 終端機可能需要啟用 TLS 1.2。您可以使用下列命令為目前的 PowerShell 工作階段啟用 TLS 1.2，然後再試一次：  

   ```
   [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
   ```

1. 此 **msiexec** 命令會在 Windows Server 執行個體的下列位置安裝 EC2Launch v2：`%ProgramFiles%\Amazon\EC2Launch`。若要驗證安裝是否執行，您可以檢查執行個體上的本機檔案系統。

------
#### [ AWS Systems Manager Distributor ]

若要使用 AWS Systems Manager 快速設定來設定 EC2Launch v2 的自動更新，請參閱 [使用 Distributor 快速設定自動安裝和更新](#lv2-distributor-quick-setup)。

您也可以從 AWS Systems Manager Distributor 執行一次性安裝 `AWSEC2Launch-Agent` 套件。如需有關如何從 Systems Manager Distributor 安裝套件的指示，請參閱「AWS Systems Manager  使用者指南」**中的[安裝或更新套件](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-deploy.html)。

------
#### [ EC2 Image Builder component ]

您可以在使用 EC2 Image Builder 建置自訂映像時，安裝 `ec2launch-v2-windows` 元件。如需如何使用 EC2 Image Builder 建置自訂映像的指示，請參閱 *EC2 Image Builder 使用者指南*中的[使用 EC2 Image Builder 主控台精靈建立映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)。

------
#### [ AMI ]

根據預設，EC2Launch v2 預先安裝在適用於 Windows Server 2022 及更高作業系統的 AMI 上：
+ Windows\$1Server-*version*-English-Full-Base
+ Windows\$1Server-*version*-English-Core-Base
+ Windows\$1Server-*version*-English-Core-EKS\$1Optimized
+ 所有其他語言的 Windows Server *version* AMI
+ 安裝 SQL 的 Windows Server *version* AMI

EC2Launch v2 也已預先安裝在下列 Windows Server AMI 上。您可以在 Amazon EC2 主控台找到這些 AMI，或使用下列搜尋字首： AWS CLI 中的 `EC2LaunchV2-`。
+ EC2LaunchV2-Windows\$1Server-2019-English-Core-Base
+ EC2LaunchV2-Windows\$1Server-2019-English-Full-Base
+ EC2LaunchV2-Windows\$1Server-2016-English-Core-Base
+ EC2LaunchV2-Windows\$1Server-2016-English-Full-Base

------

## 使用 AWS Systems Manager Distributor Quick Setup 自動安裝和更新 EC2Launch v2
<a name="lv2-distributor-quick-setup"></a>

透過 AWS Systems Manager Distributor Quick Setup，您可以設定 EC2Launch v2 的自動更新。下列流程會在您的執行個體上設定 Systems Manager Association，以您指定的頻率自動更新 EC2Launch v2 代理程式。Distributor Quick Setup 建立的關聯可以包含 AWS 帳戶 和 區域內的執行個體，或 AWS 組織內的執行個體。如需詳細資訊，請參閱「AWS Organizations 使用指南」**中的[教學課程：建立和設定組織](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)。

開始之前，請確定您的執行個體符合所有先決條件。

### 先決條件
<a name="lv2-distributor-quickset-prereq"></a>

若要使用 Distributor 快速設定設定自動更新，您的執行個體必須符合下列先決條件。
+ 您至少有一個執行中執行個體支援 EC2Launch v2。參閱 [EC2Launch v2](ec2launch-v2.md) 的支援作業系統。
+ 您已在執行個體上執行 Systems Manager 設定任務。如需詳細資訊，請參閱「AWS Systems Manager 使用者指南」**中的[設定工作階段管理員](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html)。
+ EC2Launch v2 必須是唯一安裝在執行個體上的啟動代理程式。如果您安裝了多個啟動代理程式，您的 Distributor 快速設定組態將會失敗。使用 Distributor 快速設定設定 EC2Launch v2 之前，若系統中已安裝 EC2Config 或 EC2Launch v1 啟動代理程式，請先將其解除安裝。

### 設定 EC2Launch v2 的經銷商快速設定
<a name="lv2-distributor-quickset-config"></a>

若要使用 Distributor 快速設定建立 EC2Launch v2 的組態，請在完成 [Distributor 套件部署](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-distributor.html)的步驟時使用下列設定：
+ **軟體套件：**Amazon EC2Launch v2 代理程式。
+ **更新頻率：**從清單中選取頻率。
+ **目標：**從可用的部署選項中進行選擇。

若要檢查組態的狀態，請瀏覽至 AWS 管理主控台中的 Systems Manager 快速設定**組態**索引標籤。

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇**快速設定**。

1. 在**組態**索引標籤中，選取與您建立之組態相關聯的資料列。**組態**索引標籤會列出組態，並包含金鑰詳細資訊的摘要，例如**區域**、**部署狀態**和**關聯狀態**。
**注意**  
每個 EC2Launch v2 Distributor 組態的關聯名稱以下列前置詞開頭：`AWS-QuickSetup-Distributor-EC2Launch-Agent-`。

1. 若要檢視詳細資訊，請選取組態，然後選擇**檢視詳細資訊**。

如需詳細資訊和疑難排解步驟，請參閱「AWS Systems Manager 使用者指南」**中的[疑難排解快速設定結果](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-results-troubleshooting.html)。

## 在 Amazon S3 上下載 EC2Launch v2
<a name="lv2-download-s3"></a>

若要安裝最新版本 EC2Launch v2，請從下列位置下載安裝程式：
+ [https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/latest/AmazonEC2Launch.msi](https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/latest/AmazonEC2Launch.msi)

## 設定安裝選項
<a name="lv2-configure-install"></a>

在安裝或升級 EC2Launch v2 時，您可以使用 EC2Launch v2 安裝對話方塊或命令列 shell 中的 **msiexec** 命令來設定安裝選項。

首次在執行個體上執行 EC2Launch v2 安裝程式時，該安裝程式會初始化執行個體上的啟動代理程式設定，如下所示：
+ 安裝程式會建立本機路徑，並將啟動代理程式檔案寫入該路徑。這有時被稱為*全新安裝*。
+ 安裝程式會建立 `EC2LAUNCH_TELEMETRY` 環境變數 (若尚無)，並根據您的組態進行設定。

如需有關設定的詳細資訊，請選取符合您將使用的設定方法的索引標籤。

------
#### [ Amazon EC2Launch Setup dialog ]

在安裝或升級 EC2Launch v2 時，您可以透過 EC2Launch v2 安裝對話方塊來設定以下安裝選項。**基本安裝**選項

**傳送遙測**  
在您將此功能納入安裝對話方塊中時，安裝程式會將 `EC2LAUNCH_TELEMETRY` 環境變數的值設定為 `1`。若您停用**傳送遙測**，安裝程式會將環境變數設定為 `0`。  
在 EC2Launch v2 代理程式執行時，其會讀取 `EC2LAUNCH_TELEMETRY` 環境變數，決定是否要上傳遙測資料。若值等於 `1`，則會上傳資料。若不是，則不會上傳。

**預設組態**  
EC2Launch v2 的預設組態為覆寫本機啟動代理程式 (若已具備)。首次在執行個體上執行安裝時，預設組態會執行全新安裝。若您在初始安裝時停用預設組態，則安裝會失敗。  
若再次在執行個體上執行安裝，您可以停用預設組態，執行不會取代 `%ProgramData%/Amazon/EC2Launch/config/agent-config.yml` 檔案的升級。

**範例：使用遙測來升級 EC2Launch v2**  
以下範例會顯示設定為升級目前安裝及啟用遙測的 EC2Launch v2 設定對話方塊。此組態會在不取代代理程式組態檔案的情況下執行安裝，並將 `EC2LAUNCH_TELEMETRY` 環境變數設定為 `1`。

![\[EC2Launch v2 升級組態。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launchv2-clean-default-config.png)


------
#### [ Command line ]

在安裝或升級 EC2Launch v2 時，您可以使用命令列 shell 中的 **msiexec** 命令來設定以下安裝選項。`ADDLOCAL` 參數值

**基本** (必填)  
安裝啟動代理程式。如果 `ADDLOCAL` 參數中不存在此值，則安裝結束。

**全新**  
當您在 `ADDLOCAL` 參數中納入 `Clean` 值時，安裝程式會將代理程式組態檔案寫入以下位置：`%ProgramData%/Amazon/EC2Launch/config/agent-config.yml`。如果代理程式組態檔案已存在，則會覆寫檔案。  
當您將 `Clean` 值放在 `ADDLOCAL` 參數之外時，安裝程式會執行不會取代代理程式組態檔案的升級。

**遙測**  
當您在 `ADDLOCAL` 參數中納入 `Telemetry` 值時，安裝程式會將 `EC2LAUNCH_TELEMETRY` 環境變數設為 `1`。  
當您將 `Telemetry` 值放在 `ADDLOCAL` 參數之外時，安裝程式會將環境變數設為 `0`。  
在 EC2Launch v2 代理程式執行時，其會讀取 `EC2LAUNCH_TELEMETRY` 環境變數，決定是否要上傳遙測資料。若值等於 `1`，則會上傳資料。若不是，則不會上傳。

**範例：使用遙測安裝 EC2Launch v2**

```
& msiexec /i "C:\Users\Administrator\Desktop\EC2Launchv2\AmazonEC2Launch.msi" ADDLOCAL="Basic,Clean,Telemetry" /q
```

------

## 確認 EC2Launch v2 版本
<a name="lv2-verify-version"></a>

請用下列程序之一確認執行個體上安裝的 EC2Launch v2 版本。



------
#### [ PowerShell ]

使用 Windows PowerShell 確認已安裝的 EC2Launch v2 版本，如下所示。

1. 從 AMI 啟動執行個體，並連線至執行個體。

1. 在 PowerShell 中執行如下命令可確認已安裝的 EC2Launch 版本。

   ```
   & "C:\Program Files\Amazon\EC2Launch\EC2Launch.exe" version
   ```

------
#### [ Windows Control Panel ]

在 Windows 控制台中確認已安裝的 EC2Launch v2 版本，如下所示。

1. 從 AMI 啟動執行個體，並連線至執行個體。

1. 開啟 Windows 控制台，然後選擇**程式和功能**。

1. 從已安裝程式清單中，找出 `Amazon EC2Launch`。其版本編號將出現在 **Version** (版本) 欄中。

------

若要檢視 AWS Windows AMIs 的最新更新，請參閱 [Windows AMI 參考中的 Windows AMI 版本歷史記錄](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html)。 *AWS *

如需 EC2Launch v2 的最新版本，請參閱 [EC2Launch v2 版本歷史記錄](ec2launchv2-versions.md#ec2launchv2-version-history)。

您會在 EC2Launch v2 服務有新版本發佈時收到通知。如需詳細資訊，請參閱[訂閱 EC2 Windows 啟動代理程式通知](launch-agents-subscribe-notifications.md)。

# 設定 Windows 執行個體的 EC2Launch v2 設定
<a name="ec2launch-v2-settings"></a>

本節包含有關如何進行 EC2Launch v2 設定的資訊。

**Topics**
+ [使用 EC2Launch v2 設定對話方塊變更設定](#ec2launch-v2-ui)
+ [使用 CLI 設定 EC2Launch v2](#ec2launch-v2-cli)
+ [EC2Launch v2 任務組態](#ec2launch-v2-task-configuration)
+ [EC2Launch v2 結束程式碼和重新啟動](#ec2launch-v2-exit-codes-reboots)
+ [EC2Launch v2 和 Sysprep](#ec2launch-v2-sysprep)

## 使用 EC2Launch v2 設定對話方塊變更設定
<a name="ec2launch-v2-ui"></a>

下列程序說明如何使用 EC2Launch v2 對話方塊啟用或停用設定。
**注意**  
如果您在 agent-config.yml 檔案中不當設定自訂任務，並嘗試開啟 Amazon EC2Launch 設定對話方塊，您將收到錯誤。有關架構範例，請參閱 [範例：`agent-config.yml`](#ec2launch-v2-example-agent-config)。

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

1. 從「開始」功能表選擇**所有程式**,，然後瀏覽至 **EC2Launch 設定**。選擇**透過 Sysprep 關閉**或**不透過 Sysprep 關閉**之前，確認在執行關閉時儲存您想要套用的任何變更。  
![\[EC2 Launch 設定應用程式。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launchv2-settings.png)

1. 在 **Ec2 服務屬性**對話方塊的**一般**索引標籤中，啟用或停用下列設定。

   1. **Set Computer Name** (設定電腦名稱)

      如果啟用此設定 (預設為停用)，則會在每次開機時將目前主機名稱與所需主機名稱進行比較。如果主機名稱不相符，則會重設主機名稱，然後系統會選擇性地重新開機以取得新的主機名稱。如果未指定自訂主機名稱，則會使用十六進位格式的私有 IPv4 地址產生名稱，例如：`ip-AC1F4E6`。若要避免現有的主機名稱遭到修改，請勿啟用此設定。

   1. **延伸開機磁碟區**

      此設定將動態擴充 `Disk 0`/`Volume 0`，以包含任何尚未分割的空間。此設定在執行個體是從自訂大小的根磁碟區啟動時很有用。

   1. **設定管理員帳戶**

      啟用後，您可以為本機電腦上建立的管理員帳戶設定使用者名稱和密碼屬性。如果未啟用此功能，遵循 Sysprep 的系統不會建立系統管理員帳戶。只有在 `adminPassword` 是 `adminPasswordtype` 時，才要在 `Specify` 中提供密碼。

      密碼類型的定義如下：

      1. `Random`

         EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定，以便執行個體重新開機或停止再啟動時，能持續使用這個密碼。

      1. `Specify`

         EC2Launch 會使用您在 `adminPassword` 中指定的密碼 如果該密碼不符合系統要求，EC2Launch 會改為產生隨機密碼。系統會將該密碼以純文字存放於 `agent-config.yml`，並在 Sysprep 設定管理員密碼後予以刪除。EC2Launch 會以使用者金鑰加密該密碼。

      1. `Do not set`

         EC2Launch 會使用您在未使用的 .xml 檔案中指定的密碼。如果您未在 unattend.xml 中指定密碼，會停用管理員帳戶。

   1. **啟動 SSM 服務**

      選取此選項時，Systems Manager 服務會啟用，以啟動以下 Sysprep。EC2Launch v2 將執行[先前](ec2launch-v2.md#ec2launch-v2-tasks)所述的所有任務，而且 SSM Agent 將處理 Systems Manager 功能的請求，例如執行命令和狀態管理員。

      您可使用執行命令升級現有執行個體，以使用 EC2Launch v2 服務和 SSM Agent 的最新版本。若要了解詳細資訊，請參閱 *AWS Systems Manager 使用者指南*中的[使用執行命令更新 SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command-tutorial-update-software.html)。

   1. **最佳化 ENA**

      選取時，會設定 ENA 設定，以確保針對 ENA 接收端擴展和接收佇列深度設定進行最佳化 AWS。如需詳細資訊，請參閱[設定接收端擴展 CPU 親和性](enhanced-networking-os.md#windows-rss-cpu-affinity)。

   1. **啟用 SSH**

      此設定會啟用適用於較新版本 Windows 的 OpenSSH，以允許遠端系統管理。

   1. **啟用巨型訊框**

      選取以啟用「巨型訊框」。「巨型訊框」可能會對您的網路通訊產生意想不到的影響，因此在啟用之前，請務必了解「巨型訊框」對您的系統的影響。如需「巨型訊框」的詳細資訊，請參閱 [巨型訊框 (9001 MTU)](network_mtu.md#jumbo_frame_instances)。

   1. **準備建立映像**

      選取是否希望 EC2 執行個體在使用 Sysprep 的情況下關閉。當您想要使用 EC2Launch v2 執行 Sysprep 時，請選擇 **Shutdown with Sysprep** (使用 Sysprep 關機)。

1. 在**DNS 尾碼**標籤上，您可以選取是否要為 EC2 中執行之伺服器的 DNS 解析新增 DNS 尾碼清單，而不需提供完整網域名稱。DNS 尾碼可以包含變數 `$REGION` 和 `$AZ`。只有不存在的尾碼才會新增到清單中。  
![\[EC2 Launch 設定應用程式。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launchv2-dns.png)

1. 在**桌布**索引標籤中，您可以使用背景圖片來設定執行個體桌布，並指定要顯示之桌布的執行個體詳細資訊。Amazon EC2 會在您每次登入時產生詳細資訊。

   您可以使用下列控制項來設定桌布。
   + **在桌布上顯示執行個體詳細資訊** - 此核取方塊會啟用或停用桌布上的執行個體詳細資訊顯示。
   + **圖片路徑 (.jpg)** - 指定要用作桌布背景的圖片路徑。
   + **選取要在桌布上顯示的屬性** - 選取要顯示在桌布上之執行個體詳細資訊的核取方塊。清除要從桌布中移除的先前選取的執行個體詳細資訊的核取方塊。
   + **在桌布上顯示執行個體標籤** - 選取下列其中一個設定以在桌布上顯示執行個體標籤：
     + **無** - 不在桌布上顯示任何執行個體標籤。
     + **顯示全部** - 在桌布上顯示所有執行個體標籤。
     + **顯示篩選結果** - 在桌布上顯示指定的執行個體標籤。當您選取此設定時，可以在**執行個體標籤篩選**方塊中新增您想要顯示在桌布上的執行個體標籤。
**注意**  
您必須在中繼資料中啟用標籤，才能在桌布上顯示標籤。如需有關執行個體標籤和中繼資料的詳細資訊，請參閱 [使用執行個體中繼資料檢視 EC2 執行個體的標籤](work-with-tags-in-IMDS.md)。  
![\[EC2 Launch 設定「桌布」索引標籤。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launchv2-wallpaper-02.png)

1. 在**磁碟區**標籤上，選取是否要初始化連線至執行個體的磁碟區。啟用會設定任何額外磁碟區的磁碟機代號，並將它們延伸到使用可用空間。如果您選取**全部**，則會初始化所有儲存磁碟區。如果您選取**裝置**，則只會初始化清單中指定的裝置。您必須為每個要初始化的裝置輸入裝置。使用 EC2 主控台上列出的裝置，例如，`xvdb` 或 `/dev/nvme0n1`。下拉式清單會顯示連接到執行個體的儲存磁碟區。若要輸入未連接到執行個體的裝置，請在文字欄位中輸入該裝置。

   **名稱**、**字母**和**分割區**是選填欄位。如果沒有為**磁碟分割區**指定任何值，則會以 `gpt` 磁碟分割區類型初始化大於 2 TB 的儲存磁碟區，而小於 2 TB 的磁碟分割區會以 `mbr` 磁碟分割區類型初始化。如果已設定裝置，且非 NTFS 裝置包含磁碟分割區表格，或磁碟的前 4 KB 會包含資料，接著系統會略過磁碟並記錄動作。  
![\[EC2 Launch 設定應用程式。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launchv2-volumes.png)

## 使用 CLI 設定 EC2Launch v2
<a name="ec2launch-v2-cli"></a>

您可以使用命令列介面 (CLI) 來配置 EC2Launch 設定並管理服務。下節包含您可用來管理 EC2Launch v2 之 CLI 命令的說明和使用資訊。

**Topics**
+ [collect-logs](#ec2launch-v2-collect-logs)
+ [get-agent-config](#ec2launch-v2-get-agent-config)
+ [list-volumes](#ec2launch-v2-list-volumes)
+ [重設](#ec2launch-v2-reset)
+ [run](#ec2launch-v2-run)
+ [status](#ec2launch-v2-settings-status)
+ [sysprep](#ec2launch-v2-settings-sysprep)
+ [validate](#ec2launch-v2-validate)
+ [version](#ec2launch-v2-version)
+ [桌布](#ec2launch-v2-wallpaper)

### collect-logs
<a name="ec2launch-v2-collect-logs"></a>

收集 EC2Launch 的日誌、壓縮檔案，並將它們置於指定的目錄中。

**範例**

```
ec2launch collect-logs -o C:\Mylogs.zip
```

**用途**

`ec2launch collect-logs [flags]`

**Flags**

`-h`, `--help`

`collect-logs` 的說明

`-o`, `--output string`

壓縮輸出日誌的路徑

### get-agent-config
<a name="ec2launch-v2-get-agent-config"></a>

以指定的格式 (JSON 或 YAML) 列印 `agent-config.yml`。如果未指定任何格式，則會以先前指定的格式列印 `agent-config.yml`。

**範例**

```
ec2launch get-agent-config -f json
```

**用途**

`ec2launch get-agent-config [flags]`

**Flags**

`-h`, `--help`

`get-agent-config` 的說明

`-f`, `--format string`

`agent-config` 檔案的輸出格式：`json`、`yaml`

### list-volumes
<a name="ec2launch-v2-list-volumes"></a>

列出連接到執行個體的所有儲存磁碟區，包括暫時磁碟區和 EBS 磁碟區。

**範例**

```
ec2launch list-volumes
```

**用途**

`ec2launch list-volumes`

**Flags**

`-h`, `--help`

`list-volumes` 的說明

### 重設
<a name="ec2launch-v2-reset"></a>

此任務的主要目標是在下次代理程式執行時重設該代理程式。為此，**reset** 命令會從本機 `EC2Launch` 目錄刪除 EC2Launch v2 的所有代理程式狀態資料 (請參閱：[EC2Launch v2 目錄結構](ec2launch-v2.md#ec2launch-v2-directory))。選擇性重設會刪除服務和 Sysprep 日誌。

指令碼行為取決於代理程式執行指令碼的模式 (內嵌或分離)。

內嵌 (預設)  
EC2Launch v2 代理程式會一次執行一個指令碼 (`detach: false`)。這是預設設定。  
當內嵌指令碼發出 **reset** 或 **sysprep** 命令時，它會立即執行並重設代理程式。目前任務完成後，代理程式就會關閉，而不執行任何後續任務。  
例如，如果發出命令的任務後緊接著一個 `startSsm` 任務 (預設情況下會在使用者資料執行之後包含)，則任務不會執行，而且 Systems Manager 服務永遠不會啟動。

Detached  
EC2Launch v2 代理程式會與其他任務同時執行指令碼 (`detach: true`)。  
當分離的指令碼發出 **reset** 或 **sysprep** 命令時，這些命令會等待代理程式完成再執行。executeScript 之後的任務仍會執行。

**範例**

```
ec2launch reset -c
```

**用途**

`ec2launch reset [flags]`

**Flags**

`-c`, `--clean`

在 `reset` 前清除執行個體日誌

`-h`, `--help`

`reset` 的說明

### run
<a name="ec2launch-v2-run"></a>

執行 EC2Launch v2。

**範例**

```
ec2launch run
```

**用途**

`ec2launch run [flags]`

**Flags**

`-h`, `--help`

`run` 的說明

### status
<a name="ec2launch-v2-settings-status"></a>

取得 EC2Launch v2 代理程式的狀態。選擇性地封鎖處理程序，直到代理程式完成為止。處理程序結束程式碼會決定代理程式狀態：
+ `0` – 代理程式已執行且成功。
+ `1` – 代理程式已執行且失敗。
+ `2` – 代理程式仍在執行中。
+ `3` – 代理程式處於未知狀態。代理程式狀態為未執行或已停止。
+ `4` – 嘗試擷取代理程式狀態時發生錯誤。
+ `5` – 代理程式未執行，且上次已知執行的狀態未知。這可能表示以下其中一項：
  + `state.json` 和 `previous-state.json` 均被刪除。
  + `previous-state.json` 已毀損。

  這是執行 [`reset`](#ec2launch-v2-reset) 命令後的代理程式狀態。

**範例**：

```
ec2launch status -b
```

**用途**

`ec2launch status [flags]`

**Flags**

`-b`,`--block`

封鎖處理程序，直到代理程式完成執行

`-h`,`--help`

`status` 的說明

### sysprep
<a name="ec2launch-v2-settings-sysprep"></a>

此任務的主要目標是在下次代理程式執行時重設該代理程式。為此，**sysprep** 命令會重設代理程式狀態、更新 `unattend.xml` 檔案、停用 RDP，然後執行 Sysprep。

指令碼行為取決於代理程式執行指令碼的模式 (內嵌或分離)。

內嵌 (預設)  
EC2Launch v2 代理程式會一次執行一個指令碼 (`detach: false`)。這是預設設定。  
當內嵌指令碼發出 **reset** 或 **sysprep** 命令時，它會立即執行並重設代理程式。目前任務完成後，代理程式就會關閉，而不執行任何後續任務。  
例如，如果發出命令的任務後緊接著一個 `startSsm` 任務 (預設情況下會在使用者資料執行之後包含)，則任務不會執行，而且 Systems Manager 服務永遠不會啟動。

Detached  
EC2Launch v2 代理程式會與其他任務同時執行指令碼 (`detach: true`)。  
當分離的指令碼發出 **reset** 或 **sysprep** 命令時，這些命令會等待代理程式完成再執行。executeScript 之後的任務仍會執行。

**範例**：

```
ec2launch sysprep
```

**用途**

`ec2launch sysprep [flags]`

**Flags**

`-c`,`--clean`

在 `sysprep` 前清除執行個體日誌

`-h`,`--help`

Sysprep 說明

`-s`,`--shutdown`

在 `sysprep` 後關閉執行個體

### validate
<a name="ec2launch-v2-validate"></a>

驗證 `agent-config` 檔案 `C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml`。

**範例**

```
ec2launch validate
```

**用途**

`ec2launch validate [flags]`

**Flags**

-h` `, `--help` 

`validate` 的說明

### version
<a name="ec2launch-v2-version"></a>

取得可執行版本。

**範例**

```
ec2launch version
```

**用途**

`ec2launch version [flags]`

**Flags**

`-h`, `--help`

`version` 的說明

### 桌布
<a name="ec2launch-v2-wallpaper"></a>

將新桌布設定為提供的桌布路徑 (.jpg 檔案)，並顯示選取的執行個體詳細資料。

#### 語法
<a name="lv2-wallpaper-syntax"></a>

```
ec2launch wallpaper ^
--path="C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg" ^
--all-tags ^
--attributes=hostName,instanceId,privateIpAddress,publicIpAddress,ipv6Address,instanceSize,availabilityZone,architecture
```

#### 輸入
<a name="lv2-wallpaper-inputs"></a>Parameters

**--allowed-tags [*tag-name-1*, *tag-name-n*]**  
(選用) 要顯示在桌布上的 Base64 編碼 JSON 執行個體標籤名稱陣列。您可以使用此標籤或 `--all-tags`，但不能同時使用兩者。

**--attributes *attribute-string-1*, *attribute-string-n***  
(選用) 要將設定套用至桌布的 `wallpaper` 屬性字串清單 (以逗號分隔)。

**[--path \$1 -p] *path-string***  
(必要) 指定 `wallpaper` 背景圖片檔案路徑。旗標

**--all-tags**  
(選用) 在桌布上顯示所有執行個體標籤。您可以使用此標籤或 `--allowed-tags`，但不能同時使用兩者。

**[--help \$1 -h]**  
顯示 **wallpaper** 命令的說明。

## EC2Launch v2 任務組態
<a name="ec2launch-v2-task-configuration"></a>

本節包含 `agent-config.yml` 和使用者資料的組態結構描述任務、詳細資訊及範例。

**Topics**
+ [結構描述︰`agent-config.yml`](#ec2launch-v2-schema-agent-config)
+ [設定啟動或重新啟動期間執行的 EC2Launch v2 使用者資料指令碼](#ec2launch-v2-schema-user-data)

### 結構描述︰`agent-config.yml`
<a name="ec2launch-v2-schema-agent-config"></a>

`agent-config.yml` 檔案的結構如下所示。請注意，不能在同一階段重複任務。有關任務屬性，請參閱後面的任務說明。

#### 文件結構：agent-config.yml
<a name="ec2launch-v2-schema-agent-config-doc-structure"></a>

**JSON**

```
{
	"version": "1.1",
	"config": [
		{
			"stage": "string",
			"tasks": [
				{
					"task": "string",
					"inputs": {
						...
					}
				},
				...
			]
		},
		...
	]
}
```

**YAML**

```
version: 1.1
config:
- stage: string
  tasks:
  - task: string
	inputs:
	  ...
  ...
...
```

#### 範例：`agent-config.yml`
<a name="ec2launch-v2-example-agent-config"></a>

下列範例顯示 `agent-config.yml` 組態檔的設定。

```
version: 1.1
config:
- stage: boot
  tasks:
  - task: extendRootPartition
- stage: preReady
  tasks:
  - task: activateWindows
    inputs:
      activation:
        type: amazon
  - task: setDnsSuffix
    inputs:
      suffixes:
      - $REGION.ec2-utilities.amazonaws.com
  - task: setAdminAccount
    inputs:
      password:
        type: random
  - task: setWallpaper
    inputs:
      path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
      attributes:
      - hostName
      - instanceId
      - privateIpAddress
      - publicIpAddress
      - instanceSize
      - availabilityZone
      - architecture
- stage: postReady
  tasks:
  - task: startSsm
```

### 設定啟動或重新啟動期間執行的 EC2Launch v2 使用者資料指令碼
<a name="ec2launch-v2-schema-user-data"></a>

下列 JSON 和 YAML 範例顯示使用者資料的文件結構。Amazon EC2 會剖析您在文件中指定的 `tasks` 陣列中命名的每個任務。每個任務都有自己的屬性集和要求集。如需詳細資訊，請參閱 [EC2Launch v2 啟動任務的任務定義](ec2launch-v2-task-definitions.md)。

**注意**  
任務只能在使用者資料任務陣列中出現一次。

#### 文件結構：使用者資料
<a name="ec2launch-v2-schema-user-data-doc-structure"></a>

**JSON**

```
{
	"version": "1.1",
	"tasks": [
		{
			"task": "string",
			"inputs": {
				...
			},
		},
		...
	]
}
```

**YAML**

```
version: 1.1
tasks:
- task: string
  inputs:
    ...
...
```

#### 範例：使用者資料
<a name="ec2launch-v2-example-user-data"></a>

如需使用者資料的詳細資訊，請參閱 [Amazon EC2 如何處理 Windows 執行個體的使用者資料](user-data.md#ec2-windows-user-data)。

下列 YAML 文件範例顯示 EC2Launch v2 執行以建立檔案的  PowerShell 指令碼 (作為使用者資料)。

```
version: 1.1
tasks:
- task: executeScript
  inputs:
  - frequency: always
    type: powershell
    runAs: localSystem
    content: |-
      New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
```

針對與舊版啟動代理程式相容的使用者資料，您可以使用 XML 格式。EC2Launch v2 會將指令碼作為 `UserData` 階段中的 `executeScript` 任務執行。為了符合 EC2Launch v1 和 EC2Config 行為，預設情況下使用者資料指令碼會作為連接/內嵌的程序執行。

您可以新增選用標籤來自訂指令碼的執行方式。例如，除了在執行個體啟動時執行一次使用者資料指令碼之外，若還想在執行個體重新啟動時執行，您可以使用下列標記：

`<persist>true</persist>`

**範例**：

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<persist>true</persist>
```

您可以使用 `<powershellArguments>` 標籤指定一或多個 PowerShell 引數。如果未傳遞引數，EC2Launch v2 預設會新增下列引數：`-ExecutionPolicy Unrestricted`。

**範例**：

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<powershellArguments>-ExecutionPolicy Unrestricted -NoProfile -NonInteractive</powershellArguments>
```

若要將 XML 使用者資料指令碼作為分離的程序執行，請將下列標籤新增至您的使用者資料。

`<detach>true</detach>`

**範例**：

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<detach>true</detach>
```

**注意**  
舊版啟動代理程式不支援分離標籤。

#### 變更日誌：使用者資料
<a name="ec2launch-v2-versions-user-data"></a>

下表列出使用者資料的變更，並將其交叉參考至適用的 EC2Launch v2 代理程式版本。


| 使用者資料版本 | 詳細資訊 | 引入於 | 
| --- | --- | --- | 
| 1.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launch-v2-settings.html) | EC2Launch v2 2.0.1245 版 | 
| 1.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launch-v2-settings.html) | EC2Launch v2 2.0.0 版 | 

\$1 與預設 `agent-config.yml` 檔案搭配使用時。

## EC2Launch v2 結束程式碼和重新啟動
<a name="ec2launch-v2-exit-codes-reboots"></a>

您可以使用 EC2Launch v2 定義指令碼處理結束程式碼的方式。根據預設，在指令碼中執行的最後一個命令的結束程式碼會報告為整個指令碼的結束程式碼。例如，如果指令碼包含三個命令，而第一個命令失敗，但後續命令成功，則會因最終命令成功而將執行狀態報告為 `success`。

如果您希望指令碼重新啟動執行個體，則必須在指令碼中指定 `exit 3010`，即使重新啟動是指令碼中的最後一個步驟也是如此。`exit 3010` 會指示 EC2Launch v2 重新啟動執行個體並再次呼叫指令碼，直到傳回不是 `3010` 的結束程式碼，或直到達到最大重新啟動計數為止。EC2Launch v2 允許每個任務最多 5 次重新啟動。如果您嘗試使用不同的機制 (例如 `Restart-Computer`) 從指令碼重新啟動執行個體，則指令碼執行狀態將不一致。例如，狀態可能會卡在重新啟動迴圈或不執行重新啟動。

如果您使用與舊版代理程式相容的 XML 使用者資料格式，則使用者資料執行的次數可能會超出您的預期。如需詳細資訊，請參閱故障診斷一節中的 [服務會多次執行使用者資料](ec2launchv2-troubleshooting.md#ec2launchv2-troubleshooting-user-data-more-than-once)。

## EC2Launch v2 和 Sysprep
<a name="ec2launch-v2-sysprep"></a>

EC2Launch v2 服務將執行 Sysprep，此為 Microsoft 的工具，可讓您建立自訂且可重複使用的 Windows AMI。EC2Launch v2 呼叫 Sysprep 時，會使用 `%ProgramData%\Amazon\EC2Launch` 中的檔案來決定要執行的操作。您可以使用 **EC2Launch 設定** 對話方塊間接編輯這些檔案，或直接使用 YAML 編輯器或文字編輯器來編輯這些檔案。但有些進階設定無法在 **EC2Launch 設定**對話方塊中使用，因此您必須直接編輯這些項目。

如果您在更新執行個體設定後從執行個體建立 AMI，新設定將套用到從新 AMI 啟用的任何執行個體。如需有關建立 AMI 的詳細資訊，請參閱 [建立 Amazon EBS 支援的 AMI](creating-an-ami-ebs.md)。

# EC2Launch v2 啟動任務的任務定義
<a name="ec2launch-v2-task-definitions"></a>

EC2Launch v2 在啟動或統計期間執行的每個任務都有專屬的一組屬性和要求。任務詳細資訊包含以下設定：任務執行的頻率 (一次或是永久執行)、該任務在代理程式啟動流程中的階段、其語法以及 YAML 文件範例。如需詳細資訊，請檢閱此參考中顯示的任務詳細資訊。

**Topics**
+ [activateWindows](#ec2launch-v2-activatewindows)
+ [enableJumboFrames](#ec2launch-v2-enablejumboframes)
+ [enableOpenSsh](#ec2launch-v2-enableopenssh)
+ [executeProgram](#ec2launch-v2-executeprogram)
+ [executeScript](#ec2launch-v2-executescript)
+ [extendRootPartition](#ec2launch-v2-extendrootpartition)
+ [initializeVolume](#ec2launch-v2-initializevolume)
+ [optimizeEna](#ec2launch-v2-optimizeena)
+ [setAdminAccount](#ec2launch-v2-setadminaccount)
+ [setDnsSuffix](#ec2launch-v2-setdnssuffix)
+ [setHostName](#ec2launch-v2-sethostname)
+ [setWallpaper](#ec2launch-v2-setwallpaper)
+ [startSsm](#ec2launch-v2-startssm)
+ [sysprep](#ec2launch-v2-task-sysprep)
+ [writeFile](#ec2-launch-v2-writefile)

## activateWindows
<a name="ec2launch-v2-activatewindows"></a>

針對一組 AWS KMS 伺服器啟用 Windows。如果偵測到執行個體為自帶授權 (BYOL)，則會略過啟動。

*Frequency* — 一次

*AllowedStages* — `[PreReady]`

*Inputs* — 

`activation`：(映射)

`type`：(字串) 要使用的啟動類型，設定為 `amazon`

*範例*

```
task: activateWindows
  inputs:
    activation:
    type: amazon
```

## enableJumboFrames
<a name="ec2launch-v2-enablejumboframes"></a>

啟用「巨型訊框」，以增加網路介面卡的最大傳輸單位 (MTU)。如需詳細資訊，請參閱[巨型訊框 (9001 MTU)](network_mtu.md#jumbo_frame_instances)。

*Frequency* – 始終

*AllowedStages* — `[PostReady, UserData]`

*Inputs* — 無

*範例*

```
task: enableJumboFrames
```

## enableOpenSsh
<a name="ec2launch-v2-enableopenssh"></a>

啟用 Windows OpenSSH，並將執行個體的公開金鑰新增至授權的金鑰資料夾。

*Frequency* — 一次

*AllowedStages* — `[PreReady, UserData]`

*Inputs* — 無

*範例*

以下範例示範如何在執行個體上啟用 OpenSSH，以及如何將執行個體的公有金鑰新增至授權的金鑰資料夾。此組態僅適用於執行 Windows Server 2019 及更新版本的執行個體。

```
task: enableOpenSsh
```

## executeProgram
<a name="ec2launch-v2-executeprogram"></a>

執行具有可選引數和指定頻率的程式。

**階段：**您可以在 `PreReady`、`PostReady` 和 `UserData` 階段執行 `executeProgram` 任務。

**頻率：**可設定，請參閱*輸入*。

**輸入**  
本節包含要執行之 **executeProgram** 任務的一或多個程式 (輸入)。每個輸入可以包含下列可配置設定：    
**頻率 (字串)**  
(必要) 僅指定下列其中一個值：  
+ `once`
+ `always`  
**路徑 (字串)**  
(必要) 要執行的可執行檔的檔案路徑。  
**引數 (字串清單)**  
(選用) 以逗號分隔的引數清單，作為輸入提供給程式。  
**runAs (字串)**  
(必要) 必須設定為 `localSystem`

**Output**  
所有任務都會將日誌檔案條目寫入 `agent.log` 檔案。`executeProgram` 任務的其他輸出會分別儲存在動態命名的資料夾中，如下所示：  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.tmp`  
輸出檔案的確切路徑包含在 `agent.log` 檔案中，例如：  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\ExecuteProgramInputs.tmp
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**`executeProgram` 任務的輸出檔案**    
`ExecuteProgramInputs.tmp`  
包含可執行檔的路徑，以及 `executeProgram` 任務在執行時傳送給其所有輸入參數。  
`Output.tmp`  
包含 `executeProgram` 任務執行之程式的執行期輸出。  
`Err.tmp`  
包含 `executeProgram` 任務執行之程式的執行期錯誤訊息。

**範例**  
下列範例說明如何透過 `executeProgram` 任務，從執行個體上的本機目錄執行可執行檔。  
**範例 1：具有一個引數的設定可執行檔**  
此範例顯示在靜默模式下執行設定可執行檔的 `executeProgram` 任務。

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\Users\Administrator\Desktop\setup.exe
      arguments: ['-quiet']
```
**範例 2：具有兩個引數的 VLC 可執行檔**  
此範例顯示執行 VLC 可執行檔的 `executeProgram` 任務，其中兩個引數作為輸入參數傳遞。

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\vlc-3.0.11-win64.exe 
      arguments: ['/L=1033','/S']
      runAs: localSystem
```

## executeScript
<a name="ec2launch-v2-executescript"></a>

執行具有可選引數和指定頻率的指令碼。指令碼行為取決於代理程式執行指令碼的模式 (內嵌或分離)。

內嵌 (預設)  
EC2Launch v2 代理程式會一次執行一個指令碼 (`detach: false`)。這是預設設定。  
當內嵌指令碼發出 **reset** 或 **sysprep** 命令時，它會立即執行並重設代理程式。目前任務完成後，代理程式就會關閉，而不執行任何後續任務。  
例如，如果發出命令的任務後緊接著一個 `startSsm` 任務 (預設情況下會在使用者資料執行之後包含)，則任務不會執行，而且 Systems Manager 服務永遠不會啟動。

Detached  
EC2Launch v2 代理程式會與其他任務同時執行指令碼 (`detach: true`)。  
當分離的指令碼發出 **reset** 或 **sysprep** 命令時，這些命令會等待代理程式完成再執行。executeScript 之後的任務仍會執行。

**階段：**您可以在 `PreReady`、`PostReady` 和 `UserData` 階段執行 `executeScript` 任務。

**頻率：**可設定，請參閱*輸入*。

**輸入**  
本節包含要執行之 **executeScript** 任務的一或多個指令碼 (輸入)。每個輸入可以包含下列可配置設定：    
**頻率 (字串)**  
(必要) 僅指定下列其中一個值：  
+ `once`
+ `always`  
**類型 (字串)**  
(必要) 僅指定下列其中一個值：  
+ `batch`
+ `powershell`  
**引數 (字串清單)**  
(選用) 傳遞給 Shell (非 PowerShell 指令碼) 的字串引數清單。`type: batch` 不支援此參數。如果未傳遞引數，EC2Launch v2 預設會新增下列引數：`-ExecutionPolicy Unrestricted`。  
**內容 (字串)**  
(必要) 指令碼內容。  
**runAs (字串)**  
(必要) 僅指定下列其中一個值：  
+ `admin`
+ `localSystem`  
**分離 (布林值)**  
(選用) EC2Launch v2 代理程式預設為一次執行一個指令碼 (`detach: false`)。若要與其他任務同時執行指令碼，請將值設定為 `true` (`detach: true`)。  
當 `detach` 設定為 `true` 時，指令碼結束代碼 (包括 `3010`) 沒有任何作用。

**Output**  
所有任務都會將日誌檔案條目寫入 `agent.log` 檔案。`executeScript` 任務執行之指令碼的其他輸出會分別儲存在動態命名的資料夾中，如下所示：  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.ext`  
輸出檔案的確切路徑包含在 `agent.log` 檔案中，例如：  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\UserScript.ps1
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**`executeScript` 任務的輸出檔案**    
`UserScript.ext`  
包含 `executeScript` 任務執行的指令碼。檔案的副檔名取決於您在 `executeScript` 任務的 `type` 參數中指定的指令碼類型，如下所示：  
+ 如果類型為 `batch`，則檔案副檔名為 `.bat`。
+ 如果類型為 `powershell`，則檔案副檔名為 `.ps1`。  
`Output.tmp`  
包含 `executeScript` 任務執行之指令碼的執行期輸出。  
`Err.tmp`  
包含 `executeScript` 任務執行之指令碼的執行期錯誤訊息。

**範例**  
下列範例示範如何使用 `executeScript` 任務執行內嵌指令碼。  
**範例 1：Hello World 輸出文字檔案**  
此範例顯示了 `executeScript` 任務，其執行 PowerShell 指令碼以在 `C:` 磁碟機上建立「Hello World」文字檔案。

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: admin
      content: |-
        New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
        Set-Content 'C:\PowerShellTest.txt' "Hello world"
```
**範例 2：執行兩個指令碼**  
此範例顯示 `executeScript` 任務可以執行多個指令碼，而指令碼類型不一定需要相符。
第一個指令碼 (`type: powershell`) 會將執行個體上目前執行的程序摘要寫入位於 `C:` 磁碟機上的文字檔案。  
第二個指令碼 (`batch`) 會將系統資訊寫入 `Output.tmp` 檔案。  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |
        Get-Process | Out-File -FilePath C:\Process.txt
    - frequency: always
      type: batch
      runAs: localSystem
      content: |
        systeminfo
```
**範例 3：具有重新啟動功能的等冪系統組態**  
此範例顯示 `executeScript` 任務，其執行等冪指令碼以執行下列系統組態，並在每個步驟之間重新啟動：
+ 重新命名電腦。
+ 將電腦加入網域。
+ 啟用 Telnet。
該指令碼確保每個操作只執行一次。這可以防止重新啟動循環，並讓指令碼具有等冪性。  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |-
        $name = $env:ComputerName
        if ($name -ne $desiredName) {
          Rename-Computer -NewName $desiredName
          exit 3010
        }
        $domain = Get-ADDomain
        if ($domain -ne $desiredDomain) 
        {
          Add-Computer -DomainName $desiredDomain
          exit 3010
        }
        $telnet = Get-WindowsFeature -Name Telnet-Client
        if (-not $telnet.Installed)
        {
          Install-WindowsFeature -Name "Telnet-Client"
          exit 3010 
        }
```

## extendRootPartition
<a name="ec2launch-v2-extendrootpartition"></a>

延伸根磁碟區以使用磁碟上的所有可用空間。

*Frequency* — 一次

*AllowedStages* — `[Boot]`

*Inputs* — 無

*範例* 

```
task: extendRootPartition
```

## initializeVolume
<a name="ec2launch-v2-initializevolume"></a>

初始化連接到執行個體的空白磁碟區，以便啟動和分割這些磁碟區。如果啟動代理程式偵測到磁碟區並非空白，就會略過初始化。如果磁碟區的前 4 KiB 空白，或磁碟區沒有 [Windows 可辨識的磁碟機配置](https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-drive_layout_information_ex)，磁碟區會視為空白。

不論磁碟機是否已經初始化，在此任務執行時永遠都會套用 `letter` 輸入參數。

`initializeVolume` 任務會執行下列動作。
+ 將磁碟屬性 `offline` 和 `readonly` 設為 false。
+ 建立分割區。如果未在 `partition` 輸入參數中指定分割區類型，會套用下列預設值：
  + 如果磁碟大小小於 2 TB，請將分割區類型設為 `mbr`。
  + 如果磁碟大小大於等於 2 TB，請將分割區類型設為 `gpt`。
+ 將磁碟區格式化為 NTFS。
+ 將磁碟區標籤設定如下：
  + 如果有指定，請使用 `name` 輸入參數的值。
  + 如果磁碟區為暫時性，且未指定名稱，請將磁碟區標籤設為 `Temporary Storage Z`。
+ 如果磁碟區為暫時性 (SSD 或 HDD，而非 Amazon EBS)，請在磁碟區的根目錄建立 `Important.txt` 檔案，其中包含下列內容：

  ```
  This is an 'Instance Store' disk and is provided at no additional charge.
  
  *This disk offers increased performance since it is local to the host
  *The number of Instance Store disks available to an instance vary by instance type
  *DATA ON THIS DRIVE WILL BE LOST IN CASES OF IMPAIRMENT OR STOPPING THE INSTANCE. PLEASE ENSURE THAT ANY IMPORTANT DATA IS BACKED UP FREQUENTLY
  
  For more information, please refer to: EC 2 執行個體的執行個體儲存體暫時區塊儲存.
  ```
+ 將磁碟機代號設定為 `letter` 輸入參數中指定的值。

**階段：**您可以在 `PostReady` 和 `UserData` 階段執行 `initializeVolume` 任務。

**頻率：**始終。

**輸入**  
您可以設定執行期參數，如下所示：    
**devices (映射清單)**  
(視情況而定) 啟動代理程式初始化之每個裝置的組態。`initialize` 輸入參數設為 `devices` 時，此為必要項目。  
+ **device (字串，必要)** – 在建立執行個體期間識別裝置。例如，`xvdb`、`xvdf` 或 `\dev\nvme0n1`。
+ **letter (字串，選用)** – 一個字元。要指派的磁碟機代號。
+ **name (字串，選用)** – 要指派的磁碟區名稱。
+ **partition (字串，選用)** – 為要建立的分割區類型指定下列任一個值，或根據磁碟區大小讓啟動代理程式設定預設值：
  + mbr
  + gpt  
**initialize (字串)**  
(必要) 僅指定下列其中一個值：  
+ `all`
+ `devices`

**範例**  
下列範例說明 `initializeVolume` 任務的輸入組態範例。  
**範例 1：在執行個體上初始化兩個磁碟區**  
此範例說明在執行個體上初始化兩個次要磁碟區的 `initializeVolume` 任務。範例中的裝置 `DataVolume2` 為暫時性。

```
task: initializeVolume
inputs:
  initialize: devices
  devices:
  - device: xvdb
    name: DataVolume1
    letter: D
    partition: mbr
  - device: /dev/nvme0n1
    name: DataVolume2
    letter: E
    partition: gpt
```

**範例 2：初始化連接至執行個體的 EBS 磁碟區**  
此範例說明 `initializeVolume` 任務，這會初始化所有連接至執行個體的空白 EBS 磁碟區。

```
task: initializeVolume
inputs:
  initialize: all
```

## optimizeEna
<a name="ec2launch-v2-optimizeena"></a>

根據目前的執行個體類型最佳化 ENA 設定；可能會將執行個體重新開機。

*Frequency* — 永遠

*AllowedStages* — `[PostReady, UserData]`

*Inputs* — 無

*範例* 

```
task: optimizeEna
```

## setAdminAccount
<a name="ec2launch-v2-setadminaccount"></a>

為在本機電腦上建立的預設管理員帳戶設定屬性。

*Frequency* — 一次

*AllowedStages* — `[PreReady]`

*Inputs* — 

`name`：(字串) 管理員帳戶的名稱

`password`：(映射)

`type`：(字符) 策略來設置密碼，無論是 `static`、`random` 或 `doNothing`

`data`：(字串) 儲存資料，如果 `type` 欄位是靜態的話

*範例*

```
task: setAdminAccount
inputs:
  name: Administrator
  password:
  type: random
```

## setDnsSuffix
<a name="ec2launch-v2-setdnssuffix"></a>

將 DNS 尾碼新增至搜尋尾碼清單。只有不存在的尾碼才會加入到清單中。如需啟動代理程式如何設定 DNS 尾碼的詳細資訊，請參閱 [設定 EC2 Windows 啟動代理程式的 DNS 尾碼](launch-agents-set-dns.md)。

*Frequency* – 始終

*AllowedStages* — `[PreReady]`

*Inputs* — 

`suffixes`：(字串清單) 一或多個有效 DNS 尾碼清單；有效的替代變數為 `$REGION` 和 `$AZ`

*範例*

```
task: setDnsSuffix
inputs:
  suffixes:
  - $REGION.ec2-utilities.amazonaws.com
```

## setHostName
<a name="ec2launch-v2-sethostname"></a>

將電腦的主機名稱設定為自訂字串，或者如果 `hostName` 未指定，則設定私有 IPv4 地址。

*Frequency* — 永遠

*AllowedStages* — `[PostReady, UserData]`

*Inputs* — 

`hostName`：(字串) 選擇性的主機名稱，必須格式化如下。
+ 必須等於或少於 15 個字元
+ 必須只包含英數字元 (a-z、A-Z、0-9) 和連字號 (-) 字元。
+ 不得完全由數字字元組成。

`reboot`：(布林值) 表示當主機名被更改時是否允許重新啟動

*範例*

```
task: setHostName
inputs:
  reboot: true
```

## setWallpaper
<a name="ec2launch-v2-setwallpaper"></a>

除了 `Default User` 之外，在每個現有使用者的啟動資料夾中建立 `setwallpaper.lnk` 捷徑檔案。使用者在執行個體啟動後第一次登入時，此捷徑檔案會執行。這會使用顯示執行個體屬性的自訂桌布，設定執行個體。

捷徑檔案路徑為：

```
$env:SystemDrive/Users/<user>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/setwallpaper.lnk
```

**注意**  
移除 `setWallpaper` 任務時，不會刪除此捷徑檔案。如需詳細資訊，請參閱[`setWallpaper` 任務未啟用，但桌布會在重新啟動時重設](ec2launchv2-troubleshooting.md#ec2launchv2-troubleshooting-wallpaper-resets)。

**階段：**您可以在 `PreReady` 和 `UserData` 階段設定桌布。

**頻率：**`always`

**桌布組態**  
您可以使用下列設定來配置桌布。

**輸入**  
您提供的輸入參數，以及可以設定桌布的屬性：    
**路徑 (字串)**  
(必要) 要用於桌布圖片的本機 .jpg 格式圖片檔案的檔案名稱路徑。  
**屬性 (字串清單)**  
(選用) 您可以將以下一個或多個屬性新增至桌布：  
+ `architecture`
+ `availabilityZone`
+ `hostName`
+ `instanceId`
+ `instanceSize`
+ `privateIpAddress`
+ `publicIpAddress`
+ `ipv6Address`  
**instanceTags**  
(選用) 您可以使用下列其中一個選項來進行此設定。  
+ **AllTags** (字串) – 將所有執行個體標籤新增至桌布。

  ```
  instanceTags: AllTags
  ```
+ **instanceTags** (字串清單) – 指定要新增至桌布的執行個體標籤名稱清單。例如：

  ```
  instanceTags:
    - Tag 1
    - Tag 2
  ```

**範例**  
下列範例顯示設定桌布背景圖片檔案路徑的桌布組態輸入，以及名為 `Tag 1` 和 `Tag 2` 的執行個體標籤，以及包含執行個體的主機名稱、執行個體 ID 及私有和公有 IP 地址的屬性。

```
task: setWallpaper
inputs:
  path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
  attributes:
  - hostName
  - instanceId
  - privateIpAddress
  - publicIpAddress
  instanceTags:
  - Tag 1
  - Tag 2
```

**注意**  
您必須在中繼資料中啟用標籤，才能在桌布上顯示標籤。如需有關執行個體標籤和中繼資料的詳細資訊，請參閱 [使用執行個體中繼資料檢視 EC2 執行個體的標籤](work-with-tags-in-IMDS.md)。

## startSsm
<a name="ec2launch-v2-startssm"></a>

依照 Sysprep 開始 Systems Manager (SSM) 服務。

*Frequency* — 永遠

*AllowedStages* — `[PostReady, UserData]`

*Inputs* — 無

*範例*

```
task: startSsm
```

## sysprep
<a name="ec2launch-v2-task-sysprep"></a>

重設服務狀態、更新 `unattend.xml`、停用 RDP，以及執行 Sysprep。只有在所有其他任務完成後才會執行此任務。

*Frequency* — 一次

*AllowedStages* — `[UserData]`

*Inputs* — 

`clean`：(布林值) 在執行 Sysprep 之前清除執行個體日誌

`shutdown`：(布林值) 在執行 Sysprep 後關閉執行個體

*範例*

```
task: sysprep
inputs:
clean: true
shutdown: true
```

## writeFile
<a name="ec2-launch-v2-writefile"></a>

將檔案寫入目的地。

*Frequency* — 請參閱 *Inputs*

*AllowedStages* — `[PostReady, UserData]`

*Inputs* — 

`frequency`：(字符) 其中一個 `once` 或 `always`

`destination`：(字符) 要寫入內容的路徑

`content`：(字符) 要寫入文本的目的地

*範例*

```
task: writeFile
inputs:
  - frequency: once
  destination: C:\Users\Administrator\Desktop\booted.txt
  content: Windows Has Booted
```

# 疑難排解使用 EC2Launch v2 代理程式的問題
<a name="ec2launchv2-troubleshooting"></a>

本節說明 EC2Launch v2 的常見故障診斷案例、有關檢視 Windows 事件日誌的資訊，以及主控台日誌輸出和訊息。

**Topics**
+ [常用案例](#ec2launchv2-troubleshooting-scenarios)
+ [Windows 事件日誌](#ec2launchv2-windows-event-logs)
+ [EC2Launch v2 主控台日誌輸出](#ec2launchv2-console-output)

## 常見的疑難排解案例：
<a name="ec2launchv2-troubleshooting-scenarios"></a>

本節說明常見的疑難排解案例和解決步驟。

**Topics**
+ [服務無法設定桌布](#ec2launchv2-troubleshooting-wallpaper)
+ [服務無法執行使用者資料](#ec2launchv2-troubleshooting-user-data)
+ [服務只執行一次任務](#ec2launchv2-troubleshooting-task-once)
+ [服務無法執行任務](#ec2launchv2-troubleshooting-task-failed)
+ [服務會多次執行使用者資料](#ec2launchv2-troubleshooting-user-data-more-than-once)
+ [在移轉至 EC2Launch v2 後，來自 EC2Launch v1 的排程任務無法執行](#ec2launchv2-troubleshooting-scheduled-tasks-migration)
+ [服務會初始化不為空的 EBS 磁碟區](#ec2launchv2-troubleshooting-ebs-initialize)
+ [`setWallpaper` 任務未啟用，但桌布會在重新啟動時重設](#ec2launchv2-troubleshooting-wallpaper-resets)
+ [服務卡在執行狀態](#ec2launchv2-troubleshooting-service-stuck-running)
+ [無效的 `agent-config.yml` 導致無法開啟 EC2Launch v2 設定對話方塊](#ec2launchv2-troubleshooting-invalid-agent-config)
+ [`task:executeScript should be unique and only invoked once`](#ec2launchv2-troubleshooting-executescript)

### 服務無法設定桌布
<a name="ec2launchv2-troubleshooting-wallpaper"></a>

**Resolution**

1. 檢查 `%AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\setwallpaper.lnk` 是否存在。

1. 檢查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 是否發生任何錯誤。

### 服務無法執行使用者資料
<a name="ec2launchv2-troubleshooting-user-data"></a>

**可能原因**：服務可能在執行使用者資料之前失敗。

**Resolution**

1. 檢查 `%ProgramData%\Amazon\EC2Launch\state\previous-state.json`。

1. 查看 `boot`、`network`、`preReady` 和 `postReadyLocalData` 是否已全部標記為成功。

1. 如果其中一個階段失敗，請檢查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 是否有特定的錯誤。

### 服務只執行一次任務
<a name="ec2launchv2-troubleshooting-task-once"></a>

**Resolution**

1. 檢查任務的頻率。

1. 如果服務已經在 Sysprep 之後執行，且任務頻率設定為 `once`，則任務將不會再次執行。

1. 如果您希望 EC2Launch v2 每次執行時都能執行任務，請將任務的頻率設定為 `always`。

### 服務無法執行任務
<a name="ec2launchv2-troubleshooting-task-failed"></a>

**Resolution**

1. 檢查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 中的最新項目。

1. 如果沒有發生錯誤，請嘗試從 `"%ProgramFiles%\Amazon\EC2Launch\EC2Launch.exe" run` 手動執行服務，以查看任務是否成功。

### 服務會多次執行使用者資料
<a name="ec2launchv2-troubleshooting-user-data-more-than-once"></a>

**Resolution**  
EC2Launch v1 和 EC2Launch v2 處理使用者資料的方式不同。當 `persist` 設定為 `true` 時，EC2Launch v1 會將使用者資料視為執行個體上的排程任務來執行。如果將 `persist` 設定為 `false`，即使任務由於重新啟動而退出或在執行時中斷，也不會進行排程。

EC2Launch v2 會將使用者資料視為代理程式任務執行，並追蹤其執行狀態。如果使用者資料導致電腦重新啟動，或是使用者資料在執行時中斷，執行狀態將一直保持為 `pending`，且使用者資料將會在下次執行個體啟動時再次執行。如果您想防止使用者資料指令碼多次執行，請使指令碼等冪。

下列範例等冪指令碼會設定電腦名稱並加入網域。

```
<powershell>
  $name = $env:computername
  if ($name -ne $desiredName) {
	Rename-Computer -NewName $desiredName
  }
  $domain = Get-ADDomain
  if ($domain -ne $desiredDomain) 
  {
	Add-Computer -DomainName $desiredDomain
  }
  $telnet = Get-WindowsFeature -Name Telnet-Client
  if (-not $telnet.Installed)
  {
	Install-WindowsFeature -Name "Telnet-Client"
  }
</powershell>
<persist>false</persist>
```

### 在移轉至 EC2Launch v2 後，來自 EC2Launch v1 的排程任務無法執行
<a name="ec2launchv2-troubleshooting-scheduled-tasks-migration"></a>

**Resolution**  
遷移工具不會偵測任何連結至 EC2Launch v1 指令碼的排程任務；因此，不會自動在 EC2Launch v2 中設定這些任務。若要設定這些任務，請編輯 [`agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-task-configuration) 檔案，或使用 [EC2Launch v2 設定對話方塊](ec2launch-v2-settings.md#ec2launch-v2-ui)。例如，如果執行個體有執行 `InitializeDisks.ps1` 的排程任務，則執行遷移工具後，您必須在 EC2Launch v2 設定對話方塊中指定要初始化的磁碟區。請參閱 [使用 EC2Launch v2 設定對話方塊變更設定](ec2launch-v2-settings.md#ec2launch-v2-ui) 程序的步驟 6。

### 服務會初始化不為空的 EBS 磁碟區
<a name="ec2launchv2-troubleshooting-ebs-initialize"></a>

**Resolution**  
在初始化磁碟區之前，EC2Launch v2 會嘗試偵測磁碟區是否為空。如果磁碟區不為空，則會略過初始化程序。偵測為非空白的任何磁碟區都不會初始化。如果磁碟區的前 4 KiB 為空，或磁碟區沒有 [Windows 可辨識的磁碟機配置](https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-drive_layout_information_ex)，磁碟區會被視為空。在 Linux 系統上初始化並格式化的磁碟區沒有 Windows 可辨識的磁碟機配置，例如 MBR 或 GPT。因此，該磁碟區將視為空磁碟區且已初始化。如果您想要保留此資料，請勿依賴 EC2Launch v2 空白磁碟機偵測。而是在 [EC2Launch v2 設定對話方塊](ec2launch-v2-settings.md#ec2launch-v2-ui) (請參閱步驟 6) 或 [`agent-config.yml`](ec2launch-v2-task-definitions.md#ec2launch-v2-initializevolume) 中指定要初始化的磁碟區。

### `setWallpaper` 任務未啟用，但桌布會在重新啟動時重設
<a name="ec2launchv2-troubleshooting-wallpaper-resets"></a>

`setWallpaper` 任務會在每個現有使用者啟動資料夾中，建立 `setwallpaper.lnk` 捷徑檔案。使用者在執行個體啟動後第一次登入時，此捷徑檔案會執行。這會使用顯示執行個體屬性的自訂桌布，設定執行個體。移除 `setWallpaper` 任務不會刪除此捷徑檔案。您必須手動刪除此檔案，或使用指令碼將其刪除。

捷徑路徑為：

`$env:SystemDrive/Users/<user>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/setwallpaper.lnk`

**Resolution**  
手動刪除此檔案，或使用指令碼將其刪除。

**刪除捷徑檔案的範例 PowerShell 指令碼**

```
foreach ($userDir in (Get-ChildItem "C:\Users" -Force -Directory).FullName)
{
	$startupPath = Join-Path $userDir -ChildPath "AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
	if (Test-Path $startupPath)
	{
		$wallpaperSetupPath = Join-Path $startupPath -ChildPath "setwallpaper.lnk"
		if (Test-Path $wallpaperSetupPath)
		{
			Remove-Item $wallpaperSetupPath -Force -Confirm:$false
		}
	}
}
```

### 服務卡在執行狀態
<a name="ec2launchv2-troubleshooting-service-stuck-running"></a>

**Description**

EC2Launch v2 會被封鎖，其日誌訊息 (`agent.log`) 內容如下：

```
2022-02-24 08:08:58 Info: *****************************************************************************************
2022-02-24 08:08:58 Info: EC2Launch Service starting
2022-02-24 08:08:58 Info: Windows event custom log exists: Amazon EC2Launch
2022-02-24 08:08:58 Info: ACPI SPCR table not supported. Bailing Out
2022-02-24 08:08:58 Info: Serial port is in use. Waiting for Serial Port...
2022-02-24 08:09:00 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:02 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:04 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:06 Info: ACPI SPCR table not supported. Use default console port.
```

**可能的原因**  
SAC 處於啟用狀態，並使用序列連接埠。如需詳細資訊，請參閱[使用 SAC 疑難排解您的 Windows 執行個體](troubleshoot-using-serial-console.md#troubleshooting-sac)。

**Resolution**  
請嘗試下列步驟來解決此問題：
+ 停用正在使用序列連接埠的服務。
+ 如果希望服務繼續使用序列連接埠，請編寫自訂指令碼來執行啟動代理程式任務，並將其做為排程任務呼叫。

### 無效的 `agent-config.yml` 導致無法開啟 EC2Launch v2 設定對話方塊
<a name="ec2launchv2-troubleshooting-invalid-agent-config"></a>

**Description**  
EC2Launch v2 設定將嘗試剖析 `agent-config.yml` 檔案，然後開啟對話方塊。如果 YAML 組態檔案不遵循支援的結構描述，對話方塊將顯示以下錯誤：

`Unable to parse configuration file agent-config.yml. Review configuration file. Exiting application.`

**Resolution**

1. 驗證組態檔案是否遵循[支援的結構描述](ec2launch-v2-settings.md#ec2launch-v2-schema-agent-config)。

1. 如果要從頭開始，請將預設組態檔案複製到 `agent-config.yml`。您可以使用「任務組態」區段中提供的[範例 `agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-example-agent-config)。

1. 您也可以透過刪除 `agent-config.yml` 重新開始。EC2Launch v2 設定產生空的組態檔案。

### `task:executeScript should be unique and only invoked once`
<a name="ec2launchv2-troubleshooting-executescript"></a>

**Description**  
不能在同一階段重複任務。

**Resolution**  
某些任務必須作為陣列輸入，如 [**executeScript**](ec2launch-v2-task-definitions.md#ec2launch-v2-executescript) 和 [**executeProgram**](ec2launch-v2-task-definitions.md#ec2launch-v2-executeprogram)。如需將指令碼編寫為陣列的範例，請參閱 [**executeScript**](ec2launch-v2-task-definitions.md#ec2launch-v2-executescript)。

## Windows 事件日誌
<a name="ec2launchv2-windows-event-logs"></a>

EC2Launch v2 會針對重要事件發佈 Windows 事件日誌，例如服務啟動、Windows 已就緒，以及任務成功和失敗。事件 ID 會唯一識別特定事件。每個事件都包含階段、任務和層級資訊，以及說明。您可以使用事件 ID 來設定特定事件的觸發程序。

事件 ID 提供事件的相關資訊，並唯一識別某些事件。事件 ID 的最低有效位元顯示事件的嚴重性。


| 事件 | 最低有效位元 | 
| --- | --- | 
|  Success  | . . .0 | 
| Informational | . . .1 | 
| Warning | . . .2 | 
| Error | . . .3 | 

服務啟動或停止時產生的服務相關事件包含單一數字事件識別符。


| 事件 | 單一數字識別符 | 
| --- | --- | 
|  Success  | 0 | 
| Informational | 1 | 
| Warning | 2 | 
| Error | 3 | 

事件的 `EC2LaunchService.exe` 事件訊息以 `Service:` 為開頭。事件的 `EC2Launch.exe` 事件訊息不是以 `Service:` 為開頭。

四位數的事件 ID 包括關於階段、任務和事件嚴重性的資訊。

**Topics**
+ [事件 ID 格式](#ec2launchv2-windows-event-logs-format)
+ [事件 ID 範例](#ec2launchv2-windows-event-logs-id-examples)
+ [Windows 事件日誌結構描述](#ec2launch-v2-windows-event-logs-schema)

### 事件 ID 格式
<a name="ec2launchv2-windows-event-logs-format"></a>

下表顯示 EC2Launch v2 事件識別符的格式。


| 3 | 2 1 | 0 | 
| --- | --- | --- | 
|  S  |  T  |  L  | 

表格中的字母和數字代表下列事件類型和定義。


| Event type | 定義 | 
| --- | --- | 
|  S (階段)  |  0 - 服務層級訊息 1 - 開機 2 - 網路 3 - 預備就緒 5 - Windows 已準備就緒 6 - 後備就緒 7 - 使用者資料  | 
|  T (任務)  |  由對應的兩個值所代表的任務對每個階段都不同。若要檢視完整的事件清單，請參閱 [Windows 事件日誌結構描述](#ec2launch-v2-windows-event-logs-schema)。  | 
| L (活動等級) |  0 - 成功 1 - 資訊 2 - 警告 3 - 錯誤  | 

### 事件 ID 範例
<a name="ec2launchv2-windows-event-logs-id-examples"></a>

以下是範例事件 ID 。
+ `5000` - Windows 已做好使用準備
+ `3010` - 在預備就緒階段啟動視窗任務成功
+ `6013` - 在後備就緒本機資料階段設置桌布任務時發生錯誤

### Windows 事件日誌結構描述
<a name="ec2launch-v2-windows-event-logs-schema"></a>


| 訊息/事件 ID | 事件訊息 | 
| --- | --- | 
|  . . .0  | Success | 
|  . . .1  | Informational | 
|  . . .2  | Warning | 
|  . . .3  | Error | 
|  x  | EC2Launch service-level logs | 
|  0  | EC2Launch service exited successfully | 
|  1  |  EC2Launch service informational logs | 
|  2  |  EC2Launch service warning logs | 
| 3 | EC2Launch service error logs | 
|  10  | Replace state.json with previous-state.json | 
| 100 | Serial Port | 
| 200 | Sysprep | 
| 300 | PrimaryNic | 
| 400 | Metadata | 
|  x000  | Stage (1 digit), Task (2 digits), Status (1 digit) | 
|  1000  | Boot | 
|  1010  | Boot - extend\$1root\$1partition | 
| 2000 | Network | 
|  2010  | Network - add\$1routes | 
|  3000  | PreReady | 
|  3010  | PreReady - activate\$1windows | 
|  3020  | PreReady - install\$1egpu\$1manager | 
|  3030  | PreReady - set\$1monitor\$1on | 
|  3040  | PreReady - set\$1hibernation | 
|  3050  | PreReady - set\$1admin\$1account | 
|  3060  | PreReady - set\$1dns\$1suffix | 
|  3070  | PreReady - set\$1wallpaper | 
|  3080  | PreReady - set\$1update\$1schedule | 
|  3090  | PreReady - output\$1log | 
|  3100  | PreReady - enable\$1open\$1ssh | 
|  5000  | Windows is Ready to use | 
|  6000  | PostReadyLocalData | 
| 7000 | PostReadyUserData | 
|  6010/7010  | PostReadyLocal/UserData - set\$1wallpaper | 
|  6020/7020  | PostReadyLocal/UserData - set\$1update\$1schedule | 
|  6030/7030  | PostReadyLocal/UserData - set\$1hostname | 
|  6040/7040  | PostReadyLocal/UserData - execute\$1program | 
|  6050/7050  | PostReadyLocal/UserData - execute\$1script | 
|  6060/7060  | PostReadyLocal/UserData - manage\$1package | 
|  6070/7070  | PostReadyLocal/UserData - initialize\$1volume | 
|  6080/7080  | PostReadyLocal/UserData - write\$1file | 
|  6090/7090  | PostReadyLocal/UserData - start\$1ssm | 
|  7100  | PostReadyUserData - enable\$1open\$1ssh | 
|  6110/7110  | PostReadyLocal/UserData - enable\$1jumbo\$1frames | 

## EC2Launch v2 主控台日誌輸出
<a name="ec2launchv2-console-output"></a>

本節包含 EC2Launch v2 的範例主控台日誌輸出，並列出所有 EC2Launch v2 主控台日誌錯誤訊息，以協助您針對問題進行故障診斷。如需執行個體主控台輸出及存取方式的詳細資訊，請參閱 [執行個體主控台輸出](troubleshoot-unreachable-instance.md#instance-console-console-output)。

**Topics**
+ [EC2Launch v2 主控台日誌輸出](#ec2launchv2-console-log-output)
+ [EC2Launch v2 主控台日誌訊息](#ec2launchv2-console-log-messages)

### EC2Launch v2 主控台日誌輸出
<a name="ec2launchv2-console-log-output"></a>

以下是 EC2Launch v2 的範例主控台日誌輸出。本範例中的部分值已取代為置於大括號內的代表性文字。

```
2025/07/22 21:26:53Z: Windows sysprep configuration complete.
2025/07/22 21:26:53Z: Message: Waiting for access to metadata...
2025/07/22 21:26:53Z: Message: Meta-data is now available.
2025/07/22 21:26:53Z: AMI Origin Version: 2024.12.13
2025/07/22 21:26:53Z: AMI Origin Name: Windows_Server-2022-English-Full-Base
2025/07/22 21:26:53Z: OS: Microsoft Windows NT 10.0.20348
2025/07/22 21:26:53Z: OsVersion: 10.0
2025/07/22 21:26:53Z: OsProductName: Windows Server 2022 Datacenter
2025/07/22 21:26:53Z: OsBuildLabEx: 20348.1.amd64fre.fe_release.210507-1500
2025/07/22 21:26:53Z: OsCurrentBuild: 20348
2025/07/22 21:26:53Z: OsReleaseId: 2009
2025/07/22 21:26:53Z: Language: en-US
2025/07/22 21:26:53Z: TimeZone: UTC
2025/07/22 21:26:53Z: Offset: UTC +0000
2025/07/22 21:26:53Z: Launch: EC2 Launch v2.2.63
2025/07/22 21:26:53Z: AMI-ID: ami-1234567890abcdef1
2025/07/22 21:26:53Z: Instance-ID: i-1234567890abcdef0
2025/07/22 21:26:54Z: Instance Type: t3.xlarge
2025/07/22 21:26:54Z: Driver: AWS NVMe Driver v1.6.0.35
2025/07/22 21:26:54Z: SubComponent: 1.6.0.35; EnableSCSIPersistentReservations: 0
2025/07/22 21:26:54Z: Driver: AWS PV Driver Package v8.5.0
2025/07/22 21:26:55Z: Driver: Amazon Elastic Network Adapter v2.8.0.0
2025/07/22 21:26:55Z: HOSTNAME: EC2AMAZ-9FJG5CC
2025/07/22 21:26:55Z: RDPCERTIFICATE-SUBJECTNAME: {certificate subject name}
2025/07/22 21:26:55Z: RDPCERTIFICATE-THUMBPRINT: {thumbprint hash}
2025/07/22 21:26:56Z: SSM: Amazon SSM Agent v3.3.2746.0
2025/07/22 21:26:57Z: User data format: no_user_data
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IsTelemetryEnabled=true
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentOsArch=windows_amd64
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentCommandErrorCode=1
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AdminPasswordTypeCode=0
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentErrorLocation=execute_windows.go:410
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IpConflictDetectionCode=0
2025/07/22 21:26:57Z: Message: Windows is Ready to use
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2", ...}
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2", ...}
```

### EC2Launch v2 主控台日誌訊息
<a name="ec2launchv2-console-log-messages"></a>

以下是所有 EC2Launch v2 主控台日誌訊息的清單。

```
Error EC2Launch service is stopping. {error message}
```

已停止服務的錯誤詳細資訊：
+ `Error setting up EC2Launch agent folders`
+ `See instance logs for detail`
+ `Error stopping service`
+ `Error initializing service`

```
Windows sysprep configuration complete
```

```
Invalid administrator username: {invalid username}
```

```
Invalid administrator password
Username: {username}
Password: <Password>{encrypted password}</Password>
```

下列訊息是包含 AMI 詳細資訊的資訊區塊：

```
AMI Origin Version: {amiVersion}
AMI Origin Name: {amiName}
Microsoft Windows NT {currentVersion}.{currentBuildNumber}
OsVersion: {currentVersion}
OsProductName: {productName}
OsBuildLabEx: {buildLabEx}
OsCurrentBuild: {currentBuild}
OsReleaseId: {releaseId}
Language: {language}
TimeZone: {timeZone}
Offset: UTC {offset}
Launch agent: EC2Launch {BuildVersion}
AMI-ID: {amiId}
Instance-ID: {instanceId}
Instance Type: {instanceType}
HOSTNAME: {computer name}
RDPCERTIFICATE-SUBJECTNAME: {certificate subject name}
RDPCERTIFICATE-THUMBPRINT: {thumbprint hash}
SqlServerBilling: {sql billing}
SqlServerInstall: {sql patch leve, edition type}
Driver: AWS NVMe Driver {version}
Driver: Inbox NVMe Driver {version}
Driver: AWS PV Driver Package {version}
SSM: Amazon SSM Agent {version}
AWS VSS Version: {version}
```

```
Windows sysprep configuration complete.
Windows is being configured. 'SysprepState is {state}'
Windows is still being configured. 'SysprepState is {state}'
Windows is Ready to use
Waiting for access to metadata...
Meta-data is now available.
Metadata is not available for this instance.
Timed out waiting for access to metadata.
User data format: {format}
```

EC2Launch v2 遙測訊息包含了啟動遙測屬性值。自版本 2.2.63 起，EC2 代理程式遙測資料會格式化為 JSON 物件。

```
EC2LaunchTelemetry: {telemetry property}
```

```
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2" ... }
```

# EC2Launch v2 版本歷程記錄
<a name="ec2launchv2-versions"></a>

**Topics**
+ [EC2Launch v2 版本歷史記錄](#ec2launchv2-version-history)

## EC2Launch v2 版本歷史記錄
<a name="ec2launchv2-version-history"></a>

要確保您已安裝最新的啟動代理程式，請參閱 [安裝最新版本的 EC2Launch v2](ec2launch-v2-install.md)。您會在 EC2Launch v2 代理程式有新版本發佈時收到通知。如需詳細資訊，請參閱[訂閱 EC2 Windows 啟動代理程式通知](launch-agents-subscribe-notifications.md)。

下表說明 EC2Launch v2 的發行版本。


| 版本 | 詳細資訊 | 發行日期 | 
| --- | --- | --- | 
| 2.4.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2026 年 3 月 5 日 | 
| 2.3.237 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2026 年 2 月 25 日 | 
| 2.3.108 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 12 月 29 日 | 
| 2.3.56 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 11 月 4 日 | 
| 2.3.5 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 9 月 15 日 | 
| 2.2.63 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 7 月 29 日 | 
| 2.1.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 5 月 14 日 | 
| 2.0.2107 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 3 月 27 日 | 
| 2081 年 2 月 0 日 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 2 月 4 日 | 
| 2046 年 2 月 0 日 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 10 月 3 日 | 
| 2.0.1981 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 8 月 6 日 | 
| 2.0.1948 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 7 月 1 日 | 
| 2.0.1924 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 6 月 10 日 | 
| 2.0.1914 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 6 月 5 日 | 
| 2.0.1881 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 5 月 8 日 | 
| 2.0.1815 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 3 月 6 日 | 
| 2.0.1739 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 1 月 17 日 | 
| 2.0.1702 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2024 年 1 月 4 日 | 
| 2.0.1643 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 10 月 4 日 | 
| 2.0.1580 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 9 月 5 日 | 
| 2.0.1521 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 7 月 3 日 | 
| 2.0.1303 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 5 月 3 日 | 
| 2.0.1245 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 3 月 8 日 | 
| 2.0.1173 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 2 月 6 日 | 
| 2.0.1121 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 1 月 4 日 | 
| 2.0.1082 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 12 月 7 日 | 
| 2.0.1011 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 11 月 11 日 | 
| 2.0.1009 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 11 月 8 日 | 
| 2.0.982 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 10 月 31 日 | 
| 2.0.863 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 7 月 6 日 | 
| 2.0.698 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 1 月 30 日 | 
| 2.0.674 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 11 月 15 日 | 
| 2.0.651 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 10 月 7 日 | 
| 2.0.592 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 8 月 31 日 | 
| 2.0.548 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 8 月 4 日 | 
| 2.0.470 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 7 月 20 日 | 
| 2.0.285 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 3 月 8 日 | 
| 2.0.207 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 2 月 2 日 | 
| 2.0.160 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2020 年 12 月 4 日 | 
| 2.0.153 | 在 UserData 中新增 Sysprep 功能。 | 2020 年 11 月 3 日 | 
| 2.0.146 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 10 月 6 日 | 
| 2.0.124 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 9 月 10 日 | 
| 2.0.104 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 8 月 12 日 | 
| 2.0.0 | 初始版本。 | 2020 年 6 月 30 日 | 