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 つあります。
- 単純なプロパティを変更する場合は、Set-ItemProperty を使用します。
- コレクションを処理していて、新しいコレクション エントリを追加する場合は、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 構成設定の構成を変更する方法について説明します。