Compartir a través de


Introducción al proveedor de Windows PowerShell

Un proveedor de Windows PowerShell permite exponer cualquier almacén de datos como un sistema de archivos como si fuera una unidad montada. Por ejemplo, el proveedor del Registro integrado le permite navegar por el registro como lo haría con la unidad c del equipo. Un proveedor también puede invalidar los cmdlets de Item (por ejemplo, Get-Item, Set-Item, etc.), de modo que los datos del almacén de datos se puedan tratar como archivos y directorios se tratan al navegar por un sistema de archivos. Para obtener más información sobre los proveedores y unidades, y los proveedores integrados en Windows PowerShell, consulte about_Providers.

Proveedores y unidades

Un proveedor define la lógica que se usa para acceder, navegar y editar un almacén de datos, mientras que una unidad especifica un punto de entrada específico para un almacén de datos (o una parte de un almacén de datos) que es del tipo definido por el proveedor. Por ejemplo, el proveedor del Registro permite acceder a subárboles y claves en un registro, y las unidades HKLM y HKCU especifican los subárboles correspondientes dentro del Registro. Las unidades HKLM y HKCU usan el proveedor del Registro.

Al escribir un proveedor, puede especificar unidades de disco predeterminadas que se crean automáticamente cuando el proveedor está disponible. También se define un método para crear nuevas unidades que usan ese proveedor.

Tipo de proveedores

Hay varios tipos de proveedores, cada uno de los cuales proporciona un nivel de funcionalidad diferente. Un proveedor se implementa como una clase que deriva de uno de los descendientes de la clase System.Management.Automation.SessionStateCategoryCmdletProvider. Para obtener información sobre los distintos tipos de proveedores, consulte Tipos de proveedor.

Cmdlets de proveedor

Los proveedores pueden implementar métodos que corresponden a cmdlets, creando comportamientos personalizados para esos cmdlets cuando se usan en una unidad para ese proveedor. Dependiendo del tipo de proveedor, hay disponibles diferentes conjuntos de cmdlets. Para obtener una lista completa de los cmdlets disponibles para la personalización en proveedores, consulte Cmdlets de proveedor.

Rutas de acceso del proveedor

Los usuarios navegan por unidades de proveedor como sistemas de archivos. Por este motivo, esperan que la sintaxis de las rutas de acceso se correspondan con las rutas de acceso usadas en la navegación del sistema de archivos. Cuando un usuario ejecuta un cmdlet de proveedor, especifica una ruta de acceso al elemento al que se va a acceder. La ruta de acceso especificada se puede interpretar de varias maneras. Un proveedor debe admitir uno o varios de los siguientes tipos de ruta de acceso.

Rutas de acceso aptas para unidades

Una ruta de acceso calificada por unidad es una combinación del nombre del elemento, el contenedor y los subcontenedores en los que se encuentra el elemento y la unidad de Windows PowerShell a través de la que se accede al elemento. (El proveedor define las unidades que se usan para acceder al almacén de datos. Esta ruta de acceso comienza con el nombre de la unidad seguido de dos puntos (:). Por ejemplo: Get-ChildItem C:

Rutas de acceso calificadas por el proveedor

Para permitir que el motor de Windows PowerShell inicialice y desinicie el proveedor, el proveedor debe admitir una ruta de acceso calificada por el proveedor. Por ejemplo, el usuario puede inicializar y anular la inicialización del proveedor FileSystem porque define la siguiente ruta de acceso calificada por el proveedor: FileSystem::\\uncshare\abc\bar.

Rutas de acceso directas del proveedor

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.

Rutas de acceso internas del proveedor

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 para el proveedor de Windows PowerShell del sistema de archivos es \\uncshare\abc\bar.

Invalidación de parámetros de cmdlet

Un proveedor puede invalidar el comportamiento de algunos cmdlets específicos del proveedor. Para obtener una lista de parámetros que se pueden invalidar y cómo invalidarlos en la clase de proveedor, consulte parámetros del cmdlet Provider

Parámetros dinámicos

Los proveedores pueden definir parámetros dinámicos que se agregan a un cmdlet de proveedor cuando el usuario especifica un valor determinado para uno de los parámetros estáticos del cmdlet. Un proveedor lo hace implementando uno o varios métodos de parámetro dinámicos. Para obtener una lista de parámetros de cmdlet que se pueden usar para agregar parámetros dinámicos y los métodos usados para implementarlos, consulte parámetros dinámicos del cmdlet provider.

Funcionalidades del proveedor

La enumeración System.Management.Automation.Provider.ProviderCapabilities define una serie de funcionalidades que los proveedores pueden admitir. Esto incluye la capacidad de usar caracteres comodín, filtrar elementos y admitir transacciones. Para especificar funcionalidades para un proveedor, agregue una lista de valores de la enumeración System.Management.Automation.Provider.ProviderCapabilities , combinado con una operación de OR lógica, como la propiedad System.Management.Automation.Provider.CmdletProviderAttribute.ProviderCapabilities* (el segundo parámetro del atributo) del atributo System.Management.Automation.Provider.CmdletProviderAttribute para la clase de proveedor. Por ejemplo, el atributo siguiente especifica que el proveedor admite las funcionalidades System.Management.Automation.Provider.ProviderCapabilitiesShouldProcess y System.Management.Automation.Provider.ProviderCapabilitiesTransactions.

[CmdletProvider(RegistryProvider.ProviderName, ProviderCapabilities.ShouldProcess | ProviderCapabilities.Transactions)]

Ayuda del cmdlet de proveedor

Al escribir un proveedor, puede implementar su propia Ayuda para los cmdlets de proveedor que admite. Esto incluye un único tema de ayuda para cada cmdlet de proveedor o varias versiones de un tema de ayuda para los casos en los que el cmdlet del proveedor actúa de forma diferente en función del uso de parámetros dinámicos. Para admitir la ayuda específica del cmdlet del proveedor, el proveedor debe implementar la interfaz System.Management.Automation.Provider.ICmdletProviderSupportsHelp.

El motor de Windows PowerShell llama al método System.Management.Automation.Provider.ICmdletProviderSupportsHelp.GetHelpMaml* para mostrar el tema de Ayuda de los cmdlets del proveedor. El motor proporciona el nombre del cmdlet que el usuario especificó al ejecutar el cmdlet Get-Help y la ruta de acceso actual del usuario. La ruta de acceso actual es necesaria si el proveedor implementa versiones diferentes del mismo cmdlet de proveedor para unidades diferentes. El método debe devolver una cadena que contenga el XML para la Ayuda del cmdlet.

El contenido del archivo de Ayuda se escribe mediante EL XML PSMAML. Este es el mismo esquema XML que se usa para escribir contenido de ayuda para cmdlets independientes. Agregue el contenido de la Ayuda del cmdlet personalizado al archivo de ayuda del proveedor en el elemento CmdletHelpPaths. En el ejemplo siguiente se muestra el elemento command para un único cmdlet de proveedor y se muestra cómo se especifica el nombre del cmdlet de proveedor que el proveedor. Soporta

<CmdletHelpPaths>
  <command:command>
    <command:details>
      <command:name>ProviderCmdletName</command:name>
      <command:verb>Verb</command:verb>
      <command:noun>Noun</command:noun>
    <command:details>
  </command:command>
<CmdletHelpPath>

Véase también

funcionalidad del proveedor de Windows PowerShell

cmdlets del proveedor de

escribir un proveedor de Windows PowerShell