创建 Windows PowerShell 属性提供者

本主题描述如何创建一个提供者,使用户能够作数据存储中项目的属性。 因此,这种类型的提供者被称为Windows PowerShell属性提供者。 例如,Windows PowerShell提供的注册表提供者将注册表键值作为注册表键项的属性来处理。 这种类型的提供者必须在 .NET 类的实现中添加 System.Management.Automation.Provider.IPropertyCmdletProvider 接口。

注释

Windows PowerShell 提供了一个模板文件,你可以用它来开发 Windows PowerShell 提供者。 该TemplateProvider.cs文件可在 Windows Vista 和 .NET Framework 3.0 运行时组件的 Microsoft Windows 软件开发套件中获得。 有关下载说明,请参见 《如何安装Windows PowerShell》和《Windows PowerShell SDK》。 下载的模板可在 <PowerShell Samples> 目录中获取。 你应该复制这个文件,用它来创建一个新的 Windows PowerShell 提供者,去除不需要的功能。 有关其他 Windows PowerShell 提供者实现的更多信息,请参见 “设计你的 Windows PowerShell 提供者”。

注意

你的属性提供者的方法应该通过 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 提供者》。

取回财产

要检索属性,提供者必须实现 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*的实现:

将动态参数附加到 Get-ItemProperty cmdlet

Get-ItemProperty该 cmdlet 可能需要在运行时动态指定额外参数。 为了提供这些动态参数,Windows PowerShell 属性提供者必须实现 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 方法。 参数 path 表示完全限定的提供者-内部路径,而 providerSpecificPickList 参数指定命令行中输入的提供者特定属性。 如果属性被传入 cmdlet,这个参数可能是 null 空的。 在这种情况下,该方法返回一个具有类似 cmdlet 类或 System.Management.Automation.RuntimeDefinedParameterDictionary 对象的属性和字段的对象。 Windows PowerShell 运行时使用返回的对象将参数添加到 cmdlet。

这是 Windows PowerShell 提供的 TemplateProvider.cs 文件中 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 的默认实现。

设置属性

要设置属性,Windows PowerShell 属性提供者必须实现 System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* 方法以支持从 cmdlet 调用 Set-ItemProperty 。 该方法在指定路径处设置一个或多个该项目的属性,并根据需要覆盖所提供的属性。 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*的实现:

为 Set-ItemProperty cmdlet附加动态参数

Set-ItemProperty该 cmdlet 可能需要在运行时动态指定额外参数。 为了提供这些动态参数,Windows PowerShell 属性提供者必须实现 System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* 方法。 该方法返回一个具有属性和字段的对象,解析属性类似于 cmdlet 类或 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 cmdlet 调用。 该方法为位于指定路径的项目设置一个或多个属性。

这是 Windows PowerShell 提供的 TemplateProvider.cs 文件中 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* 的默认实现。

关于实施ClearProperty需要记住的事项

以下条件可能适用于您的 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*的实现:

将动态参数附加到 Clear-ItemProperty cmdlet

Clear-ItemProperty该 cmdlet 可能需要在运行时动态指定额外参数。 为了提供这些动态参数,Windows PowerShell 属性提供者必须实现 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* 方法。 该方法返回一个具有属性和字段的对象,解析属性类似于 cmdlet 类或 System.Management.Automation.RuntimeDefinedParameterDictionary 对象。 如果不添加动态参数,可以返回该 null 值。

这是 Windows PowerShell 提供的 TemplateProvider.cs 文件中 System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* 的默认实现。

构建 Windows PowerShell 提供者

请参阅 如何注册指令、提供者和托管应用程序

另请参阅

Windows PowerShell provider

设计您的Windows PowerShell提供者

扩展对象类型与格式化

如何注册 Cmdlet、提供者和托管应用程序