Crear un proveedor de propiedades de Windows PowerShell
Este tema describe cómo crear un proveedor que permita al usuario manipular las propiedades de los elementos en un almacén de datos. Como consecuencia, este tipo de proveedor se denomina proveedor de propiedades de Windows PowerShell. Por ejemplo, el proveedor de registro proporcionado por Windows PowerShell maneja los valores de clave de registro como propiedades del elemento de clave de registro. Este tipo de proveedor debe agregar la interfaz System.Management.Automation.Provider.Ipropertycmdletprovider a la implementación de la clase .NET.
Nota
Windows PowerShell proporciona un archivo de plantilla que puede utilizar para desarrollar un proveedor de Windows PowerShell. El archivo TemplateProvider.cs está disponible en el kit de desarrollo de software de Microsoft Windows para Windows Vista y .NET Framework 3.0 Runtime Components. Para obtener instrucciones de descarga, consulte Cómo instalar Windows PowerShell y descargar el SDK de Windows PowerShell. La plantilla descargada está disponible en el directorio
Precaución
Los métodos de su proveedor de propiedades deben escribir cualquier objeto utilizando el método System.Management.Automation.Provider.Cmdletprovider.Writepropertyobject*.
Definición del proveedor de Windows PowerShell
Un proveedor de propiedades debe crear una clase .NET que admita la interfaz System.Management.Automation.Provider.Ipropertycmdletprovider. Aquí está la declaración de clase predeterminada del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Definición de la funcionalidad básica
La interfaz System.Management.Automation.Provider.Ipropertycmdletprovider se puede adjuntar a cualquiera de las clases base del proveedor, con la excepción de la clase System.Management.Automation.Provider.Drivecmdletprovider. Agregue la funcionalidad básica que requiere la clase base que está utilizando. Para obtener más información sobre las clases base, consulte Diseño de su proveedor de Windows PowerShell.
Recuperar propiedades
Para recuperar propiedades, el proveedor debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* para admitir llamadas desde el cmdlet Get-ItemProperty. Este método recupera las propiedades del elemento ubicado en la ruta interna del proveedor especificada (completamente calificada).
El parámetro providerSpecificPickList indica qué propiedades recuperar. Si este parámetro es null o está vacío, el método debería recuperar todas las propiedades. Además, System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* escribe una instancia de un objeto System.Management.Automation.PSObject que representa un paquete de propiedades de las propiedades recuperadas. El método no debería devolver nada.
Se recomienda que la implementación de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* admita la expansión con comodines de los nombres de propiedades para cada elemento de la lista de selección. Para hacer esto, use la clase System.Management.Automation.Wildcardpattern para realizar la coincidencia del patrón comodín.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Cosas para recordar sobre la implementación de GetProperty
Las siguientes condiciones pueden aplicarse a su implementación de System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty*:
Al definir la clase de proveedor, un proveedor de propiedades de Windows PowerShell puede declarar capacidades de proveedor de ExpandWildcards, Filter, Include o Exclude, de la enumeración System.Management.Automation.Provider.Providercapabilities. En estos casos, la implementación del método System.Management.Automation.Provider.Ipropertycmdletprovider.Getproperty* debe garantizar que la ruta pasada al método cumpla con los requisitos de las capacidades especificadas. Para ello, el método debe acceder a la propiedad adecuada, por ejemplo, las propiedades System.Management.Automation.Provider.Cmdletprovider.Exclude* y System.Management.Automation.Provider.Cmdletprovider.Include*.
De forma predeterminada, las anulaciones de este método no deberían recuperar un lector de objetos que están ocultos para el usuario a menos que la propiedad System.Management.Automation.Provider.Cmdletprovider.Force* esté establecida en
true. Se debe escribir un error si la ruta representa un elemento que está oculto para el usuario y System.Management.Automation.Provider.Cmdletprovider.Force* está establecido enfalse.
Adjuntar parámetros dinámicos al cmdlet Get-ItemProperty
El cmdlet Get-ItemProperty puede requerir parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de propiedades de Windows PowerShell debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*. El parámetro path indica una ruta interna del proveedor totalmente calificada, mientras que el parámetro providerSpecificPickList especifica las propiedades específicas del proveedor ingresadas en la línea de comando. Este parámetro puede ser null o estar vacío si las propiedades se canalizan al cmdlet. En este caso, este método devuelve un objeto que tiene propiedades y campos con atributos de análisis similares a una clase de cmdlet o un objeto System.Management.Automation.Runtimedefinedparameterdictionary. El tiempo de ejecución de Windows PowerShell usa el objeto devuelto para agregar los parámetros al cmdlet.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Propiedades de configuración
Para establecer propiedades, el proveedor de propiedades de Windows PowerShell debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* para admitir llamadas desde el cmdlet Set-ItemProperty. Este método establece una o más propiedades del elemento en la ruta especificada y sobrescribe las propiedades proporcionadas según sea necesario. System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* también escribe una instancia de un objeto System.Management.Automation.PSObject que representa un paquete de propiedades de las propiedades actualizadas.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Cosas para recordar sobre la implementación de Set-ItemProperty
Las siguientes condiciones pueden aplicarse a una implementación de System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty*:
Al definir la clase de proveedor, un proveedor de propiedades de Windows PowerShell puede declarar capacidades de proveedor de ExpandWildcards, Filter, Include o Exclude de la enumeración System.Management.Automation.Provider.Providercapabilities. En estos casos, la implementación del método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* debe garantizar que la ruta pasada al método cumpla con los requisitos de las capacidades especificadas. Para ello, el método debe acceder a la propiedad adecuada, por ejemplo, las propiedades System.Management.Automation.Provider.Cmdletprovider.Exclude* y System.Management.Automation.Provider.Cmdletprovider.Include*.
De forma predeterminada, las anulaciones de este método no deberían recuperar un lector de objetos que están ocultos para el usuario a menos que la propiedad System.Management.Automation.Provider.Cmdletprovider.Force* esté establecida en
true. Se debe escribir un error si la ruta representa un elemento que está oculto para el usuario y System.Management.Automation.Provider.Cmdletprovider.Force* está establecido enfalse.La implementación del método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* debe llamar a System.Management.Automation.Provider.Cmdletprovider.ShouldProcess y verificar su valor de retorno antes de realizar cambios en el almacén de datos. Este método se utiliza para confirmar la ejecución de una operación cuando se realiza un cambio en el estado del sistema, por ejemplo, cambiar el nombre de los archivos. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess envía el nombre del recurso que se va a cambiar al usuario, con el tiempo de ejecución de Windows PowerShell y maneja cualquier configuración de línea de comandos o variables de preferencia para determinar qué se debe mostrar.
Después de que la llamada a System.Management.Automation.Provider.Cmdletprovider.ShouldProcess devuelva
true, si se pueden realizar modificaciones potencialmente peligrosas en el sistema, el método System.Management.Automation.Provider.Ipropertycmdletprovider.Setproperty* debe llamar el método System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Este método envía un mensaje de confirmación al usuario para permitir comentarios adicionales que indiquen que la operación debe continuar.
Adjuntar parámetros dinámicos para el cmdlet Set-ItemProperty
El cmdlet Set-ItemProperty puede requerir parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de propiedades de Windows PowerShell debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*. Este método devuelve un objeto que tiene propiedades y campos con atributos de análisis similares a una clase de cmdlet o un objeto System.Management.Automation.Runtimedefinedparameterdictionary. El valor null se puede devolver si no se van a agregar parámetros dinámicos.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Borrar propiedades
Para borrar propiedades, el proveedor de propiedades de Windows PowerShell debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* para admitir llamadas desde el cmdlet Clear-ItemProperty. Este método establece una o más propiedades para el elemento ubicado en la ruta especificada.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Lo que hay que recordar sobre la implementación de ClearProperty
Las siguientes condiciones pueden aplicarse a su implementación de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty*:
Al definir la clase de proveedor, un proveedor de propiedades de Windows PowerShell puede declarar capacidades de proveedor de ExpandWildcards, Filter, Include o Exclude de la enumeración System.Management.Automation.Provider.Providercapabilities. En estos casos, la implementación del método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* debe garantizar que la ruta pasada al método cumpla con los requisitos de las capacidades especificadas. Para ello, el método debe acceder a la propiedad adecuada, por ejemplo, las propiedades System.Management.Automation.Provider.Cmdletprovider.Exclude* y System.Management.Automation.Provider.Cmdletprovider.Include*.
De forma predeterminada, las anulaciones de este método no deberían recuperar un lector de objetos que están ocultos para el usuario a menos que la propiedad System.Management.Automation.Provider.Cmdletprovider.Force* esté establecida en
true. Se debe escribir un error si la ruta representa un elemento que está oculto para el usuario y System.Management.Automation.Provider.Cmdletprovider.Force* está establecido enfalse.La implementación del método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* debe llamar a System.Management.Automation.Provider.Cmdletprovider.ShouldProcess y verificar su valor de retorno antes de realizar cambios en el almacén de datos. Este método se utiliza para confirmar la ejecución de una operación antes de realizar un cambio en el estado del sistema, como borrar contenido. System.Management.Automation.Provider.Cmdletprovider.ShouldProcess envía el nombre del recurso que se va a cambiar al usuario, y el tiempo de ejecución de Windows PowerShell tiene en cuenta cualquier configuración de línea de comando o variable de preferencia para determinar qué se debe mostrar.
Después de que la llamada a System.Management.Automation.Provider.Cmdletprovider.ShouldProcess devuelva
true, si se pueden realizar modificaciones potencialmente peligrosas en el sistema, el método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* debe llamar el método System.Management.Automation.Provider.Cmdletprovider.ShouldContinue. Este método envía un mensaje de confirmación al usuario para permitir comentarios adicionales que indiquen que se debe continuar con la operación potencialmente peligrosa.
Adjuntar parámetros dinámicos al cmdlet Clear-ItemProperty
El cmdlet Clear-ItemProperty puede requerir parámetros adicionales que se especifican dinámicamente en tiempo de ejecución. Para proporcionar estos parámetros dinámicos, el proveedor de propiedades de Windows PowerShell debe implementar el método System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*. Este método devuelve un objeto que tiene propiedades y campos con atributos de análisis similares a una clase de cmdlet o un objeto System.Management.Automation.Runtimedefinedparameterdictionary. El valor null se puede devolver si no se van a agregar parámetros dinámicos.
Esta es la implementación predeterminada de System.Management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Construyendo el proveedor de Windows PowerShell
Consulte Cómo registrar cmdlets, proveedores y aplicaciones host.
Ver también
Proveedor de Windows PowerShell
Diseñe su proveedor de Windows PowerShell
Ampliación de tipos de objetos y formato
Cómo registrar cmdlets, proveedores y aplicaciones host