7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. ASP.NET

Saluda a PowerShell

Scroll to top
Read Time: 11 mins

Spanish (Español) translation by Andrea Jiménez (you can also view the original English article)

PowerShell ha estado en desarrollo durante más de diez años. Microsoft continúa invirtiendo en su desarrollo y adopción. Estas inversiones han transformado la facilidad y la solidez con que los desarrolladores y administradores pueden automatizar las tareas de Windows.


¿Qué es PowerShell?

PowerShell resuelve los desafíos de administración y adaptabilidad al integrar perfectamente el framework .NET.

PowerShell es el framework de automatización de tareas de Microsoft, que consiste en un shell de línea de comandos, un entorno de secuencias de comandos integrado (ISE), un lenguaje de secuencias de comandos integrado en el framework .NET, una API que te permite alojar PowerShell en tus aplicaciones .NET, y es una plataforma de automatización distribuida. PowerShell proporciona acceso completo a COM y WMI, lo que te permite realizar tareas en sistemas Windows locales y remotos.

PowerShell es una plataforma de nueva generación para la automatización, ya que resuelve los desafíos de administración y adaptabilidad al integrar perfectamente el framework .NET. Es bueno para desarrolladores, administradores, probadores y más. Basado en .NET, la herramienta reduce los costos, al tiempo que proporciona a los desarrolladores y administradores una forma simple y lista para la empresa de automatizar, medir y mejorar todos sus procesos.


Seguimiento

En esta introducción, resaltaré algo de la profundidad y amplitud que PowerShell aporta a la mesa. Cosas como la canalización de objetos que cambia el juego, REPL (lectura, evaluación, ciclo de impresión), integración .NET y más.

Si estás ejecutando Windows 7 u 8, PowerShell ya está instalado. Descarga PowerShell v3 para Windows 7 aquí. Necesitas Windows 7 SP1 y la descarga también funciona para Windows 2008 R2 SP1 y Windows 2008 SP2. Si estás ejecutando Vista, XP o Windows 2003, deberás conformarte con PowerShell v2 aquí.


¿Para que sirve? ¡Absolutamente para todo!

Desde la implementación de múltiples recursos en Azure, hasta el manejo de tus compilaciones de software para una integración continua, el acceso a servicios web o puntos finales REST. PowerShell te cubre y te ofrece mucho más.

  • Corta y fragmenta texto, XML, CSV y JSON con facilidad
  • Integra la consola de PowerShell para ejecutar comandos dentro de tus aplicaciones en C#
  • Crea aplicaciones GUI de cinco a diez veces más rápido y con menos código
  • Aprovecha las capacidades de PowerShell para trabajar con Internet
  • Interactúa con archivos DLL y crea objetos, muestra automáticamente propiedades y llama a métodos en sesiones interactivas en vivo
  • Crea lenguajes y vocabularios específicos de dominio (DSL) para expresar soluciones más claramente
  • Trabaja con Microsoft Office a través del Modelo de objetos de componentes (COM)
  • Características de PowerShell v3

Iniciando en PowerShell

¿Qué es un cmdlet? Un cmdlet es el bloque de construcción fundamental en PowerShell y se expresa como un par verbo-sustantivo, lo que ayuda a que sean autodescriptivos. Por ejemplo:

PowerShell incluye cientos de cmdlets principales y puedes escribir los tuyos.

Memoriza dos cmdlets

PowerShell facilita la capacidad de descubrimiento. Siempre que vayas hacia la pantalla azul de PowerShell y no estés seguro de qué hacer, usa Get-Command.

El cmdlet Get-Command obtiene todos los comandos que están instalados en la computadora, incluidos cmdlets, apodos, funciones, flujos de trabajo, filtros, scripts y aplicaciones.

En esencia, Get-Command te muestra todas las cosas que puedes hacer en la sesión actual de PowerShell.

Get-Command

Get-Command admite comodines. Digamos que quiero ver todos los cmdlets que tiene el verbo Invoke.

Esto es lo que obtengo después de presionar enter.

¿Cuáles son los cmdlets que terminan en el sustantivo Item?

Ten en cuenta que comienzas a ver otros verbos, como Borrar, Nuevo, Eliminar y Establecer.

A continuación, usaré algunos cmdlets para resumir lo que está disponible en mi sesión en uno de mis cuadros cuando inicio la consola PowerShell.

Pongo Get-Command, lo agrupo y lo ordeno. Aquí, puedo ver que tengo más de 1000 Cmdlets para trabajar. Estoy ejecutando PowerShell v3 con módulos adicionales instalados, por lo que tu kilometraje puede variar.

¿De qué módulos son estos cmdlets? Podemos responder esa pregunta de esta manera:

Hay muchas cosas que puedo lograr con PowerShell.

Get-Help

