Compartir a través de


Diseño del proveedor de Windows PowerShell

Debe implementar un proveedor de Windows PowerShell si el producto o la configuración expone un conjunto de datos almacenados, como una base de datos que el usuario querrá navegar o examinar. Además, si el producto proporciona un contenedor, incluso si no es un contenedor de varios niveles, tiene sentido implementar un proveedor de Windows PowerShell. Por ejemplo, puede que quiera implementar un proveedor de contenedores de Windows PowerShell si el verbo de cmdlet Copy, Move, Rename, New o Remove tiene sentido como una operación en los datos de configuración o producto.

Rutas de acceso de Windows PowerShell identifican el proveedor

El entorno de ejecución de Windows PowerShell usa rutas de acceso de Windows PowerShell para acceder al proveedor de Windows PowerShell adecuado. Cuando un cmdlet especifica una de estas rutas de acceso, el entorno de ejecución sabe qué proveedor usar para acceder al almacén de datos asociado. Estas rutas de acceso incluyen rutas de acceso calificadas por unidades, rutas de acceso calificadas por el proveedor, rutas de acceso directas del proveedor y rutas de acceso internas del proveedor. Cada proveedor de Windows PowerShell debe admitir una o varias de estas rutas de acceso.

Para obtener más información sobre las rutas de acceso de Windows PowerShell, consulte Funcionamiento de Windows PowerShell.

Definición de una ruta de acceso de Drive-Qualified

Para permitir que el usuario acceda a los datos ubicados en una unidad física, el proveedor de Windows PowerShell debe admitir una ruta de acceso calificada por la unidad. Esta ruta de acceso comienza con el nombre de unidad seguido de dos puntos (:), por ejemplo, mydrive:\abc\bar.

Definición de una ruta de acceso de Provider-Qualified

Para permitir que el entorno de ejecución de Windows PowerShell inicialice e desinicie el proveedor, el proveedor de Windows PowerShell debe admitir una ruta de acceso calificada por el proveedor. Por ejemplo, FileSystem::\\uncshare\abc\bar es la ruta de acceso calificada por el proveedor FileSystem proporcionada por Windows PowerShell.

Definición de una ruta de acceso de Provider-Direct

Para permitir el acceso remoto al proveedor de Windows PowerShell, debe admitir una ruta de acceso directa del proveedor para pasar directamente al proveedor de Windows PowerShell para la ubicación actual. Por ejemplo, el proveedor de Windows PowerShell del Registro puede usar \\server\regkeypath como ruta de acceso directa del proveedor.

Definición de una ruta de acceso de Provider-Internal

Para permitir que el cmdlet del proveedor acceda a los datos mediante interfaces de programación de aplicaciones (API) que no son de Windows PowerShell, el proveedor de Windows PowerShell debe admitir una ruta de acceso interna del proveedor. Esta ruta de acceso se indica después de "::" en la ruta de acceso calificada por el proveedor. Por ejemplo, la ruta de acceso interna del proveedor del proveedor de Windows PowerShell del sistema de archivos es \\uncshare\abc\bar.

Cambio de datos almacenados

Al invalidar métodos que modifican el almacén de datos subyacente, llame siempre a la System.Management.Automation.Provider.CmdletProvider.WriteItemObject* método con la versión más up-to-date del elemento cambiado por ese método. La infraestructura del proveedor determina si el objeto de elemento debe pasarse a la canalización, como cuando el usuario especifica el parámetro -PassThru. Si recuperar el elemento de fecha más up-toes una operación costosa (con un rendimiento), puede probar la propiedad Context.PassThru para determinar si realmente necesita escribir el elemento resultante.

Elegir una clase base para el 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, que se describe en esta sección, que es más adecuada para sus requisitos.

Cada clase base del proveedor de Windows PowerShell pone a disposición un conjunto de cmdlets. En esta sección se describen los cmdlets, pero no se describen sus parámetros.

Con el estado de sesión, el entorno de ejecución de Windows PowerShell hace que varios cmdlets de ubicación estén disponibles para determinados proveedores de Windows PowerShell, como los cmdlets de Get-Location, Set-Location, Pop-Locationy Push-Location. Puede usar el cmdlet Get-Help para obtener información sobre estos cmdlets de ubicación.

CmdletProvider Base (clase)

La clase System.Management.Automation.Provider.CmdletProvider define un proveedor básico de Windows PowerShell. Esta clase admite la declaración del 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. El estado de sesión proporciona la implementación de este cmdlet.

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, quitar unidades existentes e inicializar unidades predeterminadas. Por ejemplo, el proveedor FileSystem proporcionado por Windows PowerShell inicializa unidades para todos los volúmenes montados, como unidades de disco duro y unidades de dispositivo CD/DVD.

Esta clase deriva de la clase base System.Management.Automation.Provider.CmdletProvider. En la tabla siguiente se enumeran los cmdlets expuestos por esta clase. Además de los enumerados, el cmdlet Get-PSDrive (expuesto por estado de sesión) es un cmdlet relacionado que se usa para recuperar unidades disponibles.

Cmdlet Definición
New-PSDrive Crea una nueva unidad para la sesión y transmite la información de la unidad.
Remove-PSDrive Quita 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 funcionalidad de navegación o contenedor. Esta clase deriva de la clase base System.Management.Automation.Provider.DriveCmdletProvider. En la tabla siguiente se enumeran los cmdlets expuestos por esta clase.

Cmdlet Definición
Clear-Item Borra el contenido actual de los elementos en la ubicación especificada y lo reemplaza por el valor "clear" 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-Item Recupera elementos de la ubicación especificada y transmite los objetos resultantes.
Invoke-Item Invoca la acción predeterminada para el elemento en la ruta de acceso especificada.
Set-Item Establece 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-Path Resuelve los caracteres comodín de una ruta de acceso de Windows PowerShell y transmite la información de ruta de acceso.
Test-Path Comprueba la ruta de acceso especificada y devuelve true si existe y false de lo contrario. Este cmdlet se implementa para admitir el parámetro IsContainer para el método System.Management.Automation.Provider.CmdletProvider.WriteItemObject*.

Clase base ContainerCmdletProvider

La clase System.Management.Automation.Provider.ContainerCmdletProvider define un proveedor de contenedores de Windows PowerShell que expone un contenedor, para los elementos del almacén de datos, al usuario. Tenga en cuenta que un proveedor de contenedores de Windows PowerShell solo se puede usar cuando hay un contenedor (sin 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. En la tabla siguiente se definen los cmdlets implementados por esta clase.

Cmdlet Definición
Copy-Item Copia 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-ChildItem Recupera los elementos secundarios en la ubicación especificada y los transmite como objetos .
New-Item Crea nuevos elementos en la ubicación especificada y transmite el objeto resultante.
Remove-Item Quita los elementos de la ubicación especificada.
Rename-Item Cambia 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.

La clase System.Management.Automation.Provider.NavigationCmdletProvider define un proveedor de navegación de Windows PowerShell que realiza operaciones para los elementos que usan más de un contenedor. Esta clase deriva de la clase base System.Management.Automation.Provider.ContainerCmdletProvider. En la tabla siguiente se enumeran los cmdlets expuestos por esta clase.

Cmdlet Definición
Combine-Path Combina dos rutas de acceso en una única ruta de acceso mediante un delimitador específico del proveedor entre rutas de acceso. Este cmdlet transmite cadenas.
Move-Item Mueve los 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 usar para analizar una ruta de acceso de Windows PowerShell para admitir el parámetro Parent. Transmite la cadena de ruta de acceso primaria.

Seleccione Interfaces de proveedor para admitir

Además de derivar de una de las clases base de Windows PowerShell, el proveedor de Windows PowerShell puede admitir otras funciones derivando de una o varias de las siguientes interfaces de proveedor. En esta sección se definen esas interfaces y los cmdlets admitidos por cada uno. No describe los parámetros de los cmdlets compatibles con la interfaz. La información de 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 en el contenido de un elemento de datos. En la tabla siguiente se enumeran los cmdlets expuestos por esta interfaz.

Cmdlet Definición
Add-Content Anexa 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-Content Establece el contenido del elemento especificado en el valor "clear". 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-Content Recupera el contenido de los elementos especificados y transmite los objetos resultantes.
Set-Content Reemplaza 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 un proveedor de Windows PowerShell de propiedad que realiza operaciones en las propiedades de los elementos del almacén de datos. En la tabla siguiente se enumeran los cmdlets expuestos por esta interfaz.

Nota:

El parámetro Path de estos cmdlets indica una ruta de acceso a un elemento en lugar de identificar una propiedad.

Cmdlet Definición
Clear-ItemProperty Establece las propiedades de los elementos especificados en el valor "clear". 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-ItemProperty Recupera las propiedades de los elementos especificados y transmite los objetos resultantes.
Set-ItemProperty Establece 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 de System.Management.Automation.Provider.IDynamicPropertyCmdletProviderProvider, derivada de System.Management.Automation.Provider.IPropertyCmdletProvider, define un proveedor que especifica parámetros dinámicos para sus cmdlets admitidos. Este tipo de proveedor controla las operaciones para las que las propiedades se pueden definir en tiempo de ejecución, por ejemplo, una nueva operación de propiedad. Estas operaciones no son posibles en los elementos que tienen propiedades definidas estáticamente. En la tabla siguiente se enumeran los cmdlets expuestos por esta interfaz.

Cmdlet Definición
Copy-ItemProperty Copia una propiedad del elemento especificado en 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-ItemProperty Mueve 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-ItemProperty Crea una propiedad en los elementos especificados y transmite los objetos resultantes.
Remove-ItemProperty Quita una propiedad para los elementos especificados.
Rename-ItemProperty Cambia 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 establecer información del descriptor de seguridad para un elemento del almacén de datos. En la tabla siguiente se enumeran los cmdlets expuestos por esta interfaz.

Cmdlet Definición
Get-Acl Recupera la información contenida en una lista de control de acceso (ACL), que forma parte de un descriptor de seguridad usado para proteger los recursos del sistema operativo, por ejemplo, un archivo o un objeto.
Set-Acl Establece la información de una ACL. Está en forma de una instancia de System.Security.AccessControl.ObjectSecurity en los elementos designados para la ruta de acceso especificada. Este cmdlet puede establecer información sobre archivos, claves y subclaves en el Registro, o cualquier otro elemento de proveedor, si el proveedor de Windows PowerShell admite la configuración de información de seguridad.

Véase también

creación de proveedores de Windows PowerShell

cómo funciona Windows PowerShell

del SDK de Windows PowerShell