このプログラマーガイドは、システム管理者向けのコマンドライン管理環境を提供したい開発者を対象としています。 Windows PowerShellは、.NETオブジェクトを公開する管理コマンドを簡単に構築できる方法を提供しつつ、Windows PowerShellがほとんどの作業を代わりに行わせます。
従来のコマンド開発では、パラメータ解析器、パラメータバインダー、フィルター、そして各コマンドが公開するすべての機能を書く必要があります。 Windows PowerShellは、コマンドを書きやすくするために以下の機能を提供しています:
独自のパーサと自動バインドの仕組みを備えた強力なWindows PowerShellランタイム(実行エンジン)です。
コマンドラインインタプリタ(CLI)を使ったコマンド結果のフォーマットおよび表示のためのユーティリティ。
Windows PowerShellプロバイダーを通じて高レベルの機能をサポートし、保存データに簡単にアクセスできるようにすること。
低コストで、.NETオブジェクトをリッチなコマンドやコマンド群で表現でき、管理者に完全なコマンドライン体験を提供します。
次のセクションでは、Windows PowerShellの主要な概念と用語を扱います。 開発を始める前に、これらの概念や用語に慣れておくことが大切です。
Windows PowerShellについて
Windows PowerShellは開発で使えるいくつかのコマンドタイプを定義しています。 これらのコマンドには、関数、フィルター、スクリプト、エイリアス、実行ファイル(アプリケーション)が含まれます。 このガイドで主に扱うコマンドタイプは、「cmdlet」と呼ばれるシンプルで小さなコマンドです。 Windows PowerShellはコマンドレットのセットを提供し、環境に合わせたカスタマイズを完全にサポートします。 Windows PowerShellランタイムは、すべてのコマンドタイプをパイプラインを使ってコマンドレットと同様に処理します。
コマンドに加え、Windows PowerShellは特定のコマンドレットセットを提供するカスタマイズ可能なWindows PowerShellプロバイダーもサポートしています。 シェルはWindowsのPowerShellが提供するホストアプリケーション(powershell.exe)内で動作しますが、特定の要件を満たすために開発できるカスタムホストアプリケーションからも同様にアクセス可能です。 詳細については「 Windows PowerShell Works」をご覧ください。
Windows PowerShell Cmdlets
cmdletはWindowsのPowerShell環境で使用される軽量なコマンドです。 Windows PowerShellランタイムは、コマンドラインで提供される自動化スクリプトの文脈の中でこれらのコマンドレットを呼び出し、またWindows PowerShell APIを通じてプログラム的に呼び出します。
cmdletの詳細については、「 Windows PowerShell Cmdletの作成」を参照してください。
Windows PowerShell プロバイダー
管理作業を行う際には、ファイルシステム、Windowsレジストリ、証明書ストアなど、データストアに保存されたデータを確認する必要がある場合があります。 これらの操作を簡単にするために、Windows PowerShellはWindows PowerShellプロバイダーというモジュールを定義しており、Windows レジストリなど特定のデータストアにアクセスすることができます。 各プロバイダーは関連するコマンドレットのセットをサポートし、ユーザーがストア内のデータを対称的に表示できるようにします。
Windows PowerShellは複数のデフォルトのWindows PowerShellプロバイダーを提供しています。 例えば、レジストリプロバイダーはWindowsレジストリのナビゲーションと操作をサポートしています。 レジストリキーはアイテムとして表現され、レジストリ値はプロパティとして扱われます。
ユーザーがアクセスする必要があるデータストアを公開する場合、Windows PowerShell Providerの作成に記載されているように、自分でWindowsのPowerShellプロバイダーを書く必要があるかもしれません。 WindowsPowerShellプロバイダーの詳細については、「 Windows PowerShellの仕組み」をご覧ください。
ホストアプリケーション
Windows PowerShellにはデフォルトのホストアプリケーション powershell.exeが含まれており、これはユーザーとやり取りし、コンソールウィンドウを使ってWindows PowerShellランタイムをホストするコンソールアプリケーションです。
Windows PowerShell向けに自らホストアプリケーションを書く必要はまれですが、カスタマイズは可能です。 独自のアプリケーションが必要な場合の一つは、デフォルトのホストアプリケーションが提供するインターフェースよりも豊かなGUIインターフェースが必要な場合です。 コマンドラインを基にGUIを作る場合はカスタムアプリケーションも必要かもしれません。 詳細については、「 Windows PowerShellホストアプリケーションの作成方法」をご覧ください。
Windows PowerShell ランタイム
Windows PowerShellランタイムはコマンド処理を実装する実行エンジンです。 ホストアプリケーションとWindows PowerShellコマンドおよびプロバイダー間のインターフェースを提供するクラスも含まれます。 Windows PowerShellランタイムは、シェルとコマンドが実行される運用環境である現在のWindows PowerShellセッションのランスペースオブジェクトとして実装されています。 運用の詳細については、 Windows PowerShellの仕組みをご覧ください。
Windows PowerShell言語
WindowsのPowerShell言語は、コマンドを呼び出すためのスクリプト機能やメカニズムを提供します。 スクリプトの完全な情報については、Windows PowerShellに付属するWindows PowerShell言語参照を参照してください。
拡張型システム (ETS)
Windows PowerShellは.NETやXMLオブジェクトなど、さまざまな異なるオブジェクトへのアクセスを提供します。 その結果、すべてのオブジェクトタイプに対して共通の抽象化を示すために、シェルは拡張型システム(ETS)を使用します。 ほとんどのETS機能はユーザーには透過的ですが、スクリプトや.NET開発者は以下の目的で利用します。
特定のオブジェクトのメンバーの一部を閲覧すること。 Windows PowerShellは、いくつかの特定のオブジェクトタイプの「適応済み」ビューを提供します。
既存のオブジェクトにメンバーを追加すること。
シリアル化されたオブジェクトへのアクセス。
カスタマイズされたオブジェクトを書くこと。
ETSを使えば、WindowsPowerShell言語と互換性のある柔軟な新しい「型」を作成できます。 もしあなたが.NET開発者であれば、例えばWindowsのPowerShell言語がスクリプトに適用されるのと同じ意味論を使ってオブジェクトを扱い、オブジェクトが
trueに評価されるかどうかを判定することができます。ETSやWindows PowerShellがオブジェクトをどのように使用しているかの詳細については、「 Windows PowerShell Object Concepts」をご覧ください。
Windows PowerShell プログラミング
Windows PowerShellは.NET Frameworkを用いてコマンド、プロバイダ、その他のプログラムモジュールのコードを定義しています。 Windows PowerShell用のカスタマイズモジュール作成はMicrosoft Visual Studioに限定されませんが、このガイドに掲載されているサンプルはこのツールで動作することが知られています。 クラス継承や属性の使用をサポートする.NET言語なら何でも使えます。 場合によっては、Windows PowerShell APIが汎用型にアクセスできるようにプログラミング言語が必要になることもあります。
プログラマーの参考文献
Windows PowerShell開発の参考として、 Windows PowerShell SDKを参照してください。
Windows PowerShellの使い始め
Windows PowerShellシェルの使い方についての詳細は、「Windows PowerShell with Shiped with Windows PowerShellの入 門」をご覧ください。 コマンドレット使用のための入門書として、クイックリファレンス三分割ドキュメントも提供されています。
このガイドの内容
| トピック | Definition |
|---|---|
| Windows PowerShellホストアプリケーションの作成方法 | このセクションでは、ランスペースを操作するホストアプリケーションの書き方と、独自のカスタムホストを実装するホストアプリケーションの書き方について説明します。 |
| Windows PowerShell Snap-in の作成方法 | このセクションでは、アセンブリ内のすべてのコマンドレットとプロバイダーを登録するためのスナップインの作成方法と、カスタムスナップインの作成方法を説明します。 |
| Windows PowerShell Concepts | このセクションには、開発者の視点からWindows PowerShellを理解するのに役立つ概念的な情報が含まれています。 |