viernes, 5 de noviembre de 2010

PowerShell y el Framework .NET

PowerShell se apoya en Framework.NET. ¿Qué significa esto? Sencillamente que PowerShell se convierte en un lenguaje más de programación como C# o Visual Basic. Aunque PowerShell está pensado como lenguaje de scripting, podemos hacer lo mismo que con cualquier otro lenguaje de programación .NET.

Ejemplo. PowerShell no incluye cmdlets para realizar cálculos matemáticos complejos, pero Framework.NET sí. En un programa hecho en C# podemos acceder a las funciones matemáticas incluyendo el espacio de nombres System.Math ubicado en la DLL mscorlib.dll.

En PowerShell esto lo hacemos con el objeto [System.Math]

Necesito información de métodos y propiedades de [System.Math] para saber qué puedo usar: [System.Math] | gm

Vemos que hay un método llamado GetMembers(). Con esto ya podemos consultar a la clase:

[System.Math].GetMembers()

Y hacer uso de todos los métodos y propiedades estáticas(no hace falta instanciar un objeto):

[System.Math]::PI
[System.Math]::sqrt(25)


Y lo mismo con cualquier otra clase de FrameWork.NET. ¿Os suena esto?:

[System.Console]::WriteLine("Hola Mundo")

¿Y si quiero hacer uso de métodos o propiedades no estáticos? Pues a crear un objeto.

$Ping = New-Object System.Net.NetworkInformation.Ping
$Ping.Send("10.10.10.10")


¿Y si la DLL con las clases que quiero usar no está cargada?

Para ver ensamblados cargados: [System.AppDomain]::CurrentDomain.GetAssemblies()
o mejor

[System.AppDomain]::CurrentDomain.GetAssemblies() | foreach-object { split-path $_.Location -leaf } | sort

Para cargar un ensamblado:

Add-Type -AssemblyName Nombre_del_ensamblado (si está en la GAC)
Add-Type -Path "ruta_completa_al_ensamblado"

No hay comentarios:

Publicar un comentario