次の方法で共有


PowerShell スナップイン: Web サイトとアプリ プールへの構成の変更

作成者: Thomas Deml

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

はじめに

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

前のチュートリアルでは、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

サイトと AppPool の設定の変更

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

  1. 単純なプロパティを変更する場合は、Set-ItemProperty を使用します。
  2. コレクションを処理していて、新しいコレクション エントリを追加する場合は、New-ItemProperty を使用します。 IIS の既定のインストールでは、バインド コレクションが IIS 名前空間で使用される唯一のコレクションです。

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:
                                                                http :8081:

ご覧のとおり、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 構成設定の構成を変更する方法について説明します。