Windows PowerShell プロバイダーを設計する

製品または構成で一連の保存データ (ユーザーが移動または参照するデータベースなど) が公開されている場合は、Windows PowerShell プロバイダーを実装する必要があります。 さらに、製品がコンテナーを提供する場合は、それがマルチレベル のコンテナーではない場合でも、コンテナー プロバイダーを実装Windows PowerShellがあります。 たとえば、コマンドレット動詞 Copy、Move、Rename、New、Remove が製品または構成データに対する操作として理にかなっている場合は、Windows PowerShell コンテナー プロバイダーを実装できます。

Windows PowerShellパスによってプロバイダーが識別される

このWindows PowerShellランタイムは、Windows PowerShellパスを使用して、適切なプロバイダー Windows PowerShellします。 コマンドレットでこれらのパスの 1 つを指定すると、ランタイムは、関連付けられているデータ ストアへのアクセスに使用するプロバイダーを知っています。 これらのパスには、ドライブ修飾パス、プロバイダー修飾パス、プロバイダーダイレクト パス、プロバイダー内部パスが含まれます。 各Windows PowerShellは、これらのパスの 1 つ以上をサポートする必要があります。

パスの詳細については、「Windows PowerShellの動作」をWindows PowerShellしてください。

パスの定義Drive-Qualifiedする

ユーザーが物理ドライブにあるデータにアクセスするには、Windows PowerShellプロバイダーがドライブ修飾パスをサポートする必要があります。 このパスは、ドライブ名の後にコロン (:) mydrive:\abc\bar など) で始まります。

パスの定義Provider-Qualifiedする

ランタイムがプロバイダー Windows PowerShell初期化および初期化解除するには、Windows PowerShell プロバイダーがプロバイダー修飾パスをサポートする必要があります。 たとえば、FileSystem:: \uncshare\abc\bar は、ファイル システムによって提供されるファイルシステム プロバイダーのプロバイダー修飾 \ パスWindows PowerShell。

パスの定義Provider-Directする

Windows PowerShell プロバイダーへのリモート アクセスを許可するには、現在の場所の Windows PowerShell プロバイダーに直接渡すプロバイダーダイレクト パスをサポートする必要があります。 たとえば、レジストリ プロバイダー Windows PowerShellプロバイダーダイレクト パスとして \ \server\regkeypath を使用できます。

パスの定義Provider-Internalする

プロバイダー コマンドレットが Windows PowerShell 以外のアプリケーション プログラミング インターフェイス (API) を使用してデータにアクセスするには、Windows PowerShell プロバイダーがプロバイダー内部パスをサポートする必要があります。 このパスは、プロバイダー修飾パスの "::" の後に示されます。 たとえば、ファイル システム プロバイダーのプロバイダー内部パス \ Windows PowerShell\uncshare\abc\bar です。

格納データの変更

基になるデータ ストアを変更するメソッドをオーバーライドする場合は、常に System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* メソッドを呼び出し、そのメソッドによって変更された項目の最新バージョンを使用します。 プロバイダー インフラストラクチャは、ユーザーが -PassThru パラメーターを指定する場合など、項目オブジェクトをパイプラインに渡す必要があるかどうかを決定します。 最新の項目の取得がコストの高い操作 (パフォーマンスに関する) である場合は、Context.PassThru プロパティをテストして、結果の項目を実際に記述する必要があるかどうかを判断できます。

プロバイダーの基本クラスを選択する

Windows PowerShellには、独自のサービス プロバイダーを実装するために使用できる多数の基本クラスWindows PowerShellがあります。 プロバイダーを設計するときに、要件に最も適した基本クラス (このセクションで説明) を選択します。

プロバイダー Windows PowerShellクラスごとに、一連のコマンドレットを使用できます。 このセクションでは、コマンドレットについて説明しますが、パラメーターについては説明します。

セッション状態を使用すると、Windows PowerShell ランタイムは、 コマンドレットなど、特定の Windows PowerShell プロバイダーで複数の場所コマンドレットを Get-Location Set-Location Pop-Location Push-Location 使用できます。 コマンドレットを使用して Get-Help 、これらの場所コマンドレットに関する情報を取得できます。

CmdletProvider 基本クラス

System.Management.Automation.Provider.Cmdletproviderクラスは、基本的なサービス プロバイダー Windows PowerShellします。 このクラスは、プロバイダー宣言をサポートし、すべてのプロバイダーで使用できるプロパティとメソッドWindows PowerShellします。 クラスは、 コマンドレットによって呼び Get-PSProvider 出され、セッションで使用可能なすべてのプロバイダーを一覧表示します。 このコマンドレットの実装は、セッション状態によって提供されます。

注意

Windows PowerShellプロバイダーは、すべての言語スコープWindows PowerShell使用できます。

DriveCmdletProvider 基本クラス

System.Management.Automation.Provider.Drivecmdletproviderクラスは、新しいドライブの追加、既存のドライブの削除、既定のドライブの初期化の操作をサポートする Windows PowerShell ドライブ プロバイダーを定義します。 たとえば、Windows PowerShell によって提供される FileSystem プロバイダーは、ハード ドライブや CD/DVD デバイス ドライブなど、マウントされているすべてのボリュームのドライブを初期化します。

このクラスは 、System.Management.Automation.Provider.Cmdletprovider 基本クラスから 派生します。 次の表は、このクラスによって公開されるコマンドレットの一覧です。 一覧表示されているコマンドレット (セッション状態によって公開される) は、使用可能なドライブを取得するために使用される関連 Get-PSDrive コマンドレットです。

コマンドレット 定義
New-PSDrive セッションの新しいドライブを作成し、ドライブ情報をストリームします。
Remove-PSDrive セッションからドライブを削除します。

ItemCmdletProvider 基本クラス

System.Management.Automation.Provider.Itemcmdletproviderクラスは、データ ストアの個々の項目に対して操作を実行する Windows PowerShell 項目プロバイダーを定義します。コンテナーまたはナビゲーション機能は想定されません。 このクラスは 、System.Management.Automation.Provider.Drivecmdletprovider 基本クラスから派生します。 次の表は、このクラスによって公開されるコマンドレットの一覧です。

コマンドレット 定義
Clear-Item 指定した場所にある項目の現在の内容をクリアし、プロバイダーによって指定された "clear" 値に置き換える。 このコマンドレットは、パラメーターが指定されていない限り、パイプラインを介して出力 PassThru オブジェクトを渡すのではありません。
Get-Item 指定した場所から項目を取得し、結果のオブジェクトをストリームします。
Invoke-Item 指定したパスにある項目の既定のアクションを呼び出します。
Set-Item 指定した値を使用して、指定した位置にある項目を設定します。 このコマンドレットは、パラメーターが指定されていない限り、パイプラインを介して出力 PassThru オブジェクトを渡すのではありません。
Resolve-Path パスのワイルドカードを解決Windows PowerShellパス情報をストリームします。
Test-Path 指定したパスをテストし、存在する true 場合は を返し、それ以外の false 場合は を返します。 このコマンドレットは IsContainer 、System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* メソッドの パラメーターをサポートするために実装されています。

ContainerCmdletProvider 基本クラス

System.Management.Automation.Provider.Containercmdletproviderクラスは、データ ストア項目のコンテナーをユーザーに公開する Windows PowerShell コンテナー プロバイダーを定義します。 コンテナー プロバイダーを使用Windows PowerShellコンテナー プロバイダーは、項目を含むコンテナーが 1 つ (入れ子になったコンテナーがない) 場合にのみ使用できます。 入れ子になったコンテナーがある場合は、ナビゲーション プロバイダー のWindows PowerShellする必要があります。

このクラスは 、System.Management.Automation.Provider.Itemcmdletprovider 基本クラスから 派生します。 次の表では、このクラスによって実装されるコマンドレットを定義します。

コマンドレット 定義
Copy-Item ある場所から別の場所に項目をコピーします。 このコマンドレットは、パラメーターが指定されていない限り、パイプラインを介して出力 PassThru オブジェクトを渡すのではありません。
Get-Childitem 指定した位置にある子項目を取得し、オブジェクトとしてストリームします。
New-Item 指定した場所に新しい項目を作成し、結果の オブジェクトをストリームします。
Remove-Item 指定した場所から項目を削除します。
Rename-Item 指定した場所にある項目の名前を変更します。 このコマンドレットは、パラメーターが指定されていない限り、パイプラインを介して出力 PassThru オブジェクトを渡すのではありません。

System.Management.Automation.Provider.Navigationcmdletproviderクラスは、複数のコンテナーを使用する項目に対して操作を実行する Windows PowerShell ナビゲーション プロバイダーを定義します。 このクラスは 、System.Management.Automation.Provider.Containercmdletprovider 基本クラスから派生します。 次の表は、このクラスによって公開されるコマンドレットの一覧です。

コマンドレット 定義
Combine-Path パス間のプロバイダー固有の区切り記号を使用して、2 つのパスを 1 つのパスに結合します。 このコマンドレットは、文字列をストリームします。
Move-Item 指定した場所に項目を移動します。 このコマンドレットは、パラメーターが指定されていない限り、パイプラインを介して出力 PassThru オブジェクトを渡すのではありません。

関連するコマンドレットは、Parse-Pathによって提供される基本的なコマンドレットWindows PowerShell。 このコマンドレットを使用すると、パラメーターをサポートWindows PowerShellパスを解析 Parent できます。 親パス文字列をストリームします。

サポートするプロバイダー インターフェイスの選択

Windows PowerShell プロバイダーは、Windows PowerShell 基本クラスの 1 つから派生するだけでなく、次の 1 つ以上のプロバイダー インターフェイスから派生することで、他の機能をサポートできます。 このセクションでは、これらのインターフェイスと、それぞれでサポートされるコマンドレットを定義します。 インターフェイスでサポートされるコマンドレットのパラメーターについては説明されていません。 コマンドレットのパラメーター情報は、コマンド Get-Command レットとコマンドレットを使用してオンラインで入手でき Get-Help ます。

IContentCmdletProvider

Icontentcmdletproviderインターフェイスは、データ項目のコンテンツに対して操作を実行するコンテンツプロバイダーを定義します。 次の表に、このインターフェイスによって公開されるコマンドレットの一覧を示します。

コマンドレット 定義
Add-Content 指定された値の長さを、指定した項目の内容に追加します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。
Clear-Content 指定した項目の内容を "クリア" 値に設定します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。
Get-Content 指定した項目の内容を取得し、結果のオブジェクトをストリームします。
Set-Content 指定した項目の既存の内容を置き換えます。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。

IPropertyCmdletProvider

Ipropertycmdletproviderインターフェイスは、データストア内の項目のプロパティに対して操作を実行するプロパティ Windows PowerShell プロバイダーを定義します。 次の表に、このインターフェイスによって公開されるコマンドレットの一覧を示します。

注意

Pathこれらのコマンドレットのパラメーターは、プロパティを識別するのではなく、項目へのパスを示します。

コマンドレット 定義
Clear-ItemProperty 指定された項目のプロパティを "clear" 値に設定します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。
Get-ItemProperty 指定した項目からプロパティを取得し、結果のオブジェクトをストリームします。
Set-ItemProperty 指定した値を使用して、指定した項目のプロパティを設定します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。

IDynamicPropertyCmdletProvider

Idynamicpropertycmdletproviderインターフェイスは、 Ipropertycmdletproviderから派生した、サポートされているコマンドレットの動的パラメーターを指定するプロバイダーを定義しています。 この型のプロバイダーは、実行時にプロパティを定義できる操作 (たとえば、新しいプロパティ操作) を処理します。 静的に定義されたプロパティを持つアイテムでは、このような操作は実行できません。 次の表に、このインターフェイスによって公開されるコマンドレットの一覧を示します。

コマンドレット 定義
Copy-ItemProperty 指定した項目から別の項目にプロパティをコピーします。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。
Move-ItemProperty 指定した項目から別の項目にプロパティを移動します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。
New-ItemProperty 指定した項目に対してプロパティを作成し、結果のオブジェクトをストリームします。
Remove-ItemProperty 指定した項目のプロパティを削除します。
Rename-ItemProperty 指定した項目のプロパティの名前を変更します。 このコマンドレットは、 PassThru パラメーターが指定されていない限り、パイプラインを介して出力オブジェクトを渡しません。

Isecurity記述子の提供プロバイダー

System.servicemodel プロバイダー インターフェイスは、セキュリティ記述子の機能をプロバイダーに追加しています。 このインターフェイスを使用すると、ユーザーはデータストア内の項目のセキュリティ記述子情報を取得して設定できます。 次の表に、このインターフェイスによって公開されるコマンドレットの一覧を示します。

コマンドレット 定義
Get-Acl ファイルやオブジェクトなど、オペレーティングシステムのリソースを保護するために使用されるセキュリティ記述子の一部であるアクセス制御リスト (ACL) に含まれる情報を取得します。
Set-Acl ACL の情報を設定します。 これは、指定されたパスに対して指定された項目の accesscontrol-namespace のインスタンスの形式です。 このコマンドレットでは、Windows PowerShell プロバイダーがセキュリティ情報の設定をサポートしている場合に、レジストリ内のファイル、キー、サブキーに関する情報、またはその他のプロバイダー項目に関する情報を設定できます。

参照

Windows PowerShell プロバイダーの作成

Windows PowerShell のしくみ

Windows PowerShell SDK