PowerShell スナップイン: Web サイト、Web アプリ、仮想ディレクトリ、アプリ プールの作成

作成者 Thomas Deml

このチュートリアルでは、Web サイト、Web アプリケーション、仮想ディレクトリ、およびアプリケーション プールを作成する方法について説明します。

はじめに

IIS PowerShell 名前空間は、Web サイト、アプリ、仮想ディレクトリ、アプリケーション プールなどの項目で構成されます。 組み込みの PowerShell コマンドレットを使用すると、新しい名前空間項目の作成と管理が非常に簡単になります。

Web サイトの作成

PowerShell に慣れている場合は、さまざまな PowerShell 名前空間に新しい項目を作成するために New-Item コマンドレットを使用することが想像できると思います。 たとえば、コマンド New-Item c:\TestDirectory により、新しいファイルシステム ディレクトリが作成されます (ただし、ほとんどのユーザーは New-ItemMD または MKDIR エイリアスを使用します)。 New-Item は、IIS PowerShell 名前空間内に新しい Web サイトを作成するためにも使用されます。

パラメーター

新しいファイル システム ディレクトリを作成するときに必要な引数は、ディレクトリの名前を指定することだけです。 残念ながら、これは Web サイトを作成するときには十分ではありません。 Web サイトを作成するには、ファイル システム パスやネットワーク バインドなどの追加パラメーターが必要です。 新しい Web サイトを作成するコマンドと、その後に続く dir コマンドを次に示します。

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

-physicalPath 引数の使用は非常に簡単です。 しかし、-bindings 引数は非常に複雑に見えるかもしれません。

使用されるコンストラクトはハッシュテーブルです (PowerShell ハッシュ テーブルの詳細については、こちらを参照してください)。 ハッシュ テーブル内のキーと値のペアは、次のような IIS サイトの bindings セクション内の属性を反映する設定を示します。

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

ハッシュ テーブルを使用する理由は、IIS 構成は、追加のセクションと属性を使用して完全に拡張可能であるためです (詳細については、こちらを参照してください)。 <binding> 要素を追加の属性で拡張している人がいることが想像できます。 ハッシュ テーブル内のキー値ペアを使用すると、IIS PowerShell スナップインを完全に書き換えることなく、これらの新しい属性を柔軟に組み込むことができます。

確かに、構文は少し複雑です。 今後の Tech Preview では、サイトの作成などの一般的なタスクを、追加の関数やスクリプトでラッピングすることを検討しています。

サイトの削除

作成したサイトを削除するには次のようにします。

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Web アプリケーションの作成

Web アプリケーションの作成は、サイトを作成するよりも簡単です。 方法を以下に示します。

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

Web サイトの下にアプリケーションまたは仮想ディレクトリを作成するため、指定する必要がある唯一のパラメーターは種類 (-type) です。 -type パラメーターを指定することで、IIS スナップインにアプリケーションを作成するように指示します。

アプリケーションを削除するには、Remove-Item を使用することもできます。

仮想ディレクトリの作成

仮想ディレクトリを作成する場合にも、New-Item コマンドレットを使用します。 "既定の Web サイト" の下に仮想ディレクトリを作成し、前の手順で作成した Web アプリケーションの下に 2 つ目のディレクトリを作成してみましょう。

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

アプリケーション プールの作成

これはより簡単です。 新しい AppPool を作成するには、名前を指定するだけです。

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

シンプルでしたね。 次に、これをエンドツーエンドのシナリオにまとめてみましょう。

まとめ

次のエンドツーエンドのシナリオでは、次の手順を実行します。

  1. 後で作成するサイト、Web アプリケーション、仮想ディレクトリ用の新しいファイル システム ディレクトリのセットを作成します。
  2. 新しく作成したディレクトリ非常に単純な Web コンテンツをコピーします。
  3. 新しいアプリケーション プールを作成します。
  4. 新しいサイト、新しいアプリケーション、2 つの新しい仮想ディレクトリを作成し、新しく作成したアプリケーション プールに割り当てます。
  5. Web ブラウザーを使用して Web コンテンツを要求します。

手順 1: 新しいディレクトリを作成する

New-Item コマンドレットを使用して、4 つの新しいファイル システム ディレクトリを作成します。 次のコマンドを実行します (-type パラメーターを指定しない場合は、New-Item の代わりに 'md' を使用します)。

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

手順 2: コンテンツをコピーする

次に、上記のディレクトリに簡単な html コンテンツを書き込んでみましょう。

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

手順 3: 新しいアプリケーション プールを作成する

前のサンプルで作成したアプリケーション プールを削除した場合は、新しいサイト用の新しいアプリケーション プール 'DemoAppPool' を作成します。

New-Item IIS:\AppPools\DemoAppPool

Note

WebAdministration モジュールがインポートされていない場合、上記のコマンドレットは失敗します。 これを行うには、上記のコマンドレットを含むスクリプトの最初の手順として、次のコマンドレットを追加します。

Import-Module "WebAdministration"

手順 4: 新しいサイト、Web アプリケーション、仮想ディレクトリを作成し、アプリケーション プールに割り当てる

ここが一番大事なところです。 DemoSite、DemoApp、および 2 つの仮想ディレクトリを作成します。DemoVirtualDir1 は DemoSite のすぐ下にあり、DemoVirtualDir2 は DemoApp の下にあります。 前の手順で作成した DemoAppPool に DemoSite と DemoApp を割り当てます。 "既定の Web サイト" と競合しないように、DemoSite はポート 8080 に割り当てられます。

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

よくできました。 後は、Web コンテンツを要求するだけです。

手順 5: Web コンテンツを要求する

もちろん、ブラウザーを開いて、http://localhost:8080/ と他のすべての URL を入力することもできます。 ただし、これは PowerShell のチュートリアルなので、.NET WebClient クラスを使用して PowerShell で実行します。

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

さらに応用として、Internet Explorer オブジェクト自体を使用することもできます。

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

まとめ

このチュートリアルでは、PowerShell を使用して Web サイト、Web アプリケーション、仮想ディレクトリ、アプリケーション プールを作成する方法について説明しました。 機能するエンドツーエンドのシナリオを構築するために、PowerShell の追加機能が使用されました。