【IIS7】 Tech・Ed 2008 セッション振り返り(07)

この追加機能をインストールすることで PowerShell でより本格的に管理できるようになります。
今までも Windows PowerShell 内で appcmd.exe を使う方法や.NETのクラス(Microsoft.Web.Administrationをたたく)を直接取り扱う方法も用意されていたわけでこのプロバイダが必須というわけではありません。ただ、より PowerShell の文法に即した形で自然に管理ができるようになるというわけですね。

アイテム №6
「PowerShell Provider for IIS7」

 image

説明

既にIISマネージャ、appcmd、WMI、Microsoft.Web.Administrationを通じて管理が可能なIIS7にさらに Windows PowerShell による管理を提供する

特徴

●サイト、アプリケーション、仮想ディレクトリの作成・変更・削除
●構成プロパティの変更
●実行時データをクエリーする
●他のPowerShellスナップインとの統合による複雑な管理

ベネフィット

PowerShellが持つ強力なスクリプティング機能とこのツールで追加されるIISネームスペース、コマンドレットを使用した柔軟で複雑な管理を可能にする

利用可能 OS

Windows Vista SP1、Windows Server 2008
IIS7.0がインストールされていること
Windows PowerShell 1.0 以降がインストールされていること

その他前提条件

このツールは管理者実行でインストールする必要がある

入手先

PowerShell Provider for IIS 7.0 (x86) - CTP2
PowerShell Provider for IIS 7.0 (x64) – CTP2

Windows PowerShell 1.0

Windows Vista 用 Windows PowerShell 1.0 インストール パッケージ (KB928439)
Windows Vista x64 Edition 用 Windows PowerShell 1.0 インストール パッケージ (KB928439)
Windows Server 2008 では 標準機能なので追加インストールは不要です。
サーバーマネージャで機能から Windows PowerShell をインストールします。
ServerManagerCmd.exe –install PowerShell –a でインストールも可能です。

開発ステージ

Community Technology Preview(CTP) 2

ドキュメンテーション

Getting Started with the IIS 7.0 PowerShell Provider
https://learn.iis.net/page.aspx/428/getting-started-with-the-iis-70-powershell-provider/


セッションより

Windows PowerShell は新たな Windows 環境の管理手法として大変注目が集まっているのはご存じの方も多いと思います。コードネーム「Monad」と呼ばれていたころに比べるとインターネットで検索した時の結果数や本の冊数は比べ物にならないくらいです。私がIIS7.0を2006年から追いかけているように同僚の田辺はMonadのころからPowerShellを追いかけてきましたのでぜひ彼のブログとそこからリンクされている有用のサイトを是非ご覧いただきたいと思います。今後のマイクロソフトのサーバー製品は必ず PowerShell で管理できるようになる開発基準もできましたので、この時点で Windows PowerShell 自身に目を向けて情報収集いただくのはとても有用です。

さて、IIS7.0という観点では何故か appcmd.exe という専用のコマンドが用意されていて、PowerShell 対応からスタートしていません。これはまさに開発の時期が PowerShell と同時期に行われていたからで、IIS7.0の出荷時にコマンドで管理できるインタフェースを用意する必要があったからです。一方で Windows PowerShell の有用性はIISの開発チームもよく知っていましたので、今 現在 CTP版としてネイティブに PowerShell で IIS7.0 を管理するプロバイダを提供しようと開発を進めているわけです。ということでこのプロバイダを使用すると PowerShell の一般的な文法に近い形で IIS7.0を管理できますので一番きれいな形なのかもしれません。

一方で、このプロバイダが無いとIIS7.0は管理しにくいのでしょうか? そうではないです。IIS7.0にはスクリプティングに利用できる管理手法が appcmd、WMIプロバイダ、Microsoft.Web.Administration(MWA)クラスと3つも用意されています。なので、ちょっと考えてみただけでも下記のような組合せが考えられます。Administration Pack の Configuration Editor でもこの3種類の出力をしてくれましたよね。

PowerShell内で

- appcmdを直に対話的に実行する
- appcmdを含んだbatファイルを実行する
- WMIを操作するのが得意な PowerShell 機能をフル活用して対話的に実行する
- WMIプロバイダのスクリプトを記述し、それを実行する
- PowerShell は対話的に.NETのクラスが利用できるので、対話的にMWAを実行する
- 管理を行うプログラムをMWAを使って開発し、それをコマンドで利用する
- 実は構成ファイルはXMLなので、手動で.configファイルを書き換えるつもりでXMLを操作する
・・・winrs.exeを使ってリモート処理、WMIのリモート管理機能でリモート処理 etc…

などなど、やりようによってはすごくPowerShellと親和性が高いことがわかると思います。また、システム構成がXMLファイルになり、アプリケーションをフォルダコピーで配布することが可能、システム構成ファイルもコピーすることが可能な点から PowerShell の中でファイルコピー操作を駆使することでIIS7.0自身の構成展開をはじめ、アプリケーションの配布も可能です。PowerShell は UNIX系のテキストをパースしてコマンドで利用することのできる機能を継承しているのでとにかく PowerShell で何かをするように検討することは管理の自動化と省力化において非常に重要な要素に今後なってくるはずです。

感想

私はこのプロバイダが開発完了したら、このプロバイダを使用することが一番の推奨です。もちろんGUIで操作することと自動化系でこの PowerShell を使用することの組合せになるのかなと思っています。他の環境をも操作できる PowerShell を理解しておくととにかくバラバラで何かを覚えなくても管理が簡単にできることから PowerShell で覚えることが一押しです。UNIX技術者の方であれば当たり前ということかもしれませんが、コマンドを知らなくてヘルプをどんどん引くことで利用できる対話型インタフェースの存在はすごく大きいですね。なんとなく管理方法の想像がつくはずですから。PowerShell 自身も進化していくので2.0以降ではもっともっと便利になるでしょうね。

それと Server Core で PowerShell が使えないのはASP.NETが使えないのと同じ理由です。この点については当面ほかの機能のリモート管理手法を使って代替することになるでしょうね。

下記の PowerShell タグでの RSS をアクセスする中で以前に私が「独自翻訳」した手順もありますので日本語は?と思ったらこちらも参照ください。いずれは PHP on IIS でやっている「IIS7.0を極める」シリーズで取り上げたり、Webcastを用意しようと思っていますので。。。
https://blogs.technet.com/hirookun/archive/tags/PowerShell/default.aspx

余談

このプロバイダの最初のころ操作をした方は「使いずらーい」と思ったに違いありません。今回のCTP2では随分よくなりました。これは開発工程に影響しているのです。CTP1のころは文字列を自分で指定して実行するかなりローレベルなコマンドしか用意されておらず、その代わり汎用的なコマンドを用意していたからです。CTP2ではラッパーのような感覚で特定の操作を行うコマンドが増えたことにより、もっと便利になっています。結果的に IIS7.0 を管理するということは XMLファイルを操作することに行きつくわけで、何もかもやり方は自分のお好みのままですね。まあ HTTP.sys の構成は IIS7.0 の構成とは切り離されているのでまだまだなんでも自由というわけにはいかないのが実情ですけどね。(*^_^*)