

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

# 執行 Windows PowerShell 指令碼
<a name="cookbooks-101-opsworks-opsworks-powershell"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

**注意**  
這些範例假設您已完成[在 Windows 執行個體上執行配方](cookbooks-101-opsworks-opsworks-windows.md)範例。否則，您應該先執行該範例。具體而言，它說明如何[啟用 RDP 存取](cookbooks-101-opsworks-opsworks-windows.md#cookbooks-101-opsworks-opsworks-windows-rdp)您的執行個體。

讓配方在 Windows 執行個體上執行任務的一種方式，特別是沒有對應 Chef 資源的任務，就是讓配方執行 Windows PowerShell 指令碼。本節說明如何使用 Windows PowerShell 指令碼安裝 Windows 功能，以介紹基本概念。

[https://docs.chef.io/chef/resources.html#powershell-script](https://docs.chef.io/chef/resources.html#powershell-script) 資源會在執行個體上執行 Windows PowerShell cmdlet。下列範例使用 [Install-WindowsFeature Cmdlet](https://technet.microsoft.com/en-us/library/hh849795.aspx) 以在執行個體上安裝 XPS 檢視器。

以下簡短地彙總如何針對此範例建立堆疊。如需詳細資訊，請參閱[建立新的堆疊](workingstacks-creating.md)。

**建立堆疊**

1. 開啟 [OpsWorks Stacks 主控台](https://console.aws.amazon.com/opsworks/)，然後選擇 **Add Stack (新增堆疊)**。指定下列設定，並接受其他設定的預設值，然後按一下 **Add Stack (新增堆疊)**。
   + **名稱** – PowerShellTest
   + **區域** – 美國西部 （奧勒岡）

     此範例適用於任何區域，但我們建議您使用美國西部 （奧勒岡） 進行教學課程。
   + **預設作業系統** – Microsoft Windows Server 2012 R2

1. 選擇 **Add a layer (新增 layer)**，並[新增自訂 layer](workinglayers-custom.md) 至具有下列設定的堆疊。
   + **名稱** – PowerShell
   + **簡短名稱** – powershell

1. [新增全年無休執行個體](workinginstances-add.md) (具有預設設定) 至 PowerShell layer，以及[啟動它](workinginstances-starting.md)。

1. 選擇 **Permissions (許可)**，並選擇 **Edit (編輯)**，然後選取 **SSH/RDP** 和 **sudo/admin**。除了 `AWS-OpsWorks-RDP-Server` 安全群組之外，您還需要有此授權，才能以一般使用者身分登入執行個體。

當執行個體啟動時，通常需要幾分鐘的時間，您可以建立技術指南。此範例的配方會建立資料目錄，而且基本上是[範例 3：建立目錄](cookbooks-101-basics-directories.md) (針對 Windows 所修改) 中的配方。

**設定技術指南**

1. 建立並導覽至名為 `powershell` 的目錄。

1. 使用下列內容建立 `metadata.rb` 檔案，並將它儲存至 `windowstest`。

   ```
   name "powershell"
   version "0.1.0"
   ```

1. 在 `recipes` 目錄內，建立 `powershell` 目錄。

1. 使用下列配方建立 `default.rb` 檔案，並將它儲存至 `recipes` 目錄。

   ```
   Chef::Log.info("******Installing XPS.******")
   
   powershell_script "Install XPS Viewer" do
     code <<-EOH
       Install-WindowsFeature XPS-Viewer
     EOH
     guard_interpreter :powershell_script
     not_if "(Get-WindowsFeature -Name XPS-Viewer).installed"
   end
   ```
   + `powershell_script` 資源會執行 Cmdlet 來安裝 XPS 檢視器。

     此範例只會執行一個 Cmdlet，但 `code` 區塊可以包含任意數目的命令列。
   + `guard_interpreter` 屬性會指示 Chef 使用 64 位元版本的 Windows PowerShell。
   + `not_if` 保護屬性可確保 Chef 不會安裝已安裝的功能。

1. 建立 `powershell` 目錄的 `.zip` 存檔。

1. [將封存上傳至 Amazon S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html)，[將封存設為公](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html)有，並記錄封存的 URL。您也可以使用私有封存，但在此範例中公有封存就已足夠，而且使用起來更為簡單。

   傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊，請參閱[如何清空 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)或[如何刪除 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)。

您現在可以安裝技術指南，並執行配方。

**執行配方**

1. [編輯堆疊以啟用自訂技術指南](workingcookbook-installingcustom-enable.md)，然後指定下列設定。
   + **儲存庫類型** – **S3 封存**
   + **儲存庫 URL** – 您先前記錄的技術指南封存 URL

   接受其他設定的預設值，然後選擇 **Save (儲存)** 以更新堆疊組態。

1. [執行 **Update Custom Cookbooks (更新自訂技術指南)** 堆疊命令](workingstacks-commands.md)，以在堆疊執行個體上安裝最新版的自訂技術指南。

1. **更新自訂技術指南**完成後，使用配方執行[**執行配方堆疊**命令](workingstacks-commands.md)**以執行設定為 的配方****powershell::default**。

**注意**  
為了方便起見，此範例使用**執行配方**，但您通常會讓 OpsWorks Stacks 透過將配方指派給適當的生命週期事件來[自動執行](workingcookbook-assigningcustom.md)配方。您可以手動觸發事件來執行這類配方。您可以使用堆疊命令來觸發安裝和設定事件，以及使用[部署命令](workingapps-deploying.md)來觸發部署和解除部署事件。

成功執行配方之後，您就可以驗證配方。

**驗證 powershell 配方**

1. 檢查 [Chef 日誌](troubleshoot-debug-log.md)。按一下 powershell1 執行個體**日誌**欄中的**顯示**以顯示日誌。向下捲動，您會在接近底端看到您的日誌訊息。

   ```
   ...
   [2015-04-27T18:12:09+00:00] INFO: Storing updated cookbooks/powershell/metadata.rb in the cache.
   [2015-04-27T18:12:09+00:00] INFO: ******Installing XPS.******
   [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Install XPS Viewer] action run (powershell::default line 3)
   [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Guard resource] action run (dynamically defined)
   [2015-04-27T18:12:42+00:00] INFO: powershell_script[Install XPS Viewer] ran successfully 
   ...
   ```

1. [使用 RDP 登入執行個體](workinginstances-rdp.md)，並開啟 **Start (開始)** 選單。XPS 檢視器應該與 **Windows Accessories (Windows 附屬應用程式)** 一起列出。