Además de los cmdlets, funciones, alias … que tiene Powershell por defecto, se pueden añadir nuevas funcionalidades, normalmente creadas por fabricantes y asociadas a aplicaciones o recursos concretos.
Actualmente hay dos formas de ampliar esa funcionalidad de PowerShell, y es mediante PSSnapin o mediante Módulos
PSSnapins
- Normalmente requieren de la instalación de un ejecutable
- Puede ser necesario registrarlos de forma manual en .NET Framework
- Incluyen cmdlets, ayuda, extensiones, providers…
- Es necesario cargarlos en cada sesión PowerShell
Los comandos para gestionarlos son:
- Get-PSSnapin
- Remove-PSSnapin
- Add-PSSanpin
Por ejemplo si queremos obtener los Snapin cargados en una sesión Powershell podemos ejecutar:
1 |
Get-PSSnapin |
Vemos que solo hay uno cargado: Microsoft.PowerShell.Core
Si ejecutamos:
1 |
Get-PSSnapin -Registered |
Podemos ver los que tenemos disponibles para cargar.
Para ver como funciona vamos a mostrar la ayuda para comandos relacionados con Citrix en una sesión PowerShell por defecto:
Cargamos el Snapin de Citrix
Y volvemos a solicitar la ayuda:
Vemos que ahora tenemos disponibles algunos comandos tras cargar el PSSnapin de Citrix
Algunos ejemplos de PSSnapin:
- Citrix SDK
- VMware PowerCLI
Módulos
Los módulos es otro concepto que se está imponiendo a la hora de extender la funcionalidad de PowerShell.
- Pueden requerir instalación pero normalmente no es necesario
- Basado en archivos que se encuentran en la ruta $env:PSModulePath
- Módulos de terceros pueden añadir nuevas carpetas a este path
- Se puede modificar via GPO
- Con añadirlos a la carpeta es suficiente, se cargan automáticamente cuando se ejecuta algún cmdlet o función asociado al módulo
Por defecto la ruta donde se encuentran los módulos incluye una carpeta del sistema y otra del usuario.
Los cmdlets para gestionar los módulos son
- Get-Module
- Import-Module
- Remove-Module
- New-Module
Por defecto en una sesión de PowerShell tenemos los siguientes módulos:
1 |
Get-Module |
Vemos que tenemos 2 módulos cargados.
Pero si ejecutamos:
1 |
Get-Module -ListAvailable |
Nos muestra todos los módulos disponibles.
Para comprobar que no es necesario cargar los módulos para utilizar sus cmdlets, podemos ejecutar lo siguiente:
1 2 3 |
Get-Module Get-ACL C:\PowerShell-Help Get-Module |
Podemos ver que inicialmente teníamos 2 módulos cargados, pero tras ejecutar el cmdlet Get-Acl, pasamos a tener 3 módulos sin habérselo indicado, ya que Get-Acl pertenece al módulo Microsoft.PowerShell.Security que no estaba cargado inicialmente.
Temas
- Introducción
- Instalación y requerimientos
- Ayuda
- Ampliando la funcionalidad
- Canalización
- Operadores
- Comandos básicos
- Formato de salida
- Importar y Exportar datos
- Arrays y HashTables
- Ejecución de Scripts
- Providers
- Trabajos
- Scripts y funciones
- Gestión de Errores
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
3 comentarios
Pingback: Curso básico de Powershell: Ejecución de scripts
Pingback: PORTAFOLIS UF2 Programació d’scripts d’administració del sistema | Asix2-MIguelVM
Pingback: Programació d’scripts d’administració del sistema – Mòdul 06 – Administració de sistemes operatius