PowerShell スナップイン: 構成セクションでの単純な設定の変更
作成者 Thomas Deml
前のチュートリアルでは、サイト、アプリケーション プール、アプリケーション、仮想ディレクトリなどの IIS 名前空間コンテナーを管理する方法について説明しました。
このチュートリアルでは、IIS 名前空間を介して公開されない構成設定を管理します。
はじめに
IIS 名前空間を介して構成できない IIS 設定 (つまり、組み込みのコマンドレットを使用して変更できない構成) を変更できるコマンドレットがいくつかあります。 代わりに、IIS で提供されるコマンドレットを使用する必要があります。 このチュートリアルでは、前のチュートリアルで作成したサイト、アプリケーション、仮想ディレクトリを使用します。
Get-WebConfiguration と Get-WebConfigurationProperty
Get-WebConfiguration と Get-WebConfigurationProperty を使用すると、IIS 構成セクションを取得できます。 Get-Item と Get-ItemProperty によく似ています。 Get-Item* は名前空間コンテナー (Sites、Apps、AppPools、VDirs) に対してのみ機能するのに対し、Get-WebConfiguration* は、すべての IIS 構成セクションに対して機能します。
構成設定に対してクエリを実行する
前に作成した DemoApp アプリケーションで directoryBrowse セクションに対してどの設定が有効になっているかを見てみましょう。 最初に DemoApp フォルダーに移動し、次にこのフォルダーの認証設定に対してクエリを実行します。 その方法を次に示します。
PS IIS:\> cd IIS:\Sites\DemoSite\DemoApp
PS IIS:\Sites\DemoSite\DemoApp> dir
Type Name Physical Path
---- ---- -------------
file Default.htm C:\DemoSite\DemoApp\Default.htm
virtualDirectory DemoVirtualDir2 C:\DemoSite\DemoVirtualDir2
次の例では、-filter パラメーターを使用して目的の構成セクションを指定し、検索するプロパティを指定する -name パラメーターを使用しています。 現在の場所ではないセクションの設定を表示する場合は、これに加えて -PSPath プロパティを使用できます。 既定の Web サイトのディレクトリ参照設定を照会する方法の例を次に示します。
Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected : False
Name : enabled
TypeName : System.Boolean
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value : False
IsExtended : False
Set-WebConfigurationProperty の使用
以下に示すように、設定の変更は簡単です。
ロックされたセクションの処理
ここで問題があります。 認証セクションは通常ロックされています。つまり、web.config ファイルに書き込むのではなく、代わりに中央の applicationhost.config ファイルに書き込む必要があります。 上記のコマンドを使用して WindowsAuthentication を有効にすると、ロック違反で失敗します。
PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens
when the section is locked at a parent level. Locking is either by default (overrideModeDefault="D
eny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="fa
lse".
At line:1 char:29
+ Set-WebConfigurationProperty <<<< -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
ここで行う必要がある操作は、-PSPath と -location パラメーターを使用することです。 次のコマンドを実行すると、アプリケーション DemoApp の Windows 認証が有効になります。 構成は applicationhost.config に書き込まれますが、location タグを使用します。 ロックと location タグの詳細については、こちらをクリックしてください。
PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp
ただし、構成に対してクエリを実行するときに場所を指定する必要はありません。 通常の Get-WebConfigurationProperty コマンドにより、設定が有効になっていることが示されます。
PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled
True
Get-WebConfiguration とGet-WebConfigurationProperty の比較
前の例の Get-Item とGet-ItemProperty の比較と同じことが当てはまります。 Get-WebConfiguration は、プロパティだけでなくセクション全体を取得します。 これにより、セクションを変数に格納し、セクションのプロパティを変更し、Set-WebConfiguration を使用してセクションを保存し直すことができます。 また、コマンド補完のメリットを得られます。
次に例を示します。 単にコピーして貼り付けるだけではありません。 windowsAuthentication セクションのプロパティを調べます。 「$winAuth.」と入力し、 <TAB> キーを押して、使用可能なプロパティと関数を繰り返します。
PS IIS:\Sites\DemoSite\DemoApp> $winAuth = Get-WebConfiguration -filter /system.webServer/security/authentication/windowsAuthentication
PS IIS:\Sites\DemoSite\DemoApp> $winAuth.enabled = $false
PS IIS:\Sites\DemoSite\DemoApp> $winAuth | set-Webconfiguration -filter /system.webServer/security/authentication/windowsAuthentication -PSPath IIS:\ -location "DemoSite/DemoApp"
Add-WebConfiguration
Add-WebConfiguration は、IIS 構成コレクションに何かを追加する必要がある場合に使用するコマンドレットです。 IIS がコレクションを使用して複数の値を格納するハンドラー、モジュール、既定のドキュメント設定、およびその他の例。
DemoApp の既定のドキュメント コレクションに新しい既定のドキュメントを追加する方法の例を次に示します。
PS IIS:\Sites\DemoSite\DemoApp>Add-WebConfiguration /system.webServer/defaultDocument/files "IIS:\sites\Default Web Site" -at 0 -value
@{value="new-index.html"}
この例では、追加のパラメーター -at を使用しています。 これにより、新しい値を追加するコレクション内の場所を指定できます。 0 は先頭を示し、-1 は末尾を示します。
まとめ
このチュートリアルでは、IIS が提供する Web 構成コマンドレットを使用する方法について説明しました。 構成設定に対してクエリを実行する方法、location タグを使用して設定を構成する方法、コマンド ライン補完を利用する方法、およびコレクションにエントリを追加する方法について学習しました。
次のチュートリアルでは、globbing や XPath などの高度な IIS プロバイダー機能を使用して、いくつかの複雑な構成タスクを実行する方法について説明します。