PowerShell スナップイン: Web サイトとアプリケーション プールに対する簡単な構成変更

発行日 : 2008 年 4 月 14 日 (作業者 : thomad(英語))
更新日 : 2009 年 3 月 9 日 (作業者 : thomad(英語))

このチュートリアルでは、Web サイト、Web アプリケーション、仮想ディレクトリ、アプリケーション プールなどの IIS 名前空間コンテナの簡単なプロパティを、PowerShell の組み込みコマンドレットを使用して変更する方法について説明します。

はじめに

PowerShell スナップインの役割は、New-Item、Get-Item、Get-ChildItems、Set-Item、Set-ItemProperty などの PowerShell の一般的な組み込みコマンドレットで管理作業を行なうための名前空間を提供することです。組み込みコマンドレットは、PowerShell で提供されるすべての名前空間に対して機能します。New-Item c:\testdir を実行して新しいファイル システム ディレクトリを作成できますが、Web サイトやアプリケーション プールなどの IIS オブジェクトもたとえば New-Item IIS:\AppPools\NewAppPool を実行することによって、新規作成することができます。

ここまでのチュートリアルでは、New-Item コマンドレットと Get-Item コマンドレットを使用しました。このチュートリアルでは、組み込みコマンドレットについてさらに詳しく調べます。

多くの場合、項目を作成した後で、それらの項目の設定を変更する必要が生じます。これを実行するには、組み込みコマンドレットの New-ItemProperty と Set-ItemProperty を使用します。さらに、Get-Item と Set-Item を使用する方法についても紹介します。

このチュートリアルでは、以前のチュートリアルで作成した Web サイト "Demosite"、およびそのサイトの Web アプリケーションと仮想ディレクトリを使用します。

構成設定の参照

設定の変更を行う前に、まず、設定を参照します。"DemoSite" の構成設定を参照するコマンドは、次のとおりです。

PS IIS:\> get-item IIS:\Sites\DemoSite
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
DemoSite         2    Started    c:\demosite                    http :8080:

これにより、サイトの主要なプロパティが表示されます。より詳細な設定を参照したい場合もあります。

より詳細な設定を表示するコマンドは、次のとおりです。

(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

上の例では、コレクションのエントリを出力する前に Get-ItemProperty 呼び出しを評価する必要があるため、かっこを使用しています。これは数学の数式と同じ原理です。(5 + 4) * 3 では、まず 5 + 4 の値を求めて、次に 3 を掛けます。ここの例では、Get-ItemProperty コマンドの結果が評価され、IIS 構成オブジェクトが生成されます。そのオブジェクトに含まれているコレクションを画面に出力しています。

AppPools の processModel セクションなど、他のプロパティやコレクションでもこの方法を使用できます。たとえば、次のコマンドでは、DemoAppPool の startupTimeLimit に関する適切な DateTime オブジェクトが返されます。

PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit

Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 30
Milliseconds      : 0
Ticks             : 900000000
TotalDays         : 0.00104166666666667
TotalHours        : 0.025
TotalMinutes      : 1.5
TotalSeconds      : 90
TotalMilliseconds : 90000

サイト設定とアプリケーション プール設定の変更

変更を行うには 2 つの基本的な方法があります。

  1. 簡単なプロパティを変更する場合は、Set-ItemProperty を使用します。  

  2. コレクションに対して新しいコレクション エントリを追加する場合は、New-ItemProperty を使用します。IIS7 の既定のインストールでは、IIS 名前空間で使用されるコレクションは bindings コレクションだけです。

Set-ItemProperty と New-ItemProperty

最初に、DemoSite にバインドを追加します。

PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
ation=":8081:"}
PS IIS:\> dir IIS:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
DemoSite         2    Started    c:\demosite                    http :8080:

出力例から、DemoSite はポート 8081 もリッスンするようになったことがわかります。

既存のプロパティを変更する場合は、Set-ItemProperty を使用します。たとえば、サイトの名前を変更します。

PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
PS IIS:\> dir iis:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
NewDemoSite      2    Started    c:\demosite                    http :8080:
                                                                http :8081:

元の名前に戻します。

PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite
                    

さらに、アプリケーション プールが実行される ID も変更します。ただし、最初にユーザーを作成する必要があります。それには ADSI を使用します。

$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()

このユーザーとして実行される DemoAppPool を構成する準備が整いました。

Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

以前にも紹介しましたが、拡張性を備えるためにプロパティ名と値の組み合わせによるハッシュ テーブルを使用しています。ハッシュ テーブルの使用方法を忘れた場合は、こちらのリンク (英語)を参照してください。

Set-Item と Get-Item

ここでは、上記と同じ操作 (アプリケーション プールへのユーザーの割り当て) を、set-item と get-item の組み合わせを使用して実行します。コマンド ライン補完を活用できるため、この方法で実行するほうがより便利な場合があります。ここではコマンド ライン補完の動作を確認するため、次のコマンドをコピーして貼り付ける方法は使用しないでください。コマンド ライン補完を行なうには、いくつかの文字を入力して Tab キーを使用します。

PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
PS IIS:\AppPools> $demoPool.processModel.identityType = 3
PS IIS:\AppPools> $demoPool | Set-Item

まとめ

このチュートリアルでは、PowerShell で提供されるコマンドレットを使用して、サイトやアプリケーション プールなどの IIS 名前空間コンテナーを管理する方法について説明しました。また、ハッシュ テーブルを使用する方法、およびコマンド ライン補完を活用する方法についても説明しました。次のチュートリアルでは、IIS スナップイン コマンドレットを使用して、IIS スナップイン名前空間では公開されない IIS 構成設定を変更する方法について説明します。