Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo crear un proveedor que permita al usuario manipular las propiedades de los elementos de un almacén de datos. Como consecuencia, este tipo de proveedor se conoce como proveedor de propiedades de Windows PowerShell. Por ejemplo, el proveedor del Registro proporcionado por Windows PowerShell controla los valores de clave del Registro como propiedades del elemento de clave del 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 usar 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 componentes en tiempo de ejecución de .NET Framework 3.0. 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>ejemplos de PowerShell de<. Debe realizar una copia de este archivo y usar la copia para crear un nuevo proveedor de Windows PowerShell, quitando cualquier funcionalidad que no necesite. Para obtener más información sobre otras implementaciones del proveedor de Windows PowerShell, consulte Diseño del proveedor de Windows PowerShell.
Precaución
Los métodos del proveedor de propiedades deben escribir cualquier objeto mediante 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. Esta es la declaración de clase predeterminada del archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Definición de la funcionalidad base
La interfaz System.Management.Automation.Provider.IPropertyCmdletProvider se puede adjuntar a cualquiera de las clases base del proveedor, a excepción de la clase System.Management.Automation.Provider.DriveCmdletProvider. Agregue la funcionalidad base que requiere la clase base que está usando. Para obtener más información sobre las clases base, vea Diseño del proveedor de Windows PowerShell.
Recuperación de 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 de acceso interna del proveedor especificada (completa).
El parámetro providerSpecificPickList
indica qué propiedades se van a recuperar. Si este parámetro es null
o está vacío, el método debe 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 contenedor de propiedades de las propiedades recuperadas. El método no debe devolver nada.
Se recomienda que la implementación de System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* admita la expansión comodín de nombres de propiedad para cada elemento de la lista de selección. Para ello, use la clase System.Management.Automation.WildcardPattern para realizar la coincidencia de patrones comodín.
Esta es la implementación predeterminada de System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* desde el archivo de TemplateProvider.cs proporcionado por Windows PowerShell.
Cosas que recordar sobre la implementación de GetProperty
Las condiciones siguientes pueden aplicarse a la implementación de System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty*:
Al definir la clase de proveedor, un proveedor de propiedades de Windows PowerShell puede declarar funcionalidades de proveedor de ExpandWildcards, Filter, Include o Exclude, de la enumeración System.Management.Automation.Provider.ProviderCap abilities. En estos casos, la implementación del método System.Management.Automation.Provider.IPropertyCmdletProvider.GetProperty* debe asegurarse de que la ruta de acceso pasada al método cumple los requisitos de las funcionalidades especificadas. Para ello, el método debe tener acceso 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 invalidaciones de este método no deben recuperar un lector para los objetos ocultos del usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force* esté establecida en
true
. Se debe escribir un error si la ruta de acceso representa un elemento oculto del usuario y System.Management.Automation.Provider.CmdletProvider.Force* está establecido enfalse
.
Asociación de parámetros dinámicos al cmdlet de 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 de acceso interna de proveedor completa, mientras que el parámetro providerSpecificPickList
especifica las propiedades específicas del proveedor especificadas en la línea de comandos. 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 entorno 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.
Establecer propiedades
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 varias propiedades del elemento en la ruta de acceso 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.PS Object que representa un contenedor de propiedades de las propiedades actualizadas.
Esta es la implementación predeterminada de System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* desde el archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Cosas que recordar sobre la implementación de Set-ItemProperty
Las condiciones siguientes 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 funcionalidades de proveedor de ExpandWildcards, Filter, Include o Exclude, de la enumeración System.Management.Automation.Provider.ProviderCap abilities. En estos casos, la implementación del método System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* debe asegurarse de que la ruta de acceso pasada al método cumple los requisitos de las funcionalidades especificadas. Para ello, el método debe tener acceso 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 invalidaciones de este método no deben recuperar un lector para los objetos ocultos del usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force* esté establecida en
true
. Se debe escribir un error si la ruta de acceso representa un elemento oculto del 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 comprobar su valor devuelto antes de realizar cambios en el almacén de datos. Este método se usa 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 entorno de ejecución de Windows PowerShell y controlando cualquier configuración de línea de comandos o variables de preferencia para determinar qué se debe mostrar.
Después de la llamada a System.Management.Automation.Provider.CmdletProvider.ShouldProcess devuelve
true
, si se pueden realizar modificaciones del sistema potencialmente peligrosas, el método System.Management.Automation.Provider.IPropertyCmdletProvider.SetProperty* debe llamar al método System.Management.Automation.Provider.CmdletProvider.ShouldContinue. Este método envía un mensaje de confirmación al usuario para permitir comentarios adicionales para indicar que la operación debe continuar.
Asociación de 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 va a agregar ningún parámetro dinámico.
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 las 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 varias propiedades para el elemento ubicado en la ruta de acceso especificada.
Esta es la implementación predeterminada de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* desde el archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Lo que hay que recordar sobre la implementación de ClearProperty
Las condiciones siguientes pueden aplicarse a la implementación de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty*:
Al definir la clase de proveedor, un proveedor de propiedades de Windows PowerShell puede declarar funcionalidades de proveedor de ExpandWildcards, Filter, Include o Exclude, de la enumeración System.Management.Automation.Provider.ProviderCap abilities. En estos casos, la implementación del método System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* debe asegurarse de que la ruta de acceso pasada al método cumple los requisitos de las funcionalidades especificadas. Para ello, el método debe tener acceso 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 invalidaciones de este método no deben recuperar un lector para los objetos ocultos del usuario a menos que la propiedad System.Management.Automation.Provider.CmdletProvider.Force* esté establecida en
true
. Se debe escribir un error si la ruta de acceso representa un elemento oculto del 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 comprobar su valor devuelto antes de realizar cambios en el almacén de datos. Este método se usa 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, con el tiempo de ejecución de Windows PowerShell teniendo en cuenta cualquier configuración de línea de comandos o variables de preferencia para determinar qué se debe mostrar.
Después de llamar a System.Management.Automation.Provider.CmdletProvider.ShouldProcess devuelve
true
, si se pueden realizar modificaciones del sistema potencialmente peligrosas, el método System.Management.Automation.Provider.IPropertyCmdletProvider.ClearProperty* debe llamar al método System.Management.Automation.Provider.CmdletProvider.ShouldContinue. Este método envía un mensaje de confirmación al usuario para permitir comentarios adicionales para indicar que se debe continuar la operación potencialmente peligrosa.
Asociación de parámetros dinámicos al cmdlet de 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 va a agregar ningún parámetro dinámico.
Esta es la implementación predeterminada de System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* desde el archivo TemplateProvider.cs proporcionado por Windows PowerShell.
Compilación del proveedor de Windows PowerShell
Consulte Registro de cmdlets, proveedores y aplicaciones host.
Véase también
del proveedor de Windows PowerShell de
diseñar el proveedor de Windows PowerShell