A los que nos seguís, habréis comprobado que de forma recurrente solemos escribir entradas sobre PowerShell y ejemplos de como realizar ciertas tareas demostrando todo el potencial que tiene.
Viendo que es una herramienta que cada vez utilizamos más y que Windows está apostando fuertemente por él en los nuevos sistemas, me he decidido a realizar una serie de entradas a modo de curso básico que sirva para la introducción y conocimiento de los comandos básicos y que sirva de base para poder utilizar PowerShell con todo su potencial.
Intentaré utilizar ejemplos que de forma sencilla y clara muestren los distintos apartados, ya que muchas veces con los ejemplos es como mejor entendemos el funcionamiento de las cosas.
Este es el temario:
- Introducción
- Instalación y requerimientos
- Ayuda
- Ampliando la funcionalidad
- Canalización
- Operadores
- Comandos básicos
- Formato de salida
- Importar y Exportar datos
- Arrays y HashTables
- Ejecución de Scripts
- Providers
- Trabajos
- Scripts y funciones
- Gestión de Errores
1.- Introducción
Para empezar un poco de historia. Desde Windows NT 4, han existido varias herramientas para poder administrar servidores y equipos Windows:
- NT4: Resource Kit Tools
- Windows XP / 2000: VBScript y Resource Kit Tools
- Año 2006: se lanza PowerShell 1.0
- Año 2009: se lanza PowerShell 2.0
- Año 2012: PowerShell 3.0
Como vemos en los últimos años han ido apareciendo las distintas versiones de PowerShell, partiendo de una simple herramienta de comandos a ser la base de los nuevos sistemas operativos como es Windows 2012.
¿Pero que es PowerShell? Powershell es un motor de administración orientado a objetos basado en .NET Framework. Este es el punto más importante de PowerShell. En PowerShell todo son objetos, aunque veamos la salida por pantalla de la ejecución de comandos como una cadena de texto, en realidad lo que vemos es la representación de un objeto.
PowerShell es una aplicación que normalmente vemos como una ventana CMD con fondo azul, pero PowerShell es realmente la base, la ventana CMD es una aplicación que utiliza el motor de PowerShell.
Junto a PowerShell, en nuestros sistemas también tenemos PowerShell ISE, que es un editor gráfico para crear y ejecutar comandos PowerShell.
Demostración básica
Arrancamos una ventana de PowerShell y ejecutamos:
1 |
Get-Command |
De esta forma podemos ver los comandos (o cmdlets), funciones, alias que tenemos disponibles para ejecutar.
Los comandos, utilizan un sistema de nombres, por el que cada comando está formado por dos partes Verbo y Nombre, separados por un guión. Por ejemplo: Get-Command, Get-Service, Stop-Service, Start-Service…
Cada comando tiene distintos parámetros que podemos utilizar para definir el comando concreto a ejecutar. Por ejemplo: Si queremos obtener solo los alias ejecutamos
1 |
Get-Command -CommandType Alias |
Con todos los comandos podemos utilizar parámetros. Hay algunos parámetros que son comunes a todos los comandos, como pueden ser -WhatIf, -Verbose … y otros que son específicos de cada comando, como puede ser el que hemos visto -CommandType
Otro ejemplo básico pero añadiendo uno de los aspectos más importantes de PowerShell, la canalización entre comandos, que la salida de un comando sirva de entrada para otro.
Si ejecutamos:
1 |
Get-Service | Where-Object { $_.Status -eq "Running"} | Sort DisplayName | Select-Object ServiceName,DisplayName | Out-Grid View |
Obtenemos una ventana con el listado de servicios que están en estado Running, ordenados alfabéticamente por la descripción. Más adelante veremos con detalle que es lo que ha pasado en este comando.
Uso de alias
Si ejecutamos:
1 |
dir C:\ |
Vemos que obtenemos un listado de los archivos.
Pero que pasa si en lugar de “dir” utilizamos “ls”
1 |
ls C:\ |
Obtenemos el mismo resultado. Entonces, ¿los comandos Linux funcionan en PowerShell? No. Lo que tenemos aquí son Alias. Comandos que en realidad son enlaces a otros comandos y Microsoft ha tenido la idea de crear por defecto el alias “ls”.
Vemos que tanto “dir” como “ls” son Alias del mismo comando Get-ChildItem
Entonces que pasa si ejecutamos
1 |
Get-ChildItem C:\ |
Pues que tenemos la misma salida que con “dir” y con “ls”
Ahora vamos a ver como un sencillo comando como puede ser el comando “dir”, utilizando los parámetros correspondientes, amplían su potencial. Por ejemplo:
1 |
dir C:\*.txt -File -Recurse |
Con este comando obtenemos todos los archivos con extensión txt existentes en la unidad C:\
Otro ejemplo:
1 |
dir "C:\Program Files" -File -Recurse | Sort-Object Count -Descending | Select-Object Name, Count | Out-GridView |
Y como vemos con un sólo comando obtenemos una ventana con un listado en el que vemos el número de archivos que hay de cada tipo según su extensión ordenados de forma decreciente de mayor a menor número de archivos.
Con esta introducción hemos visto algunos ejemplos de como con varios comandos básicos podemos llegar a crear comandos
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
4 comentarios
Pingback: Curso básico de Powershell: Instalación y Requerimientos | El Blog de Negu
Pingback: Curso básico de Powershell: Importar y Exportar datos | El Blog de Negu
Pingback: Curso básico de Powershell: Arrays y HashTables
Pingback: Curso básico de Powershell: Ejecución de scripts