次の方法で共有


Windows PowerShellプロパティプロバイダーの作成

このトピックでは、データストア内のアイテムのプロパティを操作できるプロバイダーの作成方法について説明します。 そのため、この種のプロバイダーはWindows PowerShellプロパティプロバイダーと呼ばれます。 例えば、Windows PowerShellが提供するレジストリプロバイダーは、レジストリキーの価値をレジストリキー項目のプロパティとして扱います。 このタイプのプロバイダーは、.NETクラスの実装に System.Management.Automation.Provider.IPropertyCmdletProvider インターフェースを追加しなければなりません。

Windows PowerShellは、Windows PowerShellプロバイダーを開発するためのテンプレートファイルを提供しています。 TemplateProvider.csファイルはMicrosoft Windows Windows Software Development Kit for Windows Vistaおよび.NET Framework 3.0 Runtime Componentsで利用可能です。 ダウンロード手順については、「 Windows PowerShellのインストール方法」および「Windows PowerShell SDKのダウンロード」をご覧ください。 ダウンロードしたテンプレートは <PowerShell Samples> ディレクトリで利用可能です。 このファイルのコピーを作成し、新しいWindowsのPowerShellプロバイダーを作成するために使うべきで、不要な機能は削除してください。 他のWindows PowerShellプロバイダー実装の詳細については、「 Windows PowerShell Providerの設計」をご覧ください。

注意事項

プロパティプロバイダーのメソッドは、 System.Management.Automation.Provider.CmdletProvider.Writepropertyobject* メソッドを使ってオブジェクトを書き込むべきです。

Windows PowerShell プロバイダーの定義

プロパティプロバイダーは、 System.Management.Automation.Provider.IPropertyCmdletProvider インターフェースをサポートする.NETクラスを作成しなければなりません。 こちらはWindows PowerShellが提供するTemplateProvider.csファイルのデフォルトのクラス宣言です。

基本機能の定義

System.Management.Automation.Provider.IPropertyCmdletProviderインターフェースは、System.Management.Automation.Provider.DriveCmdletProviderクラスを除く任意のプロバイダーベースクラスにアタッチできます。 使っているベースクラスに必要な基本機能を追加してください。 ベースクラスの詳細については、「 Windows PowerShell Providerの設計」をご覧ください。

プロパティの取得

プロパティを取得するためには、プロバイダーはGet-ItemPropertyコマンドレットからの呼び出しをサポートするためにSystem.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*メソッドを実装する必要があります。 このメソッドは指定されたプロバイダー内部パス(完全限定)にあるアイテムのプロパティを取得します。

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*の実装には、以下の条件が適用される可能性があります:

Get-ItemProperty コマンドレットへの動的パラメータの付与

Get-ItemPropertyコマンドレットは実行時に動的に指定される追加パラメータを必要とする場合があります。 これらの動的パラメータを提供するために、Windows PowerShellプロパティプロバイダーは System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* メソッドを実装しなければなりません。 pathパラメータは完全に限定されたプロバイダー内部パスを示し、providerSpecificPickListパラメータはコマンドラインに入力されるプロバイダー固有のプロパティを指定します。 このパラメータは、プロパティがコマンドレットにパイプされている場合、 null か空になることがあります。 この場合、このメソッドはコマンドレットクラスや System.Management.Automation.RuntimeDefinedParameterDictionary オブジェクトに似た解析属性を持つプロパティとフィールドを持つオブジェクトを返します。 Windows PowerShellランタイムは、返されたオブジェクトを使ってパラメータをコマンドレットに追加します。

こちらはWindowsPowerShellが提供する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 オブジェクトのインスタンスも書きます。

こちらはWindowsPowerShellが提供するTemplateProvider.csファイルからの System.Management.Automation.Provider.IPropertyCmdlet.SetProperty* のデフォルト実装です。

Set-ItemProperty を導入する際に覚えておくべきこと

System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty*の実装には、以下の条件が適用される可能性があります:

Set-ItemProperty コマンドレットの動的パラメータの付与

Set-ItemPropertyコマンドレットは実行時に動的に指定される追加パラメータを必要とする場合があります。 これらの動的パラメータを提供するために、Windows PowerShellプロパティプロバイダーは System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* メソッドを実装しなければなりません。 このメソッドは、コマンドレットクラスや System.Management.Automation.RuntimeDefinedParameterDictionary オブジェクトに似た解析属性を持つプロパティやフィールドを持つオブジェクトを返します。 動的パラメータを追加しなければ、 null 値を返すことができます。

こちらはWindowsPowerShellが提供するTemplateProvider.csファイルからの System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* のデフォルト実装です。

クリアリングプロパティ

プロパティをクリアするには、Windows PowerShellプロパティプロバイダーが System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* メソッドを実装し、 Clear-ItemProperty コマンドレットからの呼び出しをサポートする必要があります。 このメソッドは指定されたパスにあるアイテムに対して1つ以上のプロパティを設定します。

こちらはWindowsPowerShellが提供するTemplateProvider.csファイルからの System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* のデフォルト実装です。

ClearPropertyの導入について覚えておくべきこと

System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*の実装には、以下の条件が適用される場合があります:

Clear-ItemProperty コマンドレットへの動的パラメータの付与

Clear-ItemPropertyコマンドレットは実行時に動的に指定される追加パラメータを必要とする場合があります。 これらの動的パラメータを提供するために、Windows PowerShellプロパティプロバイダーは System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* メソッドを実装しなければなりません。 このメソッドは、コマンドレットクラスや System.Management.Automation.RuntimeDefinedParameterDictionary オブジェクトに似た解析属性を持つプロパティやフィールドを持つオブジェクトを返します。 動的パラメータを追加しなければ、 null 値を返すことができます。

こちらはWindowsPowerShellが提供するTemplateProvider.csファイルからの System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* のデフォルト実装です。

Windows PowerShellプロバイダーの構築

コマンドレット、プロバイダー、ホスティングアプリケーションの登録方法」を参照してください。

こちらもご覧ください

Windows PowerShell provider

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

オブジェクトタイプとフォーマットの拡張

コマンドレット、プロバイダー、ホストアプリケーションの登録方法