Welcome to TechNet Blogs Sign in | Join | Help

Hiroshi Okunushi's Blog ☆ミ

{ 日本のIT業界で活躍なさっている方に向けてMicrosoftテクノロジー最新情報を発信していきます。 }
{ Useful Microsoft technology information towards Japanese IT Professionals. Naturally, in Japanese. }
■ HOT: IIS7.0 is the best performable web server Microsoft has ever shipped...
■ HOT: IT Pro道場 自主トレシリーズ、よろしくお願いします。(●^o^●)

News

  • コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。

    Hiroshi Okunushi
    マイクロソフト株式会社
    IT Pro エバンジェリスト
    奥主 洋(おくぬし ひろし)


    Tech・Ed 2008 Yokohama
    ライトニングトーク
    TechEd 2008 Lightning Talk

    IIS バーチャルラボ
    IIS VLAB

    IT PRO MOMENTUM
    プログラム
    IIS VLAB

    Springboard

    ITEブログ検索




    IT交差点

    Power To The Pro

    TechNet IT Pro 道場




    Locations of visitors to this page

    テクノラティお気に入りに追加する

*.IISフォーラム

*.便利機能

0.IIS & PHP Community

1.Blog Roll

2.お仕事、お仕事 (^-^)

3.IIS もの

4.IT Professionals Global

5. MS MVP Team

S.SDM+SML

T.奥主が登場したFlash

[独自翻訳] もう少し進んだシステム構成タスク

This post is a translation of the article specified below.
本投稿は IIS.NET の記事をブログオーナーが独自に翻訳したものです。参考情報としてご利用ください。

ウォークスルーの一覧は [独自翻訳] IIS 7.0 PowerShell プロバイダ を使ってみよう!  をご覧ください。

/*原文*/

Advanced Configuration Tasks
http://learn.iis.net/page.aspx/437/powershell-provider-advanced-configuration-tasks

/*翻訳*/

本ウォークスルーでは XPath クエリーやワイルドカードを使い方で今までよりももっと複雑な構成タスクを実行する方法を学びます。

はじめに

前のウォークスルーでは *-WebConfiguration や *-WebConfigurationProperty コマンドレットを使いました。一見するよりも実はこれらのコマンドレットは奥が深いです。-filter パラメータは特定の構成セクションを指定するだけのパラメータではありません。実はこれは XPath クエリーでこのウォークスルーではどのようにこれを生かせるかを探検してみます。 さらに *-WebConfiguration* コマンドを実行する際にワイルドカードを使う良い方法もみてみます。

本ウォークスルーは前に作成したサイト、アプリケーション、仮想ディレクトリを使用します。

XPath クエリーを使用する

下記は Get-WebConfigurationProperty コマンドレットで ワイルドカードを使用する例です。

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //defaultDocument/files -name Collection[value="index*"] | select value

さらにもう一つ。下記を実行すると ASPNET_ISAPI.DLL によって使用されるハンドラーマッピングが一覧できます。

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //handlers -name Collection[scr
iptProcessor="*aspnet_isapi.dll"]  | select name,path

name                                              path
----                                              ----
svc-ISAPI-2.0-64                                  *.svc
svc-ISAPI-2.0                                     *.svc
AXD-ISAPI-2.0                                     *.axd
PageHandlerFactory-ISAPI-2.0                      *.mspx
SimpleHandlerFactory-ISAPI-2.0                    *.ashx
WebServiceHandlerFactory-ISAPI-2.0                *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0          *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0         *.soap
AXD-ISAPI-2.0-64                                  *.axd
PageHandlerFactory-ISAPI-2.0-64                   *.mspx
SimpleHandlerFactory-ISAPI-2.0-64                 *.ashx
WebServiceHandlerFactory-ISAPI-2.0-64             *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0-64       *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0-64      *.soap

例えば、ASP.NET 用のファイル拡張子 .aspx をあなたがあまり気にいっていないとして、すべての IIS ハンドラーマッピングを *.aspx から *.mspx にしたいとします。こんなに簡単にできます。

PS IIS:\Sites\DemoSite\DemoApp> set-webconfiguration "/system.webServer/handlers/add[@path='*.aspx']/@path" -value "*.mspx"

変更がきちんと反映されたか、見てみましょう。

(get-webconfiguration //handlers).collection | select name,path

構成ファイルそのものを見てみましょうか。前にやった get-item コマンドレットでできます。

PS IIS:\Sites\DemoSite\DemoApp> get-content (((get-item .).physicalPath).ToString() + "\web.config")

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
         <handlers>
            <remove name="PageHandlerFactory-ISAPI-2.0-64" />
            <remove name="PageHandlerFactory-ISAPI-2.0" />
            <remove name="PageHandlerFactory-Integrated" />
            <add name="PageHandlerFactory-Integrated" path="*.mspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
            <add name="PageHandlerFactory-ISAPI-2.0" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
            <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
        </handlers>
    </system.webServer>
</configuration>

構成システムが古いハンドラーを除去して、新しいハンドラーで置き換えていて、*.mspx にマップされていることが確認できます。

IIS の構成から発見する

どこを構成すればいいか知っていれば最高ですが、もし知らなかったらどうすればいいんでしょう? ちょっとヒントです。

存在している IIS 構成セクションの一覧を取得する

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | select SectionPath

特定のセクションで構成できるプロパティの一覧を取得する

get-webconfiguration system.webServer/caching | select -exp Attributes | select Name

二つを組み合わせて、すべてのセクションとその構成可能なプロパティの一覧を取得する

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | foreach {$_.SectionPath.ToUpper();get-webconfiguration $_.SectionPath | select -exp Attributes | select Name;"`n"} | more

多分これらのコマンドをパックして以降の Tech Preview 版では関数にしようと思っていますが、今はできることはこんな感じです。:-)

まとめ

本ウォークスルーでは複雑な IIS 構成タスクをワイルドカードを使ったり、XPath クエリーを使って実施する方法を学びました。次のウォークスルーは状態と実行時情報へのアクセス方法を取り上げます。

/* 翻訳 終わり*/

Posted: Friday, May 02, 2008 4:59 PM by Hiroshi Okunushi

Comments

Hiroshi Okunushi's Blog ☆ミ said:

This post is a translation of the article specified below. 本投稿は IIS.NET の記事をブログオーナーが独自に翻訳したものです。参考情報としてご利用ください。

# May 3, 2008 5:50 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker