Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Scripts
Code

El Poder de PowerShell, Parte 1

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called The Power of PowerShell.
The Power of PowerShell, Part 2

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

PowerSheel es una consola interactiva y lenguaje de scripting de Microsoft que repiensa lo que una línea de comandos se trata. Tiene capacidades muy interesantes por encima y más allá de las consolas familiares Unix, y hay un ecosistema y comunidad fuertes.

En este tutorial de dos partes, aprenderás acerca de algunas cosas interesantes que puedes hacer con PowerShell, su historia, su arquitectura, sus conceptos y cómo se compara con una consola Unix como Bash. ¡Preparate para un viaje emocionante!

Instalando PowerShell

Si estás en Windows 10, estás listo para comenzar. De otro modo, descárgalo desde el sitio web de Microsoft.

Una vez que PoweShell está instalado, la primera cosa que quieres hacer es habilitar la ejecución de script. Lanza PowerShell como administrador y teclea: Set-ExecutionPolicy RemoteSigned. Solo necesitas hacerlo una vez. Ahora, actualiza los archivos de ayuda: Update-Help -Force.

Cosas Interesantes Que Puedes Hacer Con PowerShell

Comencemos con una demostración rápida de la amplitud y profundidad de PowerShell. Esta es solo una lista arbitraria para despertar tu apetito. No es exhaustiva, tampoco son necesariamente las cosas más impresionantes que puedes hacer con PowerShell.

Reproducir Videos

Aquí una una línea interesante para reproducir archivos de video (o cualquier otro archivo de medios):

(New-object –COM WMPlayer.OCX).openPlayer("Path to your video")

Abrirá una nueva ventana de reproductor de medio y comenzará a reproducir tu vide inmediatamente.

Here Strings

PowerShell tiene una de las soluciones más legibles y placenteras para cadenas multi-línea, también conocidas como "here strings". Solo comienzas con @" y terminas con "@. Nota que los marcadores de inicio y fin deben estar en su propia línea, separados del contenido en medio. Aquí hay un ejemplo:

Genera números aleatorios

Elige un número aleatorio entre 1 y 100:

1..50 | Get-Random

Esta es una fuente de información simple. El lado izquierdo puede generar todos los enteros de 1 a 50 (inclusivo), y después es alimentado al Get.Random cmdlet que recoge uno de ellos.

Trabaja Con el Portapapeles

PowerShell soporta el portapapeles en profundidad. Puedes obtener y fijar objetos de diferentes formatos. Obviamente, el texto plano es posible, pero también puedes trabajar con imágenes, HTML, RTF e incluso archivos.

Aquí, selecciono algunos archivos en el explorador y después los obtengo del portapapeles en PowerShell:

Habla

¡PowerShell puede hablar también!

Obtén Todas Las Máquinas Virtuales Ejecutándose

Aquí hay una pequeña fuente de información para listar todas las máquinas virtuales ejecutándose:

Get-VM | Where-Object { $_.State -eq "Running" }

Muestra Barra de Progreso

PowerShell puede mostrar una agradable barra de progreso durante operaciones largas. Aquí hay un ejemplo que calcula recursivamente el tamaño total de todos los archivos en el directorio actual:

Histora de PowerShell

PowerShell 1.0 fue liberado en 2006, pero su inventor Jeffrey Snover comenzó a trabajar en esta mucho antes. Revisa el manifiesto 2002. PowerShell ha recorrido un largo camino. Windows estaba muy retrasado en términos de facilidades de línea de comandos. Los administradores de sistema y usuarios avanzados tenían que arreglárselas con la pobre oferta de cmd.exe y archivos por lotes. Hubo unos pocos intentos débiles de mejorar la situación con huéspedes de scripting Windows que permitían escribir objetos de sistema usando VBScript o JScript, pero había muchos problemas con esa aproximación.

PowerShell cambió todo eso muy rápidamente. No solo se ajustaba a las capacidades de línea de comandos de ambientes *nix sino que saltó con muchas innovaciones y consistencia sin precedentes y facilidad de uso.

Hoy, PowerShell está en la versión 5.1. A lo largo de los años y versiones, las capacidades de PowerShell y los ambientes de huésped crecieron significativamente.

PowerShell 1.0 soportaba maquinas de administración locales de Windows (incluyendo Windows Server 2003).

PowerShell 2.0 estaba integrado con Windows 7 y Windows Server 2008 R2. Agregó soporte para remoto e incrementó significativamente las capacidades de PowerShell con trabajos en segundo plano, transacciones, eventos, depuración, un entorno de desarrollo GUI y muchos nuevos cmdlets.

PowerShell 3.0 fue liberado como parte del framework de administración Windows. Estaba instalado en Windows 8 y Windows Server 2012. Agregó trabajos programados, conectividad de sesión, carga automática de módulo y muchos nuevos comandos.

PowerShell 4.0 fue integrado con Windows 8.1 y Windows Server 2012 R2. Agregó soporte para estado de configuración deseado, depuración mejorada, diagnósticos de red, y el switch -PipelineVariable.

PowerShell 5.0 fue liberado como parte del framework de administración 5 de Windows. PowerShell 5.1 fue liberado como parte de las actualizaciones de aniversario de Windows 10. Las nuevas características incluyen definiciones de clases de PowerShell, enumeraciones .NET, depuración remota y trabajos de depuración en segundo plano, administración de configuración local DSC y muchas más mejoras DSC.

PowerShell: El Lenguaje de Scripting

PowerShell es un lenguaje de programación muy poderoso. Puede ejecutar scripts, obviamente, pero también tiene mecanismos más avanzados como módulos, cmdlets personalizados y clases. PowerShell es un lenguaje multi-paradigma que soporta los paradigmas orientados a objetos, funcional y procedimental.

Pero tal vez el aspecto más importante de PowerShell es que es un lenguaje .NET completamente plumado Crea y usa ensables ensambles de objetos .NET programados en cualquier lenguaje y objetos pasando a través del flujo de información de PowerShell son objetos .NET. PowerShell es también fuertemente tipificado, pero cuando es conveniente puedes ignorarlo y no necesitas especificar los tipos si no quieres.

Scripting Procedimental

Para programar procedimentalmente, necesitas funciones, condicionales y ciclos. PowerShell tiene todo eso. Los operadores de comparación podrían sorprenderte ya que no usan los símbolos típicos. En su lugar, tienes -eq (igual), -lt (menor qué), -gt (mayor qué), -ge (mayor o igual), etc.

Aquí hay un ejemplo condicional lógico que obtiene entrada del usuario y verifica que sea válida. Nota el uso del operador -as para intentar convertir la entrada a entero. Si esta falla, el resultado es $null.

PowerShell tiene muchas facilidades y cmdlets para trabajar con colecciones y partirlas, así que los ciclos no son regularmente necesarios. Pero, solo en caso de que los prefieras, hay muchos constructores de ciclos en PowerShell. Puedes usar ciclos For, ciclos ForEach, ciclos While, ciclos Do-While e incluso ciclos especiales ForEach-Object. Aquí hay algunos ejemplos.

Programación Funcional

PowerShell se trata de programación funcional. El flujo de información es una ambiente de ejecución funcional en donde compones funciones/cmdlets dinámicamente. Puedes hacerlo de manera interactiva o puedes hacerlo en un script. Si quieres hacer programación funcional explícita, puedes hacerlo también, pero la sintaxis es un poco incómoda. Revisa este artículo: Programación Funcional en PowerShell.

Programación Orientada a Objetos

Ya has visto como usar objetos .NET y los objetos pasando a través del flujo de información. Definamos una clase en PowerShell y hagamos un OO básico. Creo una clase para un personaje de video juego con salud y armadura que puede recibir daño y calcular su salud. También hay un método IsAlive() que revisa si la salud > 0. Uso un constructor.

Nota que debes instanciar las clases PowerShell usando [<class name>]::new(). La sintáxis New-Object no es soportada en PowerShell 5.1.

Incluso puedes hacer herencia si quieres, pero siento que en este punto deberías usar probablemente un lenguaje diferente.

Ambiente de Script Interactivo

PowerShell viene con su propio IDE para desarrollo de script que incluye una ventana interactiva, multi pestaña para scripts con completación de código, ayuda integrada en todos los cmdlets, y mucho más. Es una herramienta muy hábil y recomiendo que la pruebes.

Conclusión

Ahora has visto las capacidades de PowerShell como lenguaje de scripting y aprendido un poco sobre sus objetivos de diseño y su historia. En la parte dos, cubriré a fondo los aspectos interactivos de PowerShell.

Advertisement
Advertisement
Advertisement
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.