Windows PowerShell プロパティ プロバイダーを作成する
このトピックでは、ユーザーがデータ ストア内の項目のプロパティを操作できるプロバイダーを作成する方法について説明します。 その結果、この種類のプロバイダーは、プロパティ プロバイダー Windows PowerShell呼ばれます。 たとえば、 によって提供されるレジストリ プロバイダー Windows PowerShellレジストリ キー項目のプロパティとしてレジストリ キーの値を処理します。 この種類のプロバイダーでは 、System.Management.Automation.Provider.Ipropertycmdletprovider インターフェイスを .NET クラスの実装に追加する必要があります。
注意
Windows PowerShellプロバイダーの開発に使用できるテンプレート ファイルがWindows PowerShellされます。 TemplateProvider.cs ファイルは、Microsoft Windows Software Development Kit for Windows Vista および .NET Framework 3.0 Runtime Components で使用できます。 ダウンロード手順については、「インストール方法」および「Windows PowerShell SDK のダウンロード」をWindows PowerShellしてください。 ダウンロードしたテンプレートは、 ディレクトリで使用 <PowerShell Samples> できます。 このファイルのコピーを作成し、そのコピーを使用して新しい Windows PowerShell プロバイダーを作成し、不要な機能を削除する必要があります。 その他のプロバイダー実装のWindows PowerShellについては、「 Designing Your Windows PowerShell Provider 」を参照してください。
注意事項
プロパティ プロバイダーのメソッドでは 、System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject* メソッドを使用してオブジェクトを記述する必要があります。
サービス プロバイダー Windows PowerShell定義する
プロパティ プロバイダーは 、System.Management.Automation.Provider.Ipropertycmdletprovider インターフェイスをサポートする .NET クラスを作成する必要があります。 次に示すのは、テンプレートによって提供される TemplateProvider.cs ファイルからの既定のクラス宣言Windows PowerShell。
基本機能の定義
System.Management.Automation.Provider.Ipropertycmdletproviderインターフェイスは、System.Management.Automation.Provider.Drivecmdletproviderクラスを除き、プロバイダーの基本クラスにアタッチできます。 使用している基本クラスに必要な基本機能を追加します。 基本クラスの詳細については、「 Designing Your Windows PowerShell Provider 」を参照してください。
プロパティの取得
プロパティを取得するには、プロバイダーがコマンドレットからの呼び出しをサポートするために System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* メソッドを実装する必要 Get-ItemProperty があります。 このメソッドは、指定されたプロバイダー内部パス (完全修飾) にある項目のプロパティを取得します。
パラメーター providerSpecificPickList は、取得するプロパティを示します。 このパラメーターが または空 null の場合、メソッドは、すべてのプロパティを取得する必要があります。 さらに 、System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* は、取得したプロパティのプロパティ バッグを表す System.Management.Automation.PSObject オブジェクトのインスタンスを書き込みます。 メソッドは何も返しません。
System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*の実装では、選択リスト内の各要素のプロパティ名のワイルドカード展開がサポートされています。 これを行うには 、System.Management.Automation.Wildcardpattern クラスを使用してワイルドカード パターン マッチングを実行します。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*の既定の実装を次に示します。
GetProperty の実装に関する注意
System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*の実装には、次の条件が適用される場合があります。
プロバイダー クラスを定義するときに、Windows PowerShell プロパティ プロバイダーは、System.Management.Automation.Provider.Providercapabilities列挙体から ExpandWildcards、Filter、Include、または Exclude のプロバイダー機能を宣言する場合があります。 このような場合 、System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* メソッドの実装では、メソッドに渡されるパスが指定された機能の要件を満たしていることを確認する必要があります。 これを行うには、メソッドが適切なプロパティ (System.Management.Automation.Provider.Cmdletprovider.Exclude* や System.Management.Automation.Provider.Cmdletprovider.Include* プロパティなど) にアクセスする必要があります。
既定では、このメソッドのオーバーライドでは 、System.Management.Automation.Provider.Cmdletprovider.Force* プロパティが に設定されていない限り、ユーザーから非表示にされているオブジェクトのリーダーを取得する必要があります
true。 パスがユーザーから非表示の項目を表し 、System.Management.Automation.Provider.Cmdletprovider.Force* が に設定されている場合は、エラーを書き込む必要がありますfalse。
動的パラメーターを Get-ItemProperty コマンドレットにアタッチする
コマンドレット Get-ItemProperty では、実行時に動的に指定される追加のパラメーターが必要になる場合があります。 これらの動的パラメーターを指定するには、Windows PowerShell プロパティ プロバイダーがSystem.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*メソッドを実装する必要があります。 パラメーターは完全修飾プロバイダー内部パスを示し、 パラメーターはコマンド ラインで入力されたプロバイダー固有のプロパティ path providerSpecificPickList を指定します。 プロパティがコマンドレットに null パイプされる場合、このパラメーターは または空になる場合があります。 この場合、このメソッドは、コマンドレット クラスまたは System.Management.Automation.Runtimedefinedparameterdictionary オブジェクトと同様の解析属性を持つプロパティとフィールドを持つオブジェクトを返します。 このWindows PowerShell返されたオブジェクトを使用して、コマンドレットにパラメーターを追加します。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*の既定の実装を次に示します。
プロパティの設定
プロパティを設定するには、Windows PowerShell プロパティ プロバイダーがSystem.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*メソッドを実装して、 コマンドレットからの呼び出しをサポートする必要 Set-ItemProperty があります。 このメソッドは、指定したパスにある項目の 1 つ以上のプロパティを設定し、指定されたプロパティを必要に応じて上書きします。
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* は、更新されたプロパティのプロパティ バッグを表す System.Management.Automation.PSObject オブジェクトのインスタンスも書き込みます。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*の既定の実装を次に示します。
実装に関する注意Set-ItemProperty
System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*の実装には、次の条件が適用される場合があります。
プロバイダー クラスを定義するときに、Windows PowerShell プロパティ プロバイダーは、System.Management.Automation.Provider.Providercapabilities列挙体から ExpandWildcards、Filter、Include、または Exclude のプロバイダー機能を宣言する場合があります。 このような場合 、System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* メソッドの実装では、メソッドに渡されるパスが指定された機能の要件を満たしていることを確認する必要があります。 これを行うには、メソッドが適切なプロパティ (System.Management.Automation.Provider.Cmdletprovider.Exclude* や System.Management.Automation.Provider.Cmdletprovider.Include* プロパティなど) にアクセスする必要があります。
既定では、このメソッドのオーバーライドでは 、System.Management.Automation.Provider.Cmdletprovider.Force* プロパティが に設定されていない限り、ユーザーから非表示にされているオブジェクトのリーダーを取得する必要があります
true。 パスがユーザーから非表示の項目を表し 、System.Management.Automation.Provider.Cmdletprovider.Force* が に設定されている場合は、エラーを書き込む必要がありますfalse。System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*メソッドの実装では、System.Management.Automation.Provider.Cmdletprovider.ShouldProcessを呼び出し、データ ストアに変更を加える前に戻り値を確認する必要があります。 このメソッドは、ファイルの名前変更など、システム状態に変更が行われたときに操作の実行を確認するために使用されます。 System.Management.Automation.Provider.Cmdletprovider.ShouldProcessは、変更するリソースの名前をユーザーに送信し、Windows PowerShell ランタイムを使用して、表示する必要がある操作を決定する際にコマンド ライン設定または基本設定変数を処理します。
System.Management.Automation.Provider.Cmdletprovider.ShouldProcessを呼び出した後、危険な可能性があるシステムの変更が可能な場合は
true、System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*メソッドがSystem.Management.Automation.Provider.Cmdletprovider.ShouldContinueメソッドを呼び出す必要があります。 このメソッドは、操作を継続する必要があるという追加のフィードバックを許可するために、ユーザーに確認メッセージを送信します。
Set-ItemProperty コマンドレットの動的パラメーターのアタッチ
コマンドレット Set-ItemProperty では、実行時に動的に指定される追加のパラメーターが必要になる場合があります。 これらの動的パラメーターを指定するには、Windows PowerShell プロパティ プロバイダーがSystem.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*メソッドを実装する必要があります。 このメソッドは、コマンドレット クラスまたは System.Management.Automation.Runtimedefinedparameterdictionary オブジェクトのような解析属性を持つプロパティとフィールドを持つオブジェクトを返します。 動的 null パラメーターを追加する必要がない場合は、値を返します。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*の既定の実装を次に示します。
プロパティのクリア
プロパティをクリアするには、Windows PowerShell プロパティ プロバイダーがSystem.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*メソッドを実装して、 コマンドレットからの呼び出しをサポートする必要 Clear-ItemProperty があります。 このメソッドは、指定したパスにある項目に対して 1 つ以上のプロパティを設定します。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*の既定の実装を次に示します。
ClearProperty の実装に関する注意
System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*の実装には、次の条件が適用される場合があります。
プロバイダー クラスを定義するときに、Windows PowerShell プロパティ プロバイダーは、System.Management.Automation.Provider.Providercapabilities列挙体から ExpandWildcards、Filter、Include、または Exclude のプロバイダー機能を宣言する場合があります。 このような場合 、System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* メソッドの実装では、メソッドに渡されるパスが指定された機能の要件を満たしていることを確認する必要があります。 これを行うには、メソッドが適切なプロパティ (System.Management.Automation.Provider.Cmdletprovider.Exclude* や System.Management.Automation.Provider.Cmdletprovider.Include* プロパティなど) にアクセスする必要があります。
既定では、このメソッドのオーバーライドでは 、System.Management.Automation.Provider.Cmdletprovider.Force* プロパティが に設定されていない限り、ユーザーから非表示にされているオブジェクトのリーダーを取得する必要があります
true。 パスがユーザーから非表示の項目を表し 、System.Management.Automation.Provider.Cmdletprovider.Force* が に設定されている場合は、エラーを書き込む必要がありますfalse。System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*メソッドを実装する場合は、データ ストアに変更を加える前にSystem.Management.Automation.Provider.Cmdletprovider.ShouldProcessを呼び出し、戻り値を確認する必要があります。 このメソッドは、コンテンツのクリアなど、システム状態に変更が行われる前に操作の実行を確認するために使用されます。 System.Management.Automation.Provider.Cmdletprovider.ShouldProcessは、変更するリソースの名前をユーザーに送信します。Windows PowerShell ランタイムでは、表示する必要があるコマンド ライン設定または基本設定変数が考慮されます。
System.Management.Automation.Provider.Cmdletprovider.ShouldProcessを呼び出した後、危険な可能性があるシステムの変更が可能な場合は
true、System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*メソッドでSystem.Management.Automation.Provider.Cmdletprovider.ShouldContinueメソッドを呼び出す必要があります。 このメソッドは、ユーザーに確認メッセージを送信して、危険な可能性のある操作を継続する必要があるという追加のフィードバックを許可します。
動的パラメーターを Clear-ItemProperty コマンドレットにアタッチする
コマンドレット Clear-ItemProperty では、実行時に動的に指定される追加のパラメーターが必要になる場合があります。 これらの動的パラメーターを指定するには、Windows PowerShell プロパティ プロバイダーがSystem.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*メソッドを実装する必要があります。 このメソッドは、コマンドレット クラスまたは System.Management.Automation.Runtimedefinedparameterdictionary オブジェクトのような解析属性を持つプロパティとフィールドを持つオブジェクトを返します。 動的 null パラメーターを追加する必要がない場合は、値を返します。
Windows PowerShell によって提供される TemplateProvider.cs ファイルのSystem.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*の既定の実装を次に示します。
Windows PowerShell プロバイダーの構築
「 コマンドレット、プロバイダー、およびホスト アプリケーションを登録する方法」を参照してください。
参照
フィードバック
フィードバックの送信と表示