Hiroshi Okunushi's Blog ☆ミ| IIS PHP etc.

IIS7, PHP on IIS を中心とした情報発信ブログです。

[独自翻訳] IIS7.0 PowerShell プロバイダ ネームスペースへの招待

[独自翻訳] IIS7.0 PowerShell プロバイダ ネームスペースへの招待

  • Comments 4
  • Likes

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

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

/*原文*/

Introduction to IIS 7.0 PowerShell Provider Namespace
http://learn.iis.net/page.aspx/430/navigating-the-iis-provider-namespace

/*翻訳*/

ほぼどなたもファイルシステムというものはどう構成されていて、動作するかご存じだと思います。ファイルシステムは階層型ネームスペースで、ファイルや他のディレクトリを含むディレクトリで構成されています。PowerShell プロバイダはファイルシステムによく似た構成で他のデータストアを階層型ネームスペースとして公開します。Cドライブのルートは通常 C:\ ですが、 IIS構成システムのルートは IIS:\ になるということです。

ルート IIS:\ ドライブの配下には Sites と Application Pools 省略して AppPools が存在します。
<補足>
Get-ChildItem、dir、ls のいずれかで確認できますのでお試しください。

IIS プロバイダ ネームスペース

以下がIIS 7.0 PowerShell プロバイダ ネームスペースの構造です。これらのコンテナは削除も移動もできません。

  • IIS:\
    • Sites
      • Site Collection
        • Applications and Virtual Directories
    • AppPools
      • WorkerProcesses

メモ:ワーカープロセスが開始されている場合には Worker Process コレクションに PowerShell Process オブジェクトを見つけることができます。この Process コレクションは Request と AppDomain オブジェクト を含みます。これらによりワーカープロセス内の現在実行しているリクエストや実行されているアプリケーションドメインをクエリすることができます。

さあ 試してみましょう。

タスク 1 - IIS プロバイダ ネームスペース に慣れる

1.1. IIS PowerShell Management Console を実行する

スタートメニューから すべてのプログラム - IIS7.0 Extensions - IIS PowerShell Management Console から実行できます。ここで起動される新規のPowerShell コマンドウィンドウ は IIS:\ にセットされています。これは IIS プロバイダ ネームスペースのルートを指しています。

1.2. ネームスペースにアクセスしてみます

dir とタイプしてルート以下にあるディレクトリは Sites と AppPools の二つだけなのがわかります。

PS IIS:\> dir

Name
----
Sites
AppPools

次に、Sites ディレクトリにに移動します。これは下記のように実行できます。

PS IIS:\> cd Sites

PS IIS:\Sites> dir

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:

もしあなたが冒険好きだったら Si + タブキーで PowerShell が自動的にコマンドを完成してくれるのを発見できたでしょう。

さあ今度はこれをトライしてみましょう。

1.2 もっとナビゲーションしてみる

PS IIS:\Sites> Get-Item 'Default Web Site' | Select-Object *

PSPath                     : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites\Default Web Site
PSParentPath               : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites
PSChildName                : Default Web Site
PSDrive                    : IIS
PSProvider                 : IIsProviderSnapIn\WebAdministration
PSIsContainer              : True
State                      : Started
name                       : Default Web Site
id                         : 1
serverAutoStart            : True
bindings                   : {binding, binding}
limits                     : Microsoft.Web.Administration.ConfigurationElement
logFile                    : Microsoft.Web.Administration.ConfigurationElement
traceFailedRequestsLogging : Microsoft.Web.Administration.ConfigurationElement
applicationDefaults        : Microsoft.Web.Administration.ConfigurationElement
virtualDirectoryDefaults   : Microsoft.Web.Administration.ConfigurationElement
applicationPool            : DefaultAppPool
enabledProtocols           : http
userName                   :
password                   :
physicalPath               : f:\inetpub\wwwroot
Attributes                 : {name, id, serverAutoStart, state}
ChildElements              : {bindings, limits, logFile, traceFailedRequestsLogging...}
ElementTagName             : site
IsLocallyStored            : True
Methods                    : {Start, Stop}
RawAttributes              : {name, id, serverAutoStart, state}
Schema                     : Microsoft.Web.Administration.ConfigurationElementSchema

今回は 古き良き CD とか DIR などの DOSコマンドを使わずに PowerShell コマンドレットを使いました。もし効果的に IIS7.0 PowerShell プロバイダ を使いたいのであればこれらのコマンドに慣れておくとよいでしょう。

Get-Item を例にとると、特定の場所にあるアイテムの詳細を取得するためのコマンドです。このケースでは「Default Web Site」の詳細を得ました。タイピングを少し省略したければ get-item D と打ったところで タブキーを押すと PowerShell が候補を自動的に表示してくれます。Get-Item の出力をパイプして Select-Object コマンドレットに渡すと「Default Web Site」のすべての構成設定を表示します。

まとめ

本ウォークスルーでは IIS プロバイダ ネームスペースがどのように構成されているかを手短にご紹介しました。さらにネームスペースを操作するための基本的なコマンドをいくつか学ぶことができました。

/* 翻訳 終わり*/

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

  • 奥主様

    この記事はわたくしに光明を与えてくれたようです。私は本物のビギナーで今年からASP.NETの学習をStepByStepのMS Press教科書で学び始めた69歳の盛年で、はじめてIIS7の構成をMSのビデオに準じて行いました。 しかし最終段階の構成の確認でhttp://localhost/でIISのスタート画面が出ませんでした。 ネットを徘徊して1週間解決に至りませんでした。 しかたなくMSのサポートを受けようとしたら、このサービスは有料で数万円必要との由。 昨夜たまたま貴殿のブログに巡り合え、早速PowershellをインストールしてIIS>Directoryを見てみました。私のシステムでは

    AppPool

    Name                  State     Application

    Classic .NET AppPool Started      

    DefaultAppPool       started  Default Web Site

                                 /ASPNETStepByStep/Chapter03/WebSite

                                 /MSMQ

    wmsrv                started

    Sites

      エラーmessage赤色文字で

      Get-ChildItem:指定されたモジュールが見つかりません(HRESULTからの例外: 0x8007007E)

      発生場所: 行:1 文字:3

      dir<<<<

    SslBindings

       項目なし

    何処の、どのファイルに異常があるのか解りません、御教唆いただければ大変幸せです。

    Looking forward to the pleasure of hearing from you soo. I also intend to look for advisable information through NET. Thank you with best regards.

    Masami Kitada

  • 追伸:奥主様

    原因が絞らてきたようです。指示のあったサイトでPowerShell Snap-in Using the Task-based Cmdlets the IIS PowerShell Snap-in ページの例題を試みた結果を報告します。

    1.新しいサイト"MyNewWebSite"はできました。

    2.ノートパッドを開くこともできました。

    3."Hello World" test.htm は指定場所にSave できませんでした。

    4.従って、止む負えずExplorerで手動で移動しました。

    5.IIS7ではファイルを認識していませんでした。

    6.従って、手動でインストールしました。

    7.「参照」したところ、500.24のエラーがでましたので、対処方法にしたがってクライアントの偽装を無効にしたところ、無事に"Hello Workd"が表示されました。

    問題は「Sites」Directoryにあるように思われます。

    PowerShell でset, add, new, get, remove 等のコマンドの使用方法が知りたいです。 コマンドラインから例文をそのまま入力するとエラーになります。

    「Sites」Directoryを再構築する方法を知りたいです。

    よろしく。

  • 奥主です。状況をお聞きしたいと思いますのでメールをいただけますか?メールアドレスは左の上の方に書いてございます。

    また、先日実施した TF セミナー Web インフラ基本編では実はアプリケーションプール、サイト、アプリケーション、仮想ディレクトリの関係なども解説しました。その資料は間もなく公開予定ですし、今回はトライアルでライブ中継のビデオも公開予定ですので準備出来次第、このブログで告知させていただきます。

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment