friki de la escuela: aprender cómo extender PowerShell

PowerShell ofrece dos maneras para que usted pueda extender la concha. También se puede usar snapins, que sólo son binarios y desarrollado en un lenguaje de programación de pleno derecho como C #, o puede utilizar los módulos, que pueden ser binarios, así como la escritura de base.

Asegúrese de leer los artículos anteriores de la serie

Y estad atentos para el resto de la serie durante toda la semana.

Snapins son tan del año pasado. Todas las bromas a un lado, snapins nunca calado entre la comunidad de PowerShell, porque la mayoría de los programadores no son desarrolladores y sólo se puede escribir snapins en un lenguaje como C #. Sin embargo todavía hay algunos productos que utilizan snapins, como Web Deploy por ejemplo. Con el fin de ver lo que están disponibles snapins para su uso en la cáscara se utiliza el siguiente comando

Get-PSSnapin -registered

Para utilizar los comandos agregados por un snapin, primero tiene que importarlo en su sesión, y se puede hacer de modo que, al igual

Add-PSSnapin -Nombre WDeploySnapin3.0

En este punto, obtendrá un error si no tiene el Despliegue Web SNAPin instalado. Si no lo tiene instalado, como yo, entonces será importado a su sesión. Para obtener una lista de los comandos disponibles en el snap-in, puede simplemente usar el cmdlet Get-Command

Get-Command -Módulo wdeploy *

Nota: Técnicamente esto no es un módulo, pero por alguna razón usted todavía tiene que utilizar el parámetro del módulo.

Los módulos son más recientes y son el camino a seguir. Pueden ser tanto con secuencias de comandos PowerShell, así como codificado en un lenguaje como C #. La mayoría de los comandos internos se organizan en módulos. Para ver una lista de módulos en su sistema, puede utilizar el siguiente comando

Get-Module -ListAvailable

A medida que los productos se actualizan, sus homólogos PowerShell se están migrando a los módulos. Por ejemplo, SQL utilizada para tener un snap-in, pero ahora está compuesto por módulos.

Para utilizar un módulo, es necesario importar en primer lugar.

Import-Module -Nombre SQLASCMDLETS

Puede usar el mismo truco que usamos con snapins para ver todos los comandos que el módulo añadido a la cáscara.

Así que deja la pregunta: ¿Cómo sabe PowerShell lo SnapIns y los módulos que tiene en su sistema? Bueno, snapins son un poco de dolor y tienen que ser instalado. Parte del proceso de instalación incluye la creación de un par de entradas del registro que PowerShell se ve en encontrar información snapin. Módulos, por el contrario, pueden estar registrados en el shell simplemente colocándolos en una de las ubicaciones en la variable de entorno PSModulePath. Como alternativa, puede simplemente agregar la ruta de acceso al módulo a la variable de entorno.

($ Env: PSModulePath) .split ( “;”)

Eso va a escupir el contenido de la variable. Observe que si tiene instalado un módulo como SQL, cómo se modifica la variable para incluir la ubicación del módulo de SQL.

PowerShell 3 introdujo una nueva característica impresionante que se conoce con varios nombres. Ninguno de ellos son oficiales, pero “Carga Módulo Auto” es la mejor descripción de la misma. Básicamente, se permite el uso de cmdlets que pertenecen a un módulo externo sin importar el módulo de forma explícita mediante el cmdlet Import-Module. Para ver esto, primero eliminar todos los módulos de su shell con el siguiente comando

Get-Module | Retire del módulo

A continuación, puede comprobar que usted no tiene módulos cargados por el uso de la siguiente

Get-Module

Ahora usa un cmdlet que no está en la biblioteca central. Test-Connection es una buena idea

localhost prueba de conexión

Si se examina los módulos cargados de nuevo, verá que, efectivamente, se carga el módulo.

Eso es todo por hoy chicos, se unen a nosotros mañana por más.

Aunque la historia de una manzana que cae sobre la cabeza de Isaac Newton podría ser apócrifa, el árbol en sí no es: el manzano en cuestión todavía está vivo y bien fuera de casa de la familia de Newton, Woolsthorpe Manor, en el condado de Lincolnshire Inglés.