Escuela Geek Aprende cómo extender PowerShell
PowerShell ofrece dos formas de extender el shell. Puede usar complementos, que son solo binarios y desarrollados en un lenguaje de programación completo como C #, o puede usar módulos, que pueden ser tanto binarios como basados en scripts..
Asegúrese de leer los artículos anteriores de la serie:
- Aprenda cómo automatizar Windows con PowerShell
- Aprendiendo a usar cmdlets en PowerShell
- Aprender a usar objetos en PowerShell
- Aprendizaje de formato, filtrado y comparación en PowerShell
- Aprende a usar el control remoto en PowerShell
- Uso de PowerShell para obtener información de la computadora
- Trabajando con Colecciones en PowerShell
Y estad atentos para el resto de la serie toda la semana..
Snapins
Los snapins son así el año pasado. Dejando las bromas a un lado, los complementos realmente nunca se vieron en la comunidad de PowerShell porque la mayoría de los creadores de secuencias de comandos no son desarrolladores y solo puedes escribirlos en un lenguaje como C #. Sin embargo, todavía hay algunos productos que utilizan complementos, como por ejemplo, Web Deploy. Para ver qué complementos están disponibles para usar en el shell, use el siguiente comando:
Get-PSSnapin -Registrado
Para usar los comandos agregados por un complemento, primero debe importarlo a su sesión, y puede hacerlo así:
Add-PSSnapin -Nombre WDeploySnapin3.0
En este punto, recibirá un error si no tiene instalado el complemento de implementación web. Si lo tiene instalado, como yo, entonces se importará a su sesión. Para obtener una lista de los comandos disponibles en el complemento, simplemente puede usar el cmdlet Get-Command:
Get-Command -Module WDeploy *
Nota: Técnicamente esto no es un módulo, pero por alguna razón todavía tiene que usar el parámetro Módulo.
Módulos
Los módulos son más nuevos y son el camino a seguir. Se pueden crear secuencias de comandos con PowerShell y codificarlas en un lenguaje como C #. La mayoría de los comandos incorporados también están organizados en módulos. Para ver una lista de módulos en su sistema, puede usar el siguiente comando:
Get-Module -ListAvailable
A medida que los productos se actualizan, sus homólogos de PowerShell se migran a los módulos. Por ejemplo, SQL solía tener un complemento, pero ahora está compuesto de módulos.
Para utilizar un módulo, primero debes importarlo.
Módulo de importación -Nombre SQLASCMDLETS
Puede usar el mismo truco que usamos con los complementos para ver todos los comandos que el módulo agregó al shell.
De modo que queda la pregunta: ¿cómo sabe PowerShell qué complementos y módulos tiene en su sistema? Bueno, los snapins son un poco molestos y tienen que ser instalados. Parte del proceso de instalación incluye la creación de algunas entradas de registro que PowerShell busca para encontrar información de complemento. Los módulos, por otro lado, pueden registrarse con el shell simplemente colocándolos en una de las ubicaciones en la variable de entorno PSModulePath. Alternativamente, puede agregar la ruta del módulo a la variable de entorno.
($ env: PSModulePath) .Split (";")
Eso escupirá los contenidos de la variable. Observe que si tiene un módulo como SQL instalado, cómo modificó la variable para incluir la ubicación del módulo SQL.
Módulo de carga automática
PowerShell 3 introdujo una característica nueva e impresionante que tiene algunos nombres. Ninguno de ellos es oficial, pero "Módulo de carga automática" es la mejor descripción de ello. Básicamente, le permite usar cmdlets que pertenecen a un módulo externo sin importar explícitamente el módulo usando el cmdlet Import-Module. Para ver esto, primero elimine todos los módulos de su shell usando el siguiente comando:
Get-Module | Eliminar módulo
A continuación, puede comprobar que no tiene módulos cargados utilizando lo siguiente:
Get-Module
Ahora usa un cmdlet que no está en la biblioteca central. La conexión de prueba es buena:
Prueba-Conexión localhost
Si revisa los módulos cargados nuevamente, verá que sí cargó el módulo.
Eso es todo por hoy, chicos, únete a nosotros mañana para más..