PowerShell Basics: Proveedores

Bienvenidos a otro artículo de la serie de “PowerShell Basics”. En la edición anterior se ha tratado el tema de las tuberías, cómo funcionan, cómo usarlas, y consideraciones de rendimiento. Hoy toca otro tema igual de interesante, aunque con un uso algo más marginal: Los proveedores.

Desde el principio: ¿Qué son los proveedores?

Ateniéndose a una definición estilo “manual de programación”, se puede decir que “Son programas basados en .NET framework que exponen la información de una fuente de datos, para que pueda visualizarse y trabajar con ella desde Windows PowerShell, accediendo a dicha información de forma similar a como se manipula un sistema de ficheros en línea de comandos”. Básicamente, lo que nos viene a decir es que los comandos que habitualmente se utilizan para trabajar con archivos/directorios en PowerShell no son “comandos aislados”, sino que han sido abstraídos a una entidad conceptual diferente (un proveedor). Esto a su vez, permite cambiar de proveedores para trabajar con otro tipos de datos, sin cambiar en demasía la forma de trabajar.

El proveedor predeterminado: PSDrive

Cuando iniciamos una consola PowerShell, por defecto se carga el proveedor PSDrive, encargado de gestionar y proporcionar el acceso a las unidades de disco y exponer operaciones de consulta y manipulación de archivos y directorios. Si alguna vez habéis escrito “ls” en PowerShell, sabed que dicho comando es un alias de “Get-ChildItem”, que es uno de los comandos proporcionados por los proveedores.

PSDrive1

Por supuesto, este proveedor expone comandos como rm para eliminar, cat (Get-Content) para revisar el contenido de un archivo, “New-Item <FolderName> -type directory” para crear una carpeta, o “New-Item <nombreArchivo> -type file” para crear un archivo.

Consultar Proveedores

PowerShell proporciona diversos proveedores para acceder a distintas fuentes de datos. Además, es posible que con la instalación de un módulo proporcionado por terceros se incluya un proveedor. Para poner orden en todo esto y tener constancia de los proveedores que hay disponibles para usar en una sesión de PowerShell, tenemos el CmdLet “Get-PSProvider”. Hay que reseñar que este comando, aunque útil, no es mágico… y es incapaz de detectarlos si no han sido cargados previamente. Esto se ve claramente en la siguiente captura, donde primero se obtiene la lista de proveedores “tal cual”. A continuación se importa un módulo, y posteriormente se aprecia cómo la carga del módulo ha agregado un nuevo proveedor a la Shell actual.

PSProvider2

A continuación, toca ver el funcionamiento de alguno de los proveedores más interesantes, como “Registry” o “Certificate”.

Proveedor Certificate

Este proveedor se carga automáticamente la primera vez que intentamos acceder al mismo. Para ello, únicamente hay que acceder a la ruta de certificados para cargar el proveedor y apuntar a la raíz de la unidad (almacén) de certificados para empezar a operar. Como se puede ver, se puede utilizar los comandos “cd” y “ls” para moverse por la estructura jerárquica del almacén, y consultar los contenidos de cada uno. Una de las cualidades en las que usar este proveedr destaca sobre el uso del snap-in de la MMC para el manejo de certificados es la consulta rápida y eliminación de certificados. Un posible escenario en el que interesaría eliminar certificados es a la hora de configurar un WebApplication Proxy para ADFS 3.0, en el caso de que la configuración haya fallado. Cada intento fallido de instalación genera un certificado autofirmado que es conveniente eliminar antes de intentar configurarlo de nuevo. De lo contrario, el almacén de certificados se va a ir llenando de información inútil que puede complicar las futuras labores de mantenimiento.

Cert_provider

Proveedor Registry

Este proveedor se conecta al registro de Windows, y permite operaciones de navegación, consulta y modificación de valores. Para ello se hace uso de los comandos cd (Set-Location) para navegar el registro, ls (Get-ChildItem) para consultar los datos del nivel actual del registro, Get-ItemProperty para consultar información de los elementos individuales, New-Item para agregar entradas al registro, Remove-Item para eliminarlas, Set-Item para modificar valores del registro…

hklm

Más información

¡Y eso es todo por hoy! Dominar cada uno de los proveedores da para un artículo cada uno, pero el objetivo de este capítulo era presentarlos y proporcionar los conceptos básicos para empezar a trabajar con ellos. Se puede consultar más información en los siguientes enlaces:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *