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

作成者 : Thomas Deml
発行日 : 2008 年 4 月 3 日 (作業者 : chriskno(英語))
更新日 : 2009 年 5 月 11 日 (作業者 : chriskno(英語))

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

はじめに

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

Web サイトの作成

 PowerShell を既に利用している方は、New-Item コマンドレットによって、さまざな PowerShell 名前空間で新しい項目を作成できることを理解していることでしょう。たとえば、コマンド "New-Item c:\TestDirectory" では、新しいファイル システム ディレクトリが作成されます (ただし大部分のユーザーは New-Item のエイリアスである "MD" または "MKDIR" を使用します)。IIS 7.0 PowerShell 名前空間内では、New-Item は新しい 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 構成は完全に拡張可能であり、セクションや属性を追加できるようになっているためです (詳細については、Configuration Extensibility を参照してください)。属性を追加することによって <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

指定する必要があるパラメーターは種類 (-type) だけです。なぜなら、アプリケーションや仮想ディレクトリのどちらも Web サイトの下に作成可能だからです。-type パラメーターを指定することによって、アプリケーションの作成を IIS スナップインに指示します。

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

仮想ディレクトリの作成

仮想ディレクトリを作成する場合にも、New-Item コマンドレットを使用します。ここでは、"Default Web Site" の下に 1 つ目の仮想ディレクトリを作成し、前の手順で作成した 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. 1 つの新しいサイト、1 つの新しいアプリケーション、および 2 つの新しい仮想ディレクトリを作成し、それらを新しく作成したアプリケーション プールに割り当てます。

  5. Web ブラウザーから Web コンテンツを要求します。

手順 1 : ディレクトリの新規作成

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

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

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

ここからは少し大変です。DemoSite、DemoApp、および 2 つの仮想ディレクトリを作成します。仮想ディレクトリ DemoVirtualDir1 は DemoSite の直下に作成し、仮想ディレクトリ DemoVirtualDir2 は DemoApp の下に作成します。DemoSite と DemoApp を前述の手順で作成した DemoAppPool に割り当てます。DemoSite は、"Default Web Site" と競合しないようにポート 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 コンテンツの要求

当然ながら、ブラウザーを開き、「https://localhost:8080/」などの URL を入力する方法で要求を実行できます。ただし、これは PowerShell チュートリアルなので、ここでは PowerShell で .NET WebClient クラスを使用して要求を実行します。

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

大胆な操作としては、Internet Explorer オブジェクトそのものを使用することも可能です。

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

まとめ

このチュートリアルでは、PowerShell を使用して Web サイト、Web アプリケーション、仮想ディレクトリ、およびアプリケーション プールを作成する方法について説明しました。また、追加の PowerShell 機能を使用して統合シナリオを実行する方法を紹介しました。

関連コンテンツ

記事