PowerShell: una guía completa – parte 1

Te damos la bienvenida a la primera de las 3 partes de Powershell: una guía completa. Haz clic en los siguientes enlaces para consultar la parte 2 y la parte 3.

Windows PowerShell es un tema muy amplio, el objetivo de esta guía es proporcionar a los administradores de sistemas una herramienta sencilla y útil para comprender los fundamentos de PowerShell. También mostraremos algunos scripts y comandos que se pueden usar en actividades cotidianas. Esta guía te permitirá dar los primeros pasos al enseñarte las capacidades básicas necesarias para usar PowerShell y el scripting orientado a objetos.

¿Qué es PowerShell?

Windows PowerShell es un shell de línea de comandos, un lenguaje de scripting y un entorno para la automatización de tareas creado por Microsoft. Se basa en el framework .NET y es perfecto para automatizar procesos por lotes y tareas del sistema. PowerShell está disponible para Windows y Linux y se ha integrado en los sistemas operativos de Microsoft desde Windows Server 2003 R2. Hoy en día, PowerShell viene instalado por defecto en todos los sistemas Windows Server y en todas las ediciones profesionales de los ordenadores de sobremesa domésticos. Además puedes descargarlo directamente desde la web de Microsoft si lo necesitas.

PowerShell no es un lenguaje de programación compilado como C, es un lenguaje de scripting, es decir, interpretado. Cuenta con un conjunto de comandos (cmdlets) que el usuario puede ejecutar en un amplio rango de variables. Esto resulta muy útil para consultar y ejecutar comandos de una sola vez en todo un centro de datos de servidores. PowerShell incluye también la ejecución de línea de comandos, puede ejecutar cualquier comando de Windows y se comporta como el Símbolo del sistema.

¿Cómo actualizar o instalar PowerShell?

Antes de comenzar, recomendamos usar la última versión de PowerShell (5.0 o superior). Con cada nueva versión, Microsoft añade nuevas características y cmdlets: PowerShell es un lenguaje de scripting en evolución con nuevas funciones que se van añadiendo para permitir una mejor integración.

Windows PowerShell incluye las aplicaciones Core Shell y PowerShell ISE (Entorno de scripting integrado). Se pueden encontrar en el menú de Inicio simplemente escribiendo PowerShell. Recomendamos ejecutar siempre PowerShell como administrador.

Si necesitas actualizar tu versión de Powershell, consulta la primera parte de este artículo (solo los puntos del 1 al 10).

Puedes comprobar la versión abriendo el Shell y escribiendo $psversiontable (busca la propiedad PSVersion)

Powershell - PSVersiontable

Los fundamentos de PowerShell y Get-Help

Uno de los primeros conceptos que hay que aprender sobre PowerShell es el sistema de ayuda. PowerShell está diseñado para ser fácil de usar, y cada cmdlet incluye la documentación de ayuda sobre cómo utilizarlo.

El archivo de ayuda contiene la descripción del comando, la sintaxis a utilizar, y también un ejemplo de uso.

La comunidad de PowerShell ha adoptado este planteamiento informativo, y la gran mayoría de scripts disponibles online tienen un archivo de ayuda. Es importante acostumbrarse a revisar el archivo de ayuda, incluso si no se está “bloqueado”. Descubrirás muchas cosas nuevas sobre los cmdlets y los modos de uso que probablemente desconocías.

  • En primer lugar, hay que actualizar el archivo de ayuda de Microsoft escribiendo update-help (este comando indica a PowerShell que descargue de Internet toda la ayuda actualizada). Debe hacerse una sola vez.
  • Ahora escribe Get-Command y aparecerá una lista de todos los comandos disponibles. (Consejo sobre PowerShell, la gramática de los comandos es siempre singular: Log no Logs; Service no Services)
  • Casi todos los archivos de ayuda incluyen ejemplos que se pueden consultar con el comando get-help get-service -examples. Esta es la mejor forma de aprender a usar los primeros cmdlets.

get-help get-service

  • Arriba puedes ver el archivo de ayuda de get-service, con las cuatro principales áreas resaltadas
    • SYNOPSIS: qué hace el comando
    • SYNTAX: cómo utilizar el comando para crear cmdlets
    • RELATED LINKS: comandos similares o relacionados, en el ejemplo encontramos los comandos con los que get-service puede interactuar en el pipeline.
    • REMARKS: cómo obtener más información sobre el comando.

Set-ExecutionPolicy

Las políticas de ejecución son un elemento de seguridad de PowerShell y determinan la capacidad del usuario para ejecutar ciertos comandos y/o cargar la configuración del archivo. Si se configuran incorrectamente, las políticas te impedirán ejecutar todos los scripts disponibles en tu versión de PowerShell. Esto se verá claro en el momento en el que uses scripts descargados de la web.

Puedes configurar las políticas de distintas formas, la más habitual es simplemente permitir la ejecución de todos los scripts, o, si lo prefieres, puedes desactivar las políticas de seguridad. El segundo modo no es el más adecuado, pero es muy útil para practicar y realizar pruebas.

  1. Para habilitar la ejecución de scripts remotos escribe set-executionpolicy remotesigned
  2. Para deshabilitar las políticas escribe Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Usa la segunda opción con precaución y nunca en un entorno de producción.

 

¿Qué es el Pipeline?

El pipeline se utiliza para importar, exportar y convertir datos en un comando Windows PowerShell. Para utilizarlo correctamente, es importante pensar en lo que se está procesando al ejecutar el comando. A quienes tengan experiencia con Linux les resultará más fácil dominar el concepto. Cada vez que ejecutes un comando PowerShell, el resultado (o dato) se presentará en “sentido descendente” en el pipeline. Los datos resultantes se pueden utilizar para realizar comandos adicionales en cascada.

Nota: los comandos se separan usando el símbolo pipe “|”.

La forma más fácil de explicarlo es probando un comando sencillo, como por ejemplo get-process | stop process

El resultado del Comando A (get-process) pasa en sentido descendente del pipeline al Comando B (stop-process) que a su vez pasa por el Output. A continuación, puedes manipular el Comando A para pasar los resultados específicos en sentido descendente. También puedes añadir más “pasos”, usando el pipe, y obtener cmdlets granulares.

Los fundamentos de Powershell

Windows PowerShell es un shell orientado a objetos, cada cmdlet es una colección de objetos y cada objeto tiene sus propiedades. Esto se puede demostrar utilizando el comando get-member. Puedes introducir el comando get-member en el pipeline, como por ejemplo get-service | get-member. 

Para entenderlo mejor, escribe get-service en el shell

 

get-service

Verás información sobre cada servicio de tu sistema, incluyendo el estado, nombre y nombre para mostrar. Pero hay muchas otras propiedades para el objeto get-service que no estamos visualizando.

Ahora escribe get-service | get-member

El resultado incluirá los objetos aplicables al conjunto de datos Get-Service, incluyendo Alias, Métodos y propiedad.

 

get-process | get-member

Ahora puedes utilizar la información de Get-Member para crear tus comandos.

Escribe get-service | Select-object Name, startype, status

Se mostrará la información sobre los servicios del sistema, esta vez con Nombre, StarttypeEstado.

Podemos ir más allá introduciendo sorting (clasificación), grouping (agrupación) y measuring (medición).

Escribe get-service | Select-Object Name, Starttype, status | sort-object StartType

Los resultados estarán ordenados por Starttype (por defecto alfanumérico).

Powrshell sorting

Ahora escribe get-service | Select-object Name, StartType, Status | Group-Object -property Status

Los servicios estarán agrupados en Running, Stopped o, si corresponde, deshabilitados. También se contabilizarán y el valor se mostrará entre las llaves {}.

get-service - group

Finalmente, escribe Get-service | Where-object status -eq “Running” | Measure-object

Where-object | MEasure-Object

Este comando solo buscará los servicios en ejecución (Running) y los contará. En nuestro ejemplo, tenemos 80 servicios en ejecución.

 

En esta primera parte hemos dado los primeros pasos en el mundo de Windows PowerShell. Es importante recordar los fundamentos introducidos aquí. En la segunda parte presentaremos la importación y exportación de datos.

 

Share: Facebook Twitter Linkedin

Comments