Diseño de su proveedor de Windows PowerShell
Debe implementar un proveedor de Windows PowerShell si su producto o configuración expone un conjunto de datos almacenados, como una base de datos por la que el usuario querrá navegar o explorar. Además, si su producto proporciona un contenedor, incluso si no es un contenedor multinivel, tiene sentido implementar un proveedor de Windows PowerShell. Por ejemplo, es posible que desee implementar un proveedor de contenedor de Windows PowerShell si el verbo del cmdlet Copiar, Mover, Cambiar nombre, Nuevo o Quitar tiene sentido como una operación en su producto o datos de configuración.
Las rutas de Windows PowerShell identifican a su proveedor
El tiempo de ejecución de Windows PowerShell utiliza rutas de Windows PowerShell para acceder al proveedor de Windows PowerShell adecuado. Cuando un cmdlet especifica una de estas rutas, el tiempo de ejecución sabe qué proveedor usar para acceder al almacén de datos asociado. Estas rutas incluyen rutas calificadas para unidades, rutas calificadas para proveedores, rutas directas para proveedores y rutas internas para proveedores. Cada proveedor de Windows PowerShell debe admitir una o más de estas rutas.
Para obtener más información sobre las rutas de Windows PowerShell, consulte Cómo funciona Windows PowerShell.
Definición de una ruta calificada para Drive
Para permitir que el usuario acceda a los datos ubicados en una unidad física, su proveedor de Windows PowerShell debe admitir una ruta calificada para la unidad. Esta ruta comienza con el nombre de la unidad seguido de dos puntos (:), por ejemplo, miunidad:\abc\bar.
Definición de una ruta calificada por el proveedor
Para permitir que el tiempo de ejecución de Windows PowerShell inicialice y desinicialice el proveedor, su proveedor de Windows PowerShell debe admitir una ruta calificada por el proveedor. Por ejemplo, FileSystem::\\uncshare\abc\bar es la ruta calificada por el proveedor del sistema de archivos proporcionado por Windows PowerShell.
Definición de una ruta directa al proveedor
Para permitir el acceso remoto a su proveedor de Windows PowerShell, debe admitir una ruta directa del proveedor para pasar directamente al proveedor de Windows PowerShell para la ubicación actual. Por ejemplo, el proveedor de registro de Windows PowerShell puede usar \\server\regkeypath como ruta directa del proveedor.
Definición de una ruta interna del proveedor
Para permitir que el cmdlet del proveedor acceda a los datos mediante interfaces de programación de aplicaciones (API) que no sean de Windows PowerShell, su proveedor de Windows PowerShell debe admitir una ruta interna del proveedor. Esta ruta se indica después de "::" en la ruta calificada por el proveedor. Por ejemplo, la ruta interna del proveedor para el sistema de archivos de Windows PowerShell es \\uncshare\abc\bar.
Cambiar datos almacenados
Al invalidar métodos que modifican el almacén de datos subyacente, llame siempre al método System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* con la versión más actualizada del elemento modificado por ese método. La infraestructura del proveedor determina si el objeto del elemento debe pasarse a la canalización, como cuando el usuario especifica el parámetro -PassThru. Si recuperar el elemento más actualizado es una operación costosa (en términos de rendimiento), puede probar la propiedad Context.PassThru para determinar si realmente necesita escribir el elemento resultante.
Elija una clase base para su proveedor
Windows PowerShell proporciona una serie de clases base que puede usar para implementar su propio proveedor de Windows PowerShell. Al diseñar un proveedor, elija la clase base, descrita en esta sección, que mejor se adapte a sus necesidades.
Cada clase base del proveedor de Windows PowerShell pone a disposición un conjunto de cmdlets. Esta sección describe los cmdlets, pero no describe sus parámetros.
Al utilizar el estado de la sesión, el tiempo de ejecución de Windows PowerShell pone varios cmdlets de ubicación a disposición de ciertos proveedores de Windows PowerShell, como Get-Location, Set-Location, Pop- cmdlets Location y Push-Location. Puede utilizar el cmdlet Get-Help para obtener información sobre estos cmdlets de ubicación.
Clase base de cmdletProvider
La clase System.Management.Automation.Provider.Cmdletprovider define un proveedor básico de Windows PowerShell. Esta clase admite la declaración de proveedor y proporciona una serie de propiedades y métodos que están disponibles para todos los proveedores de Windows PowerShell. El cmdlet Get-PSProvider invoca la clase para enumerar todos los proveedores disponibles para una sesión. La implementación de este cmdlet la proporciona el estado de la sesión.
Nota
Los proveedores de Windows PowerShell están disponibles para todos los ámbitos de lenguaje de Windows PowerShell.
Clase base DriveCmdletProvider
La clase System.Management.Automation.Provider.Drivecmdletprovider define un proveedor de unidades de Windows PowerShell que admite operaciones para agregar nuevas unidades, eliminar unidades existentes e inicializar unidades predeterminadas. Por ejemplo, el proveedor de sistema de archivos proporcionado por Windows PowerShell inicializa las unidades de todos los volúmenes que están montados, como discos duros y unidades de dispositivos de CD/DVD.
Esta clase deriva de la clase base System.Management.Automation.Provider.Cmdletprovider. La siguiente tabla enumera los cmdlets expuestos por esta clase. Además de los enumerados, el cmdlet Get-PSDrive (expuesto por el estado de la sesión) es un cmdlet relacionado que se utiliza para recuperar unidades disponibles.
New-PSDriveCrea una nueva unidad para la sesión y transmite información de la unidad.
Remove-PSDriveElimina una unidad de la sesión.
Clase base ItemCmdletProvider
La clase System.Management.Automation.Provider.Itemcmdletprovider define un proveedor de elementos de Windows PowerShell que realiza operaciones en los elementos individuales del almacén de datos y no asume ninguna capacidad de contenedor o navegación. Esta clase deriva de la clase base System.Management.Automation.Provider.Drivecmdletprovider. La siguiente tabla enumera los cmdlets expuestos por esta clase.
Clear-ItemBorra el contenido actual de los elementos en la ubicación especificada y lo reemplaza con el valor "claro" especificado por el proveedor. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Get-ItemRecupera elementos de la ubicación especificada y transmite los objetos resultantes.
Invoke-ItemInvoca la acción predeterminada para el elemento en la ruta especificada.
Set-ItemEstablece un elemento en la ubicación especificada con el valor indicado. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Resolve-PathResuelve los comodines para una ruta de Windows PowerShell y transmite información de ruta.
Test-PathPrueba la ruta especificada y devuelve
truesi existe yfalseen caso contrario. Este cmdlet se implementa para admitir el parámetroIsContainerpara el método System.Management.Automation.Provider.Cmdletprovider.Writeitemobject*.
Clase base ContainerCmdletProvider
La clase System.Management.Automation.Provider.Containercmdletprovider define un proveedor de contenedor de Windows PowerShell que expone un contenedor, para elementos del almacén de datos, al usuario. Tenga en cuenta que un proveedor de contenedores de Windows PowerShell solo se puede utilizar cuando hay un contenedor (no contenedores anidados) con elementos en él. Si hay contenedores anidados, debe implementar un proveedor de navegación de Windows PowerShell.
Esta clase deriva de la clase base System.Management.Automation.Provider.Itemcmdletprovider. La siguiente tabla define los cmdlets implementados por esta clase.
Copy-ItemCopia elementos de una ubicación a otra. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Get-ChilditemRecupera los elementos secundarios en la ubicación especificada y los transmite como objetos.
New-ItemCrea nuevos elementos en la ubicación especificada y transmite el objeto resultante.
Remove-ItemElimina elementos de la ubicación especificada.
Rename-ItemCambia el nombre de un elemento en la ubicación especificada. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.
Clase base NavigationCmdletProvider
La clase System.Management.Automation.Provider.Navigationcmdletprovider define un proveedor de navegación de Windows PowerShell que realiza operaciones para elementos que usan más de un contenedor. Esta clase deriva de la clase base System.Management.Automation.Provider.Containercmdletprovider. La siguiente tabla enumera los cmdlets expuestos por esta clase.
Combine-PathCombina dos rutas en una única ruta, utilizando un delimitador específico del proveedor entre rutas. Este cmdlet transmite cadenas.
Move-ItemMueve elementos a la ubicación especificada. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.
Un cmdlet relacionado es el cmdlet básico Parse-Path proporcionado por Windows PowerShell. Este cmdlet se puede utilizar para analizar una ruta de Windows PowerShell para admitir el parámetro Parent. Transmite la cadena de ruta principal.
Seleccione las interfaces de proveedor que desea admitir
Además de derivar de una de las clases base de Windows PowerShell, su proveedor de Windows PowerShell puede admitir otras funciones derivando de una o más de las siguientes interfaces de proveedor. Esta sección define esas interfaces y los cmdlets admitidos por cada una. No describe los parámetros de los cmdlets compatibles con la interfaz. La información de los parámetros del cmdlet está disponible en línea mediante los cmdlets Get-Command y Get-Help.
IContentCmdletProvider
La interfaz System.Management.Automation.Provider.Icontentcmdletprovider define un proveedor de contenido que realiza operaciones sobre el contenido de un elemento de datos. La siguiente tabla enumera los cmdlets expuestos por esta interfaz.
Add-ContentAgrega las longitudes de valor indicadas al contenido del elemento especificado. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Clear-ContentEstablece el contenido del elemento especificado en el valor "claro". Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Get-ContentRecupera el contenido de los elementos especificados y transmite los objetos resultantes.
Set-ContentReemplaza el contenido existente para los elementos especificados. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.
IPropertyCmdletProvider
La interfaz System.Management.Automation.Provider.Ipropertycmdletprovider define una propiedad del proveedor de Windows PowerShell que realiza operaciones en las propiedades de los elementos del almacén de datos. La siguiente tabla enumera los cmdlets expuestos por esta interfaz.
Nota
El parámetro Path en estos cmdlets indica una ruta a un elemento en lugar de identificar una propiedad.
Clear-ItemPropertyEstablece las propiedades de los elementos especificados en el valor "claro". Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Get-ItemPropertyRecupera propiedades de los elementos especificados y transmite los objetos resultantes.
Set-ItemPropertyEstablece las propiedades de los elementos especificados con los valores indicados. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.
IDynamicPropertyCmdletProvider
La interfaz System.Management.Automation.Provider.Idynamicpropertycmdletprovider, derivada de System.Management.Automation.Provider.Ipropertycmdletprovider, define un proveedor que especifica parámetros dinámicos para sus cmdlets admitidos. Este tipo de proveedor maneja operaciones para las cuales se pueden definir propiedades en tiempo de ejecución, por ejemplo, una operación de nueva propiedad. Estas operaciones no son posibles en elementos que tienen propiedades definidas estáticamente. La siguiente tabla enumera los cmdlets expuestos por esta interfaz.
Copy-ItemPropertyCopia una propiedad del elemento especificado a otro elemento. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.Move-ItemPropertyMueve una propiedad del elemento especificado a otro elemento. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.New-ItemPropertyCrea una propiedad en los elementos especificados y transmite los objetos resultantes.
Remove-ItemPropertyElimina una propiedad para los elementos especificados.
Rename-ItemPropertyCambia el nombre de una propiedad de los elementos especificados. Este cmdlet no pasa un objeto de salida a través de la canalización a menos que se especifique su parámetro
PassThru.
ISecurityDescriptorCmdletProvider
La interfaz System.Management.Automation.Provider.Isecuritydescriptorcmdletprovider agrega funcionalidad de descriptor de seguridad a un proveedor. Esta interfaz permite al usuario obtener y configurar información del descriptor de seguridad para un elemento en el almacén de datos. La siguiente tabla enumera los cmdlets expuestos por esta interfaz.
Get-AclRecupera la información contenida en una lista de control de acceso (ACL), que forma parte de un descriptor de seguridad utilizado para proteger los recursos del sistema operativo, por ejemplo, un archivo o un objeto.
Set-AclEstablece la información para una ACL. Tiene el formato de una instancia de System.Security.Accesscontrol.Objectsecurity en los elementos designados para la ruta especificada. Este cmdlet puede configurar información sobre archivos, claves y subclaves en el registro, o cualquier otro elemento del proveedor, si el proveedor de Windows PowerShell admite la configuración de información de seguridad.
Ver también
Crear proveedores de Windows PowerShell
Cómo funciona Windows PowerShell
SDK de Windows PowerShell