This post is a translation of the article specified below. 本投稿は IIS.NET の記事をブログオーナーが独自に翻訳したものです。参考情報としてご利用ください。
ウォークスルーの一覧は [独自翻訳] IIS 7.0 PowerShell プロバイダ を使ってみよう! をご覧ください。
/*原文*/
Making Simple Configuration Changes to Web-Sites and Application Pools http://learn.iis.net/page.aspx/434/making-simple-configuration-changes-to-web-sites-application-pools-web-applications-and-virtual-directories
/*翻訳*/
本ウォークスルーでは IIS ネームスペースで取り扱うコンテナの Webサイト、Webアプリケーション、仮想ディレクトリ そして アプリケーションプールのような簡単なプロパティ をビルトイン PowerShell コマンドレットを使用してアクセスする方法を学びます。system.webServer セクションやカスタムセクションでの設定変更については次のウォークスルーでやります。
PowerShell プロバイダの意義と目的はネームスペースの提供により、New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty などの標準的なビルトインの PowerShell コマンドレットで管理作業を行えるようにすることです。 ビルトインコマンドレットはすべての PowerShell が提供するネームスペースに対して機能します。New-Item c:\testdir は例えば、新しいシステムディレクトリの作成を行いますが、同様の方法で Webサイトやアプリケーションプールなどの新しい IIS のオブジェクトも作成することができます。例えば New-Item IIS:\AppPools\NewAppPool のようにです。
これまでのウォークスルーで New-Item や Get-Item コマンドレットを使い始めました。このウォークスルーではもっとビルトインコマンドレットで何ができるか探検していきます。
多くの場合、ある設定を作成時ではなく、作成後に構成設定を変更する必要があるでしょう。これに対しては New-ItemProperty と Set-ItemProperty コマンドレットを使用します。もちろん Get-Item と Set-Item も一緒に見ていくことにします。
本ウォークスルーは「Demosite」という名前のWebサイトや関連した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 が評価されて、9になり、その後 9*3 で 27 という計算が正解です。このケースでは まず 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
変更を行う際には基本的に二つの方法があります。
簡単なプロパティの変更を行う場合には Set-ItemProperty を使います。
コレクションを処理していて、新しいコレクションを追加する場合には New-ItemProperty を使います。 IIS7 既定インストールでは bindings コレクションが IIS ネームスペースで使われる唯一のコレクションです。
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:
別の例で今度はアプリケーションプールが指定するプロセスの実行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 の組合せを使ってアプリケーションプールのユーザー割り当て などをやってみましょう。コマンドラインでのタブキー入力を楽しめるのでこちらの方が皆さんは好きかもしれません。下記がどう動くかを見る上でコピー&ペーストをしないで何文字か打って、タブキーで入力を完成する方法を楽しんでください。
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 で用意されたコマンドレットで WebサイトやアプリケーションプールなどのIIS ネームスペース コンテナを管理する方法を学びました。また、ハッシュテーブルを使用したり、コマンドラインでタブキー入力を経験しました。次のウォークスルーでは IIS プロバイダのコマンドレットを使用して IIS のネームスペース経由では公開されていない構成設定の変更を行う方法を学びます。
/* 翻訳 終わり*/