

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Windows PowerShell スクリプトを実行します
<a name="cookbooks-101-opsworks-opsworks-powershell"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](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 リソースがないタスク)を実行させる 1 つの方法は、レシピで 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 コマンドレットをインスタンスで実行します。以下の例では、[Install-WindowsFeature cmdlet](https://technet.microsoft.com/en-us/library/hh849795.aspx) コマンドレットを使用して、インスタンスに XPS ビューアーをインストールしています。

以下に、この例のスタックを作成する方法を簡単に示します。詳細については、「[新しいスタックを作成する](workingstacks-creating.md)」を参照してください。

**Stack を作成する**

1. [OpsWorks スタックコンソール](https://console.aws.amazon.com/opsworks/)を開いて [**Add Stack**] を選択します。次の設定を指定し、その他の設定はデフォルト値を受け入れて、[**Add Stack**] をクリックします。
   + **Name** (名前) – PowerShellTest
   + **リージョン** – 米国西部 (オレゴン)

     この例はいずれのリージョンでも動作しますが、チュートリアルでは米国西部 (オレゴン) を使用することをお勧めします。
   + **Default operating system** (デフォルトのオペレーティングシステム) – Microsoft Windows Server 2012 R2

1. [**Add a layer**] を選択し、以下の設定を使用してスタックに[カスタムレイヤーを追加](workinglayers-custom.md)します。
   + **Name** (名前) – PowerShell
   + **Short name** (短縮名) – powershell

1. デフォルト設定で PowerShellレイヤーに [24/7 インスタンスを追加](workinginstances-add.md)し、[起動](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` リソースによって、[XPS] ビューアーをインストールするコマンドレットが実行されます。

     この例では、1 つのコマンドレットのみを実行していますが、`code` ブロックには任意の数のコマンドラインを含めることができます。
   + `guard_interpreter` 属性を指定すると、Chef によって Windows PowerShell の 64 ビットバージョンが使用されます。
   + `not_if` ガード属性を指定すると、Chef によってインストール済みの機能はインストールされません。

1. `.zip` ディレクトリの `powershell` アーカイブを作成します。

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)し、以下の設定を指定します。
   + **Repository type** (リポジトリタイプ) – **S3 Archive** (アーカイブ)
   + **Repository URL** (リポジトリの URL) - 前の手順で記録したクックブックアーカイブ URL

   その他の設定ではデフォルト値を受け入れ、[**Save**] を選択してスタック設定を更新します。

1. [[**Update Custom Cookbooks**] スタックコマンドを実行](workingstacks-commands.md)して、カスタムクックブックの最新バージョンをインスタンスにインストールします。

1. **カスタムクックブックの更新**が終了したら、**実行するレシピ**を **powershell::default** に設定して[**レシピの実行**スタックコマンド](workingstacks-commands.md)を実行することで、レシピを実行します。

**注記**  
この例では、便宜上 **Execute Recipes** を使用していますが、通常、適切なライフサイクルイベントに割り当てることで OpsWorks 、 スタックで[レシピを自動的に実行](workingcookbook-assigningcustom.md)します。このようなレシピは、イベントを手動でトリガーすることによって実行できます。Setup および Configure イベントをトリガーするにはスタックコマンドを使用し、Deploy および Undeploy イベントをトリガーするには[デプロイコマンド](workingapps-deploying.md)を使用できます。

レシピが正常に実行された後で、それを検証できます。

**PowerShell レシピを確認するには**

1. [Chef ログ](troubleshoot-debug-log.md)を調べます。powershell1 インスタンスの **[Log]** (ログ) 列の **[show]** (表示) をクリックすると、ログが表示されます。下へスクロールすると、下部にログメッセージが表示されます。

   ```
   ...
   [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 Viewer が [**Windows Accessories**] に表示されていることを確認できます。