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.
Deberías implementar un proveedor de PowerShell para Windows si tu producto o configuración expone un conjunto de datos almacenados, como una base de datos que el usuario querrá navegar o navegar. Además, si tu producto proporciona un contenedor, aunque no sea un contenedor multinivel, tiene sentido implementar un proveedor de PowerShell para Windows. Por ejemplo, podrías querer implementar un proveedor de contenedores para Windows PowerShell si el verbo cmdlet Copiar, Mover, Renombrar, Nuevo o Eliminar tiene sentido como operación sobre tus datos de producto o configuración.
Las rutas de PowerShell de Windows identifican a tu proveedor
El entorno de ejecución de Windows PowerShell utiliza rutas de Windows PowerShell para acceder al proveedor de PowerShell correspondiente. Cuando un cmdlet especifica una de estas rutas, el entorno de ejecución sabe qué proveedor usar para acceder al almacén de datos asociado. Estos caminos incluyen caminos cualificados por el conductor, caminos cualificados por el proveedor, caminos directos al proveedor y caminos internos del proveedor. Cada proveedor de PowerShell de Windows debe soportar una o más de estas rutas.
Para más información sobre las rutas de PowerShell de Windows, consulta Cómo funciona Windows PowerShell.
Definición de un Drive-Qualified Camino
Para permitir que el usuario acceda a datos ubicados en una unidad física, su proveedor de PowerShell de Windows debe soportar una ruta compatible con la unidad de disco. Esta ruta comienza con el nombre de la unidad seguido de dos puntos (:), por ejemplo, mydrive:\abc\bar.
Definición de un Provider-Qualified Camino
Para permitir que el entorno de ejecución de Windows PowerShell inicialice y desinicialice al proveedor, su proveedor de Windows PowerShell debe soportar una ruta cualificada por el proveedor. Por ejemplo, FileSystem::\uncshare\abc\bar es la ruta cualificada por el proveedor del FileSystem proporcionada por Windows PowerShell.
Definición de un Provider-Direct Camino
Para permitir el acceso remoto a tu proveedor de Windows PowerShell, debería soportar una ruta directa al proveedor que pase directamente al proveedor de Windows PowerShell para la ubicación actual. Por ejemplo, el proveedor PowerShell de Windows del registro puede usar \\server\regkeypath como ruta directa al proveedor.
Definición de un Provider-Internal Camino
Para permitir que el cmdlet del proveedor acceda a los datos usando interfaces de programación de aplicaciones (API) que no sean de PowerShell de Windows, su proveedor de PowerShell de Windows debe soportar una ruta interna al proveedor. Esta ruta se indica después del "::" en la ruta calificada por el proveedor. Por ejemplo, la ruta interna del proveedor para el proveedor PowerShell de Windows de FileSystem es \uncshare\abc\bar.
Cambio de datos almacenados
Al anular métodos que modifican el almacenamiento de datos subyacente, siempre llama al método System.Management.Automation.Provider.CmdletProvider.WriteItemObject* con la versión de fecha más up-todel elemento modificada por ese método. La infraestructura del proveedor determina si el objeto elemento debe pasarse a la canalización, como cuando el usuario especifica el parámetro -PassThru. Si recuperar el elemento con fecha más up-toes una operación costosa (en rendimiento), puedes probar la propiedad Context.PassThru para determinar si realmente necesitas escribir el elemento resultante.
Elige una clase base para tu proveedor
Windows PowerShell proporciona varias clases base que puedes usar para implementar tu propio proveedor de PowerShell de Windows. Al diseñar un proveedor, elige la clase base, descrita en esta sección, que se adapte mejor a tus necesidades.
Cada clase base de proveedor de PowerShell de Windows pone a disposición un conjunto de cmdlets. Esta sección describe los cmdlets, pero no describe sus parámetros.
Usando el estado de sesión, el entorno de ejecución de Windows PowerShell pone varios cmdlets de ubicación disponibles para ciertos proveedores de Windows PowerShell, como los Get-Location, Set-Location, Pop-Location, y Push-Location los cmdlets. Puedes usar el Get-Help cmdlet para obtener información sobre estos cmdlets de localización.
Clase base CmdletProvider
La clase System.Management.Automation.Provider.CmdletProvider define un proveedor básico de PowerShell para Windows. Esta clase soporta la declaración de proveedor y proporciona una serie de propiedades y métodos disponibles para todos los proveedores de Windows PowerShell.
La clase es invocada por el Get-PSProvider cmdlet para listar todos los proveedores disponibles para una sesión.
La implementación de este cmdlet la proporciona el estado de sesión.
Nota:
Los proveedores de PowerShell de Windows están disponibles para todos los ámbitos de lenguaje PowerShell de Windows.
Clase base DriveCmdletProvider
La clase System.Management.Automation.Provider.DriveCmdletProvider define un proveedor de unidades PowerShell para Windows que soporta operaciones para añadir nuevas unidades, eliminar unidades existentes e inicializar unidades predeterminadas. Por ejemplo, el proveedor de FileSystem proporcionado por Windows PowerShell inicializa las unidades para todos los volúmenes que están montados, como discos duros y unidades 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 listados, el Get-PSDrive cmdlet (expuesto por estado de sesión) es un cmdlet relacionado que se utiliza para recuperar discos disponibles.
| Cmdlet | Definición |
|---|---|
New-PSDrive |
Crea una nueva unidad para la sesión y transmite la información de la conducción. |
Remove-PSDrive |
Elimina un disco de la sesión. |
Clase Base ItemCmdletProvider
La clase System.Management.Automation.Provider.ItemCmdletProvider define un proveedor de ítems en Windows PowerShell que realiza operaciones sobre 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.
| Cmdlet | Definición |
|---|---|
Clear-Item |
Limpia el contenido actual de los elementos en la ubicación especificada y lo reemplaza por el valor de "claro" especificado por el proveedor. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Get-Item |
Recupera los elementos de la ubicación especificada y transmite los objetos resultantes. |
Invoke-Item |
Invoca la acción predeterminada del elemento en la ruta especificada. |
Set-Item |
Coloca un elemento en la ubicación especificada con el valor indicado. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Resolve-Path |
Resuelve los comodines de una ruta PowerShell de Windows y transmite la información de la ruta. |
Test-Path |
Prueba el camino especificado y devuelve true si existe o false no. Este cmdlet está implementado para soportar el IsContainer parámetro del método System.Management.Automation.Provider.CmdletProvider.WriteItemObject* . |
Clase Base ContainerCmdletProvider
La clase System.Management.Automation.Provider.ContainerCmdletProvider define un proveedor de contenedores Windows PowerShell que expone un contenedor, para elementos de almacenamiento de datos, al usuario. Ten en cuenta que un proveedor de contenedores PowerShell para Windows solo puede usarse cuando hay un contenedor (sin contenedores anidados) con elementos en él. Si hay contenedores anidados, entonces debes implementar un proveedor de navegación PowerShell para Windows.
Esta clase deriva de la clase base System.Management.Automation.Provider.ItemCmdletProvider . La siguiente tabla define los cmdlets implementados por esta clase.
| Cmdlet | Definición |
|---|---|
Copy-Item |
Copia los objetos de un lugar a otro. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Get-ChildItem |
Recupera los objetos hijos 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 |
Elimina objetos de la ubicación especificada. |
Rename-Item |
Renombra un elemento en la ubicación especificada. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Clase base NavigationCmdletProvider
La clase System.Management.Automation.Provider.NavigationCmdletProvider define un proveedor de navegación Windows PowerShell que realiza operaciones para elementos que utilizan 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.
| Cmdlet | Definición |
|---|---|
Combine-Path |
Combina dos caminos en un solo camino, usando un delimitador específico de proveedor entre caminos. Este cmdlet transmite cuerdas. |
Move-Item |
Mueve los objetos a la ubicación especificada. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Un cmdlet relacionado es el cmdlet básico de Parse-Path proporcionado por Windows PowerShell. Este cmdlet puede usarse para analizar una ruta PowerShell de Windows que soporte el Parent parámetro. Transmite la cadena de ruta padre.
Selecciona las interfaces del proveedor para soportar
Además de derivar de una de las clases base de Windows PowerShell, tu proveedor de Windows PowerShell puede soportar otras funcionalidades derivando de una o más de las siguientes interfaces de proveedor. Esta sección define esas interfaces y los cmdlets soportados por cada una. No describe los parámetros para los cmdlets compatibles con la interfaz. La información de parámetros de cmdlet está disponible en línea usando los Get-Command cmdlets y (y Get-Help cmdlets).
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 muestra los cmdlets expuestos por esta interfaz.
| Cmdlet | Definición |
|---|---|
Add-Content |
Añade las longitudes de valor indicadas al contenido del elemento especificado. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Clear-Content |
Establece el contenido del elemento especificado al valor "clear". Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Get-Content |
Recupera el contenido de los elementos especificados y transmite los objetos resultantes. |
Set-Content |
Sustituye el contenido existente por los elementos especificados. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
IPropertyCmdletProvider
La interfaz System.Management.Automation.Provider.IPropertyCmdletProvider define una propiedad del proveedor PowerShell de Windows que realiza operaciones sobre las propiedades de los elementos en el almacén de datos. La siguiente tabla muestra los cmdlets expuestos por esta interfaz.
Nota:
El Path parámetro en estos cmdlets indica una ruta hacia un elemento en lugar de identificar una propiedad.
| Cmdlet | Definición |
|---|---|
Clear-ItemProperty |
Establece las propiedades de los elementos especificados al valor "clear". Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Get-ItemProperty |
Recupera 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 tubería a menos que se especifique su PassThru parámetro. |
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 soportados. Este tipo de proveedor gestiona operaciones para las que se pueden definir propiedades en tiempo de ejecución, por ejemplo, una nueva operación de propiedad. Tales operaciones no son posibles en elementos con propiedades definidas estáticamente. La siguiente tabla muestra los cmdlets expuestos por esta interfaz.
| Cmdlet | Definición |
|---|---|
Copy-ItemProperty |
Copia una propiedad del elemento especificado a otro elemento. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
Move-ItemProperty |
Mueve una propiedad del elemento especificado a otro elemento. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
New-ItemProperty |
Crea una propiedad sobre los elementos especificados y transmite los objetos resultantes. |
Remove-ItemProperty |
Elimina una propiedad para los elementos especificados. |
Rename-ItemProperty |
Renombra una propiedad de los elementos especificados. Este cmdlet no pasa un objeto de salida a través de la tubería a menos que se especifique su PassThru parámetro. |
ISecurityDescriptorCmdletProvider
La interfaz System.Management.Automation.Provider.ISecurityDescriptorCmdletProvider añade funcionalidad de descriptor de seguridad a un proveedor. Esta interfaz permite al usuario obtener y establecer información descriptora de seguridad para un elemento en el almacén de datos. La siguiente tabla muestra 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 utilizado para proteger recursos del sistema operativo, por ejemplo, un archivo u objeto. |
Set-Acl |
Establece la información para un ACL. Está en forma de una instancia de System.Security.AccessControl.ObjectSecurity sobre el/los elemento designado para la ruta especificada. Este cmdlet puede establecer información sobre archivos, claves y subclaves en el registro, o cualquier otro elemento del proveedor, si el proveedor de Windows PowerShell soporta la configuración de información de seguridad. |
Véase también
Creación de proveedores PowerShell para Windows