Windows PowerShell および IIS 7.0 の概要

発行日 : 2007 年 11 月 23 日 (作業者 : saad(英語))
更新日 : 2008 年 5 月 13 日 (作業者 : saad(英語))

はじめに

Windows PowerShell は、Microsoft の新しいシェルおよびスクリプト言語です。ここでは、Windows PowerShell および IIS 7.0 について簡単に説明します。この記事を読むと、Windows PowerShell とは何かについて的確に理解し、Windows PowerShell と IIS 7.0 との関係、および Windows PowerShell によって IIS 管理タスクを効率化する方法について学ぶことができます。

ここに記載される情報は、IT 管理者、ソフトウェア開発者、ソフトウェア テスト担当者、およびマネージャーにとって役立ちます。懐疑的な人でさえ、Windows PowerShell が欠かせないツールであることを確信することでしょう。

この記事には、次の 5 つのセクションがあります。

  • Windows PowerShell の簡単な概要

  • IIS 7.0 を実行中の一般的な環境における Windows PowerShell の使用例 

  • Windows PowerShell を IIS 7.0 と共に直接使用する例

  • Windows PowerShell を使用して IIS 7.0 を管理および操作することの利点の一覧

  • この記事の情報を活用する方法、およびより多くの情報を得て個人のスキル セットを向上させる方法に関する簡単な説明

Windows PowerShell について

Windows PowerShell は、Microsoft の包括的な次世代シェル環境およびスクリプト言語です。Windows PowerShell は、旧式の cmd.exe コマンド シェルおよび .BAT ファイルに代わる劇的なアップグレードと見なすことができます。ユーザーは、Cmd.exe が適切に機能しているのに、なぜ新しいコマンド シェルを使う必要があるのか疑問に思うかもしれません。さらに別のスクリプト言語を学ぶ時間がないと考える方もいるかもしれません。Windows PowerShell は、以前の Microsoft コマンド ライン スクリプト テクノロジの機能を向上させたものです。つまり、Windows PowerShell は、簡単なタスク、複雑なタスクのいずれに対してもより使いやすく、また驚くほど習得しやすくなっています。

Windows PowerShell の機能向上として、次の点が挙げられます。

  • 更新された、一貫性のあるスクリプト言語

  • 組み込みの正規表現機能

  • .NET Framework、WMI 拡張、および Windows レジストリに対する呼び出し機能 

このセクションでは、Windows PowerShell のいくつかの機能を採り上げて具体的な例を示します。以降のセクションでは、Windows PowerShell を IIS 7.0 と共に使用する方法について説明します。

Windows PowerShell の使用を体感するため、サンプルを見てみましょう。図 1 のスクリーン ショットに注目してください。

Ee175734.An Intro to win fig1(ja-jp,TechNet.10).jpg  

図 1 - Windows PowerShell の基本

まず、Windows PowerShell 内のシェルは、従来の Windows コマンド プロンプトと似ていることに注目してください。使い始めてすぐに、Windows PowerShell はとても自然なものに感じられることでしょう。

最初のコマンドを入力してみます。

                    
PS C:\> set-location Data

これは、Windows PowerShell コマンドレットを呼び出して、現在の作業ディレクトリを C:\ から C:\Data に変更します。これは、従来の cd (ディレクトリの変更) コマンドと機能的に同等です。現在のディレクトリを変更するたびに "set-location" を入力しなければならないのは面倒だと思われるかもしれません。実際そのとおりです。

Windows PowerShell には、使用可能なショートカット エイリアスの包括的なセットが用意されています。set-location コマンドレットのエイリアスには、sl (コマンドレットの完全名の短縮版)、および cd (従来の方法) があります。この記事では、読みやすさのためにコマンドレット名の完全版を使用します。

2 番目のコマンドを入力してみます。

                    
PS C:\Data> get-childitem Pow*

 

これは、"Pow" で始まる現在のディレクトリ内のコンテンツの一覧を表示します。Windows PowerShell では大文字小文字は区別されないため、Get-ChildItem とも GET-ChildItem とも入力できます。この記事では、すべて小文字を使用します。get-childitem コマンドレットのエイリアスには、dir (Windows に慣れている方向け)、ls (Unix ユーザー向け) があります。入力しやすいように、gci というエイリアスも用意されています。

次に、copy-item コマンドレットを使用して、Windows PowerShell ディレクトリを、すべてのサブディレクトリと共に、PSBackup という名前の新しいディレクトリにコピーします。

                    
PS C:\Data> copy-item 'PowerShell' 'C:\Data\PSBackup' -recurse -force

 

その後すぐに、remove-item コマンドレットを使用して、新しく作成されたディレクトリとそのコンテンツすべてを削除します。

                    
PS C:\Data> remove-item PSBackup -recurse

 

次のコマンドは、get-content コマンドレットを使用して Hello.txt のコンテンツを取得し、次に out-file コマンドレットへのパイプ ('|' 文字を使用) により、現在のディレクトリ内の新しい HelloCopy.txt ファイルにそれらのコンテンツを保存します。

                    
PS C:\Data> get-content 'Hello.txt' | out-file '.\HelloCopy.txt'

 

次のコマンドは、get-content を使用して新しいファイルのコンテンツを表示します。

                    
PS C:\Data> get-content HelloCopy.txt

 

get-content コマンドレットは、type (Windows) コマンドまたは cat (Unix) コマンドとほぼ同等の機能を持っています。sl エイリアスを使用して作業ディレクトリをルート ドライブに変更して、ミニデモを終了します。

                    
PS C:\Data> sl \

 

ここで、もし Windows PowerShell にできることが、新しい一連のコマンドを使用して、一般的なファイル システムのナビゲーションと操作のタスクを実行することだけだとすると、これ以上読み進めることには意義がないでしょう。簡単な、1 つの段落のみの概要では、そのような誤った推測を招く恐れがあります。しかし、Windows PowerShell には、現在の多くのシェル環境と比較して多数の利点があります。

この Windows PowerShell の導入的な説明をまとめると、次のようになります。Windows PowerShell には、学習曲線があります。新しいテクノロジは、そのテクノロジを早く習得する方法がない限り、役に立ちません。プログラマーはこのプロセスを発見可能性と呼びます。Windows PowerShell は、優れた発見可能性を備えて設計されているため、習得がとても容易になっています。

たとえば、Windows PowerShell プロンプトで get-command を入力するだけで、すべてのコマンドレットの一覧を表示できます。また、get-help と入力し、その後にコマンドレット名を入力すると、そのコマンドレットについての詳細な情報を入手できます。Windows PowerShell をエンジニアやマネージャーに数多く指導してきましたが、ほとんどのエンジニアはたった 1 日の練習で Windows PowerShell をすぐに使用できるようになっています。

一般的な IIS 7.0 環境における Windows PowerShell

前のセクションでは、Windows PowerShell の短い、基本的な概要を説明しました。しかし、Windows PowerShell を使用する本当の利点は、Windows PowerShell の機能を使用して IIS 7.0 を操作および管理することにあります。この記事を読むエンジニアは、"最新かつ最高" という主張に懐疑的になるかもしれません。この記事の後半では、Windows PowerShell の背後にある能力について説明します。IIS 7.0 の多くの管理タスクは、Windows PowerShell のコマンドとスクリプト、および新しい IIS 7.0 GUI ツールを使用して実行できます。

IIS 7.0 では、多くの管理タスクは次のいずれを利用しても実行することができます。

  • グラフィカル ユーザー インターフェイス (GUI) 

  • 対話型の Windows PowerShell コマンド

  • Windows PowerShell スクリプト 

シェルおよびスクリプトを使用してサーバー ソフトウェアを管理してきた豊富な経験を持つユーザーは、それ以上の動機付けを必要としません。しかし、GUI ツールのみを使用することに慣れているユーザーは、既に MMC を使用して十分に管理を実行できているのに、コマンド ラインやスクリプトを使用して IIS 7.0 を管理できることに何か特別な意味があるのかと尋ねるかもしれません。この記事の最後に、Windows PowerShell を使用して IIS 7.0 を管理する 6 つの利点を示します。

以下に、Windows PowerShell アーキテクトである Jeffrey Snover 氏と、IIS 7.0 プロダクト ユニット マネージャーである Bill Staples 氏による Web キャストに基づいた、Windows PowerShell の例を示します (この Web キャストは https://channel9.msdn.com/ (英語) にあります)。

たとえば、コンピューターで実行中の IIS 関連のサービスを調べたいとします。これは非常に一般的なタスクです。"GUI アプローチ" でこれを実行するには、MMC を起動して、[サービスとアプリケーション] カテゴリを展開し、次に [サービス] カテゴリを選択します。結果は、図 2 に示すスクリーン ショットのようになります。

Ee175734.An Intro to win fig2(ja-jp,TechNet.10).jpg  

図 2 - MMC を使用したサービス情報の取得

  

Windows PowerShell を使用して Windows サービスを一覧表示することは簡単です。たとえば、Windows PowerShell プロンプトから、次のように get-service コマンドレットを使用します。

                    
PS C:\> get-service

 

これにはあまり説得力がないかもしれません。しかし、"w" で始まるサービスのみを一覧表示し、それらを状態ごとに並べ替えたいとします。これを実行する 1 つの方法は、次のようになります。

                    
PS C:\> get-service -include w* | sort-object -property status

 

このコマンドは次のように解釈します。まず、すべての Windows サービス情報を取得して、次に "W" で始まる名前を持つサービスのみが含まれるようにフィルタリングし、サービスの状態 (実行中、停止中、一時停止中) に基づいてそれらの結果を並べ替えます。結果は、図 3 に示すスクリーン ショットのようになります。

Ee175734.An Intro to win fig3(ja-jp,TechNet.10).jpg  

図 3 - Windows PowerShell を使用したサービス情報の取得

前のセクションで示したように、PowerShell コマンドは省略形で入力することができます。前述のコマンドは、次のように短縮できます。

                    
PS C:\> gsv w* | sort status

 

ここで使用されている gsv は、get-service のエイリアスです。また、-include スイッチはパラメーターの先頭に位置しているという事実を活用しています。sort-object コマンドレットでは、そのエイリアスである sort を使用しています。-property スイッチもパラメーターの先頭に位置しています。次に、World Wide Web 発行サービスを停止したいと仮定します。PowerShell を使用しない場合は、W3SVC サービスを右クリックしてコンテキスト メニューを表示し、[停止] をクリックします。Windows PowerShell を使用する場合は、次のコマンドを実行します。

                    
PS C:\> stop-service -servicename w3svc

 

また、短縮形では次のようになります。

                    
PS C:\> spsv w3svc

 

別の一般的なタスクとして、コンピューターで実行中のプロセスを調べることがあります。この時点では、Windows PowerShell を使用してこれを実行する方法を推測できるでしょう。Windows PowerShell の一貫性のある論理的なコマンドレットの名前付け方式により、コマンドの推測が苛立ちの種ではなく、容易なものとなります。

                    
PS C:\> get-process

 

各プロセスが所有するハンドルの数によって実行中のプロセスを並べ替えて表示するには、次のコマンドを実行します。

                    
PS C:\> get-process | sort-object -property handles

この情報は、GUI ベースの Windows タスク マネージャーを使用しても、同じくらい簡単に取得できます。しかし、次の 3 つの Windows PowerShell コマンドで実行できることについて考えてみてください。

                    
PS C:\> $p = get-process
PS C:\> $result = $p | measure-object -property handles -sum -average -max
PS C:\> $result | out-file '.\ProcessHandleStats.txt'

最初のコマンドの $p = get-process は、ホスト コンピューターで現在実行中のプロセスに関するすべての情報を取得し、その情報を変数 $p に格納します。

2 番目のコマンドの $result = $p | measure-object -property handles -sum -max は、取得したプロセス情報を measure-object コマンドレットに送信し、measure-object では現在実行中のプロセスによって使用されているすべてのハンドルの合計、平均、および最大値を計算し、その情報を変数 $result に格納します。この時点で $result を調べると、次のようになります。

Count    : 54
Average  : 273.148148148148
Sum      : 14750
Maximum  : 1625
Minimum  :
Property : Handles

この例では、54 個のプロセスが実行中であり、合計 14,750 個、各プロセスにつき平均約 273 個のハンドルが使用されています。1 つのプロセスによって使用されているハンドルの最大数は 1625 個です。

3 番目の行、$results | out-file '.\ProcessHandleStats.txt' は、結果をテキスト ファイルに保存します。経験豊かな Windows PowerShell ユーザーであれば、たった今説明した 3 つのコマンドを次のような 1 つのコマンドにまとめることでしょう。

                    
PS C:\> gps | measure-object handles -sum -average -max |
        out-file '.\ProcessHandleStats.txt'

Windows PowerShell アーキテクチャの特徴の 1 つとして、Windows PowerShell がユーザーにとっても、サード パーティ企業にとっても、すべてのレベルにおいて拡張するのが容易であることが挙げられます。Windows PowerShell の拡張性はそれだけで 1 つのトピックとなりますが、ここでは 1 つの例のみを取り上げます。

この記事の最後に示されている Web キャストのデモにおいて、Jeffrey Snover 氏と Bill Staples 氏は、サード パーティ企業によって開発された画期的な Windows PowerShell 視覚化出力コマンドレットを紹介しています。このコマンドレットは out-gauge と呼ばれます。組み込みの out-file コマンドレットとのセマンティクスの類似性に注目してください。out-file のように出力をファイルに送信する代わりに、out-gauge は出力を視覚的に豊かなコントロール セットに送信します。たとえば、この Web キャストで示されているコマンドの 1 つとして、次のコマンドがあります。

                    
PS C:\> get-process |
        measure-object handles -sum |
        out-gauge -value sum -refresh 0:0:1 -float -type 

このコマンドは、画面上にデジタル形式のゲージを生成します。このゲージは、使用中のハンドルの合計数をリアルタイムで表示し、表示を毎秒更新します。この例によって明らかなことは、広範囲にわたる、便利な Windows PowerShell ベースのツールが、もうすぐ使用可能になるということです。

次に、Windows PowerShell を使用した IIS 7.0 Web サイトの展開の例を見てみましょう。以前のバージョンの IIS では構成をメタベースに保存するため、あるコンピューターから別のコンピューターに Web サイトをコピーすることはできません。IIS 7.0 では、Web サイトを展開するには、単にファイルをコピーすれば済みます。次の Windows PowerShell スクリプトについて検討しましょう。

                    
# file: Deploy-Application.ps1

$sourceMachine = "DemoServer1"
$farmList = get-content '.\RestOfFarm.txt'
$filesToCopy = get-content '.\AppManifest.txt'


foreach ($targetMachine in $farmList)
{
   foreach ($file in $filesToCopy)
   {
      $sourcePath = "\\" + (join-path $sourceMachine $file)
      $destPath   = "\\" + (join-path $targetMachine $file)
      write-host -for yellow "$targetMachine : Copying files from
        $sourcePath"

      copy-item $sourcePath $destPath
        -recurse -force
   }
}

 

このスクリプトは複雑ですが、多くの示唆に富みます。このスクリプトをファイル Deploy-Application.ps1 として保存し、Windows PowerShell コマンド ラインから実行すると、次のようになります。

                    
PS C:\> .\Deploy-Application.ps1

 

このコマンドの大意は、ファイル AppManifest.txt に記述されているすべてのファイル (コンピューター DemoServer1 上に存在) を、RestOfFarm.txt に記述されているすべてのコンピューターにコピーすることです。Windows PowerShell の特徴の 1 つに、VBScript や Perl といった他の言語に比べて、正しく記述されたスクリプトが理解しやすいことがあります。このスクリプトは、get-content コマンドレットを使用してファイル RestOfFarm.txt からコンピューター名を読み取り、ファイル AppManifest.txt からファイル名を読み取ります。

foreach ループを使用するのは初めての方もいるかもしれません。外側のループでは、変数 $farmList に格納されているそれぞれのマシン名について繰り返し、それぞれの名前を順番に変数 $targetMachine に格納します。内側のループも同様で、それぞれのファイルを順番に $file に格納します。join-path コマンドレットは、適切に文字列を連結して、完全なソース パスとターゲット パスを生成します。

最後に、copy-item コマンドレットは、コピー操作を実行します。-recurse スイッチはすべてのサブディレクトリのコピーを指示し、-force スイッチは既存のファイルをすべて上書きするように指示します。このスクリプトでは、ソースとターゲットの場所に関するすべての情報がハードコーディングされていることに注意してください。Windows PowerShell には、パラメーターを渡す優れた機能があるため、この例のスクリプトは、コマンド ラインからの情報を受け取るようにパラメーター化できます。ただし、そのトピックについてはこの記事では取り上げません。

IIS 7.0 での Windows PowerShell の使用

ここまでは、すべてのサーバー コンピューターに適用される Windows PowerShell の例を紹介してきました。ここからは、IIS 7.0 に固有の Windows PowerShell コマンドレットをいくつか紹介していきます。

IIS 7.0 には、動的に作成されたコンテンツをキャッシュする強力な機能が追加されています。IIS には、静的なページをキャッシュする機能は以前から備わっていました。サーバーが最近要求されたコンテンツに対して、さらに新しいクライアント要求を受け取ると、次のことが発生します。要求されたコンテンツは、外部記憶域から取得するのではなく、キャッシュ メモリからすぐに引き出され、クライアントに返されます。結果として、パフォーマンスが大幅に向上します。IIS 7.0 ではこの概念が拡張されており、動的に作成されるページのキャッシュも可能になっています。次のプレリリースの IIS 7.0 用 Windows PowerShell コマンドレットを見てみましょう。

                    
PS C:\> add-iiscaching
        -computer $computerlist
        -path Demo
        -location index.php
        -credential $cred
        -extension .php
        -kernelcachepolicy 0
        -itemlocation 0
        -policy 1
        -varybyquerystring "Qwd,Qif,Qiv,Qis"

 

カスタム コマンドレットの作成はこの記事の範囲外ですが、この例は、ユーザーや IIS コミュニティによって作成されるコマンドレットに関する考察を与えます。コマンドレット名は add-iiscaching です。前述したように、Windows PowerShell は拡張可能なアーキテクチャを備えており、それによって IIS 7.0 開発チームは、IIS を直接操作できるカスタム コマンドレットを作成できます。このコマンドの大意は、変数 $computerlist に格納されている名前を持つすべての IIS 7.0 サーバー上の特定の PHP アプリケーションにおいて、クエリ文字列に Qwd、Qif、Qiv、および Qis が含まれるページ要求の動的なキャッシュを有効にすることです。

このように、IIS 7.0 では、簡単な Windows PowerShell コマンドを使用して強力なパフォーマンスの向上を容易に実現できます。これは明確にしておくべき主要な論点ですが、この記事では、この例におけるスイッチ パラメーターの詳細の説明に移ります。

最初の引数である -computer $computerlist は、add-iiscaching コマンドの実行対象となるコンピューターを指定します。たとえば、次のようなコンピューター名が記述された、"MyServers.txt" という名前の単純なテキスト ファイルがあるとします。

demo1server
demo2server
demo3server
demo4server

その場合、次のコマンドによって

                    
PS C:\> $computerlist = get-content '.\MyServers.txt'

 

サーバーの一覧が変数 $computerlist に読み込まれます。

2 番目の引数 -path Demo は、キャッシュを有効にするアプリケーションのルート パスを示します。この例では、パスの値にはスペースが含まれていないため、二重引用符を省略することができます (-path "Demo" のように使用することもできます)。

3 番目の引数 -location index.php は、ターゲット アプリケーションを示します。4 番目の引数 -credential $cred は、変数 $cred 内の認証情報を保持します。後でファイルをリモート コンピューターにコピーするため、これは必要になります。この情報は、次のように組み込みの get-credential コマンドレットによっても取得できます。

                    
PS C:\> $cred = get-credential

 

このコマンドは、ユーザー名とパスワードを指定するための GUI コントロールを起動します。結果は $cred 変数に格納されます。

5 番目の引数 -extension .php は、キャッシュするアプリケーションの種類を指定します。

6 番目の引数 -kernelcachepolicy 0 は、add-iiscaching コマンドレットに、カーネル情報をキャッシュしないよう指示します。

7 番目の引数 -itemlocation 0 は、応答情報をキャッシュする場所を指定します。0 はクライアントまたはサーバーのいずれかに格納することを意味します。

8 番目の引数 -policy 1 は、基となるキャッシュ要素に変更が生じるまでキャッシュを続行することを意味します (指定された時間間隔でキャッシュを実行するのではなく)。

最後の引数 -varybyquerystring "Qwd,Qif,Qiv,Qis" は、キャッシュ対象となる応答の種類を IIS 7.0 に指示します。この場合は、クエリ文字列に Qwd、Qif、Qiv、および Qis が含まれる要求に対する応答が該当します (これらは、この例の PHP アプリケーションで使用される名前と値のペアの特定の名前部分です)。

まとめ

この記事では、最初に Microsoft の新しいシェル環境およびスクリプト言語である Windows PowerShell の簡単な概要を示しました。その際、Windows PowerShell での典型的なファイル操作の例を示し、Windows PowerShell が既存のシェル環境をはるかに上回るものであることを説明しました。

この記事の 2 番目のセクションでは、IIS 7.0 を実行中の一般的な環境で Windows PowerShell を使用する方法をデモで示しました。例として、ホスト コンピューター上の Windows サービスおよびプロセスを調べる方法を紹介しました。また、Windows PowerShell を使用して IIS 7.0 を管理および操作することの利点の一覧を示すと約束していました。

以下に、そのような利点について、Windows PowerShell を早期に採用したユーザーによる 6 つのコメントを紹介します。これには、IIS チームが経験した利点も含まれています。

1. Windows PowerShell コマンドはスクリプトとして保存できるため、無人実行が可能です。この利点は、どのスクリプトベースの技術にも当てはまりますが、Windows PowerShell は他の既存のスクリプト言語に比べてはるかに使いやすくなっています。

2. Windows PowerShell コマンドはスクリプトとして保存および使用できるため、IIS 7.0 の管理作業の自己文書化された記録を作成できます。regedit.exe の GUI を使用してレジストリ キーをどのように変更したか、思い出そうとしたことがどれほどあるでしょうか。

3. GUI ベースの管理インターフェイスと比較すると、Windows PowerShell コマンドは "マジックを取り除き"、実際に起こっていることを確認できるようになります。GUI ベースのツールは、簡易な管理作業に適しています。しかし、GUI ベースのツールを使用していると、次のような考えが生じます。「それがどのようにして機能するのかよくわからないが、これをダブルクリックするといつも問題が解決される。」

4. 他の多くの Microsoft サーバー製品も Windows PowerShell に基づいて開発されることになるため、Windows PowerShell のコマンドとスクリプトを使用して IIS 7.0 を管理するたびに、間接的に他のシステムの操作にも習熟することになります。

5. Windows PowerShell を使用すると、共通の管理パラダイムおよびコミュニケーション手段が生み出されます。Windows PowerShell のコミュニティは急速に増大しています。また、Windows PowerShell コマンドの形式のドキュメントやブログ エントリの方が、"MMC を開いてここをクリックし、次にそこをクリックし、その後それをダブルクリックし…" といったドキュメントよりもはるかに理解するのが容易です。

6. Windows PowerShell は包括的な環境なので、作業の大部分を Windows PowerShell で実行できます。GUI ベースのプログラムから、cmd.exe シェルや別の GUI ベースのプログラムに頻繁に切り替える必要はありません。これは、ソフトウェア開発作業が、個別のコンパイラ、リンカー、デバッガーなどの使用から発展して、Visual Studio のような統合環境の使用に至ったことに似ています。

この記事の 2 番目のセクションでは、IIS 7.0 の機能を活用した Windows PowerShell スクリプトの例を示しました。この例では、単純なファイル コピー操作を使用して、複数のマシン間で Web サーバーを展開しています。

この記事の 3 番目のセクションでは、Windows PowerShell の設計により、IIS コミュニティで、IIS のネイティブの機能に対して直接動作するカスタムの Windows PowerShell コマンドレットの作成が可能になるという点についても説明しました。特に、プレリリース コマンドレットの add-iiscaching について紹介しました。このコマンドレットは、IIS 7.0 の新機能である、動的に作成されたページをキャッシュする機能を有効にするものです。

この記事では、Windows PowerShell と IIS 7.0 の連携について表面をなぞっただけですが、この 2 つを組み合わせることによって、より簡単かつ効率的で、一層快適な IT 管理のエクスペリエンスが提供されることがおわかりいただけたと思います。

Windows PowerShell と IIS 7.0 のリソース

Windows PowerShell のドキュメントや例を参照するには、または Windows PowerShell をダウンロードするには、https://www.microsoft.com/japan/windowsserver2008/technologies/powershell.mspx (英語) を参照してください。

この記事のベースとなった、Windows PowerShell アーキテクトである Jeffrey Snover 氏と IIS 7.0 プロダクト ユニット マネージャーである Bill Staples 氏の Web キャストについては、https://channel9.msdn.com/ (英語) を検索してください。

Windows PowerShell チームによって作成された便利なサンプルについては、https://blogs.msdn.com/PowerShell/(英語) を参照してください。

Windows PowerShell に基づいた視覚化ツールの詳細については、http://www.powergadgets.com (英語) を参照してください。

新しい Microsoft IIS Version 7 の詳細については、https://www.iis.net (英語) を参照してください。

著者について

James McCaffrey 博士は、Volt Information Sciences, Inc. に勤務しており、ワシントン州レドモンドの Microsoft キャンパスで働くソフトウェア エンジニアのための技術トレーニングを管理しています。これまでに、Internet Explorer および MSN サーチを含むいくつかの主要な Microsoft 製品に主任技術者として携わってきました。また、『.NET Test Automation: A Problem-Solution Approach』 (Apress、2006 年) の著者でもあります。