トレーニング
ラーニング パス
Windows PowerShell を使用してスクリプトを作成および変更する - Training
このラーニング パスでは、スクリプトを作成および変更する方法について説明します。 ファイルからのデータのインポート、ユーザー入力の受け入れ、エラー処理など、便利なスクリプト作成手法について説明します。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
作成者 Thomas Deml
このチュートリアルでは、Web サイト、Web アプリケーション、仮想ディレクトリ、およびアプリケーション プールを作成する方法について説明します。
IIS PowerShell 名前空間は、Web サイト、アプリ、仮想ディレクトリ、アプリケーション プールなどの項目で構成されます。 組み込みの PowerShell コマンドレットを使用すると、新しい名前空間項目の作成と管理が非常に簡単になります。
PowerShell に慣れている場合は、さまざまな PowerShell 名前空間に新しい項目を作成するために New-Item コマンドレットを使用することが想像できると思います。 たとえば、コマンド New-Item c:\TestDirectory
により、新しいファイルシステム ディレクトリが作成されます (ただし、ほとんどのユーザーは New-Item
に MD
または 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 アプリケーションの作成は、サイトを作成するよりも簡単です。 方法を以下に示します。
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 {}
シンプルでしたね。 次に、これをエンドツーエンドのシナリオにまとめてみましょう。
次のエンドツーエンドのシナリオでは、次の手順を実行します。
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
次に、上記のディレクトリに簡単な 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"
前のサンプルで作成したアプリケーション プールを削除した場合は、新しいサイト用の新しいアプリケーション プール 'DemoAppPool' を作成します。
New-Item IIS:\AppPools\DemoAppPool
注意
WebAdministration モジュールがインポートされていない場合、上記のコマンドレットは失敗します。 これを行うには、上記のコマンドレットを含むスクリプトの最初の手順として、次のコマンドレットを追加します。
Import-Module "WebAdministration"
ここが一番大事なところです。 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 コンテンツを要求するだけです。
もちろん、ブラウザーを開いて、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 の追加機能が使用されました。
トレーニング
ラーニング パス
Windows PowerShell を使用してスクリプトを作成および変更する - Training
このラーニング パスでは、スクリプトを作成および変更する方法について説明します。 ファイルからのデータのインポート、ユーザー入力の受け入れ、エラー処理など、便利なスクリプト作成手法について説明します。