Get-Help hace exactamente eso, muestra ayuda para el cmdlet sobre el que debes saber más. No solo es fácil obtener ayuda, es fácil crear/incluir ayuda para los cmdlets / funciones avanzadas que desarrolles, un tema para otro artículo. Tener ayuda a tu alcance es un gran ahorro de tiempo.

Aquí hay una versión corta de la salida.

Más fácil aún; hay un cambio para esto en el cmdlet Get-Help , eso te lleva aquí.

¿Quieres ver ejemplos de cómo usar el cmdlet? Usa el modificador -Examples. Además, puedes copiar y pegar ejemplos directamente en la consola y ejecutarlos.

Es así de fácil y rápido.


PowerShell funciona fácilmente con servicios web

El W3C define un "servicio web" como:

[...] un sistema de software diseñado para respaldar la interacción interoperable de máquina a máquina a través de una red. Tiene una interfaz descrita en un formato procesable por máquina (específicamente WSDL). Otros sistemas interactúan con el servicio web de la manera prescrita por su descripción usando mensajes SOAP, típicamente transmitidos usando HTTP con una serialización XML junto con otros estándares relacionados con la web.

PowerShell hace un trabajo rápido de los servicios web, utilizando el cmdlet New-WebServiceProxy. Cambia el $zipcode, ejecútalo y obtén la información meteorológica más reciente.

Resultado

Almaceno el objeto proxy en $svc y luego llamo al método GetCityForecastByZIP, capturando los resultados en $result. Al recorrer la matriz ForecastResult, transformo el registro en los datos. Ten en cuenta que City y DaytimeHigh están en diferentes niveles en la jerarquía.

La técnica que estoy usando es crear pares clave / valor para la tabla hash. @ {} es la sintaxis de PowerShell para una nueva tabla hash. El uso de [PSCustomObject] es un acelerador de PowerShell, que me permite, por un lado, crear un objeto personalizado a partir de una tabla hash.

El servicio web Weather.asmx retornó un XML jerárquico. En una serie de comandos de PowerShell, modifiqué los datos y los formateé (la Fecha) a mi gusto. Para este ejemplo, elegí dejar que PowerShell lo imprima. Una vez que tengo los datos en mi sesión de PowerShell, estoy conectado al ecosistema de PowerShell y puedo conectar fácilmente esta matriz de objetos personalizados a otros cmdlets para enviarlos a otro servicio web, generar HTML, guardarlo en un archivo, crear un archivo CSV o exportarlo a una base de datos SQL.

Trabajando con CSV, JSON y XML

Fragmentar los formatos de texto es un punto ideal de PowerShell. Aquí, convertiré tres formatos comunes a un objeto de PowerShell. Para CSV y JSON, usaré los cmdlets ConvertFrom- * correctos, y para el XML, usaré el acelerador que toma XML y crea un documento XML.

Entonces, tomamos tres formatos heterogéneos y, al final, realizamos una agregación sobre uno de los campos. Podría haber recuperado cada una de estas fuentes de datos de varios lugares, el CSV de un recurso compartido de red, el JSON de una consulta REST y el XML de un servicio web. Como dije, este es un punto ideal de PowerShell.


Usemos la API REST de búsqueda de Twitter en la línea de comando. Construyo la Url, que puedes usar en tu navegador, y luego uso el cmdlet de PowerShell Invoke-RestMethod. Envía una solicitud al servicio REST y determina si la respuesta es XML o JSON. Aquí solicito una respuesta JSON, así que Invoke-RestMethod convierte los resultados en una matriz de objetos de PowerShell. Los canalizo al cmdlet Select (un alias del verbo-sustantivo Select-Object) eligiendo solo tres campos. Piensa en esto como una proyección, similar a LINQ o SQL.

Resultado

Es fácil. Mira un video que hice para la versión 2: "PowerShell, ShowUI y la API de Twitter". Una mini aplicación de Twitter WPF en una serie de PowerShell.


Compilar C # sobre la marcha en PowerShell

PowerShell es un lenguaje interpretado. Entonces, habrá una penalización. No es un problema importante, pero, a veces, necesitarás la velocidad de un lenguaje compilado. PowerShell te permite compilar C # sobre la marcha en la memoria en tu sesión de PowerShell, utilizando el parámetro -TypeDefinition en el cmdlet Add-Type. Ten en cuenta el here-string identificado por la @" "@. Son súper útiles al citar texto. Te invito a explorar más con las reglas de cotización de Add-Type y PowerShell.

Interactuando con DLLS

Ahora, digamos que no te di el código fuente, solo la DLL compilada. No hay problema: Add-Type tiene un parámetro -Path.

Presta especial atención a esto. Usar Add-Type de esta manera es cómo encajar fácilmente cualquier DLL .NET que provenga de alguien, si aún no han proporcionado una interfaz de PowerShell. Esto es cierto si la DLL es de Microsoft, DELL, Citrix u otro desarrollador.


Para concluir

Entonces eso es todo por ahora. ¿Deseas ver más contenido específico de Powershell en Nettuts +? Déjanos saber a continuación!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.