PowerShell es la shell y el lenguaje de scripts de Microsoft. A diferencia de otras terminales, sus comandos (cmdlets) se pasan objetos con propiedades, no texto, lo que hace muy fácil filtrar, ordenar o exportar información. Windows trae Windows PowerShell 5.1, y PowerShell 7 se instala aparte y también funciona en macOS y Linux.
Administrar y automatizar Windows
Gestionar servidores y la nube (Azure, Microsoft 365)
Tareas repetitivas con archivos
Para empezar: Busca «PowerShell» en el menú Inicio o abre Terminal de Windows y escribe los ejemplos.
Nivel 1 Básico
1
Lección 1 · Básico
Qué es PowerShell y tu primer cmdlet
Los comandos de PowerShell se llaman cmdlets y siguen el patrón Verbo-Sustantivo: Get-Date, Get-Process, Stop-Service… Si conoces el verbo y el objeto, casi puedes adivinar el nombre.
Write-Output (o simplemente escribir un valor) muestra algo en la consola. PowerShell no distingue mayúsculas de minúsculas en los nombres de los comandos.
Respuesta: Verbo-Sustantivo. Todos siguen el patrón Verbo-Sustantivo, como Get-Date o Remove-Item.
2
Lección 2 · Básico
Descubrir comandos: Get-Help, Get-Command y Get-Member
No hace falta memorizar: Get-Command busca comandos (admite comodines), Get-Help explica cómo se usa uno y sus ejemplos, y Get-Member muestra qué propiedades y métodos tiene un objeto.
La primera vez, Update-Help (como administrador) descarga la ayuda completa.
Completa para ver las propiedades de los objetos que devuelve Get-Process.
Get-Process | Get-
Ver la solución
Respuesta:Member. Get-Member lista las propiedades y métodos de los objetos que recibe.
3
Lección 3 · Básico
Variables y texto
Las variables empiezan por $: $nombre = "Ana". No hace falta declarar el tipo, aunque puedes forzarlo con corchetes, como [int].
Entre comillas dobles, las variables se sustituyen por su valor; entre comillas simples, el texto se queda tal cual.
Ejemplo práctico
$nombre = "Ana"
[int]$edad = "30" # se convierte a número
$edad + 1 # 31
"Hola, $nombre" # Hola, Ana
'Hola, $nombre' # Hola, $nombre
"El año que viene: $($edad + 1)"
Ejercicio
¿Qué muestra 'Hola, $nombre' (comillas simples)?
Ver la solución
Respuesta: Hola, $nombre. Las comillas simples no sustituyen variables: el texto se muestra literalmente.
4
Lección 4 · Básico
La tubería de objetos
La barra | pasa la salida de un cmdlet al siguiente. En PowerShell lo que viaja son objetos completos, así que puedes ordenar por una propiedad o elegir columnas sin recortar texto.
Sort-Object ordena, Select-Object elige propiedades o los primeros resultados y Format-Table presenta el resultado como tabla.
Ejemplo práctico
# Los 5 procesos que más memoria usan
Get-Process |
Sort-Object WorkingSet -Descending |
Select-Object -First 5 Name, Id, WorkingSet
Ejercicio
¿Qué pasa por la tubería | en PowerShell?
Ver la solución
Respuesta: Objetos con propiedades. Cada cmdlet recibe objetos, por eso Sort-Object WorkingSet puede ordenar por esa propiedad directamente.
Nivel 2 Intermedio
5
Lección 5 · Intermedio
Filtrar con Where-Object
Where-Object se queda con los objetos que cumplen una condición escrita entre llaves; $_ representa el objeto actual.
Los operadores de comparación son palabras: -eq (igual), -ne, -gt (mayor que), -lt, -like (con comodines) y -match (expresión regular).
Ejemplo práctico
# Archivos de más de 100 MB en Descargas
Get-ChildItem "$HOME\Downloads" -File |
Where-Object { $_.Length -gt 100MB } |
Select-Object Name, @{ n = "MB"; e = { [math]::Round($_.Length / 1MB) } }
# Servicios detenidos
Get-Service | Where-Object Status -eq "Stopped"
Ejercicio
Completa el operador «mayor que».
Where-Object { $_.Length 1GB }
Ver la solución
Respuesta:-gt. En PowerShell, «mayor que» se escribe -gt (greater than); > sirve para redirigir a un archivo.
6
Lección 6 · Intermedio
Condiciones y bucles
if, elseif y else funcionan con los mismos operadores (-eq, -gt…). foreach recorre una colección y ForEach-Object hace lo mismo dentro de una tubería.
Respuesta: Los números 1, 2 y 3. El operador de rango .. genera la lista de enteros entre los dos extremos.
7
Lección 7 · Intermedio
Scripts y la directiva de ejecución
Un script es un archivo .ps1 con comandos. Se ejecuta escribiendo su ruta, como .\limpiar.ps1.
Por seguridad, Windows bloquea los scripts según la directiva de ejecución. Get-ExecutionPolicy muestra la actual; para tus propios scripts basta con RemoteSigned solo para tu usuario. No desactives la protección del todo.
Ejemplo práctico
Get-ExecutionPolicy -List
# Permite tus scripts locales (los descargados deben estar firmados)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Ejecutar un script de la carpeta actual
.\limpiar.ps1
Ejercicio
¿Qué extensión tienen los scripts de PowerShell?
Ver la solución
Respuesta: .ps1. Los scripts de PowerShell se guardan con la extensión .ps1.
Nivel 3 Avanzado
8
Lección 8 · Avanzado
Funciones con parámetros
Una función agrupa código con un nombre, que conviene que siga también el patrón Verbo-Sustantivo. El bloque param() declara sus parámetros, con tipo y valor por defecto.
Con [Parameter(Mandatory)] PowerShell pide el valor si no lo pasas.
Respuesta: Para que el error se pueda capturar con catch. Convierte el error en uno que detiene la ejecución, y así try/catch lo captura.
10
Lección 10 · Avanzado
Automatizar: exportar, comprobar y programar
Como trabajas con objetos, exportar a CSV o JSON es una línea: Export-Csv y ConvertTo-Json. Get-FileHash calcula la huella de un archivo para comprobar que no ha cambiado.
Para que un script se ejecute solo, prográmalo con el Programador de tareas de Windows, indicando como programa powershell.exe -File ruta\script.ps1.
Ejemplo práctico
# Inventario de programas en un CSV que abre Excel
Get-Process | Select-Object Name, Id, CPU |
Export-Csv "$HOME\procesos.csv" -NoTypeInformation -Encoding UTF8
# Huella SHA-256 de un archivo descargado
Get-FileHash "$HOME\Downloads\instalador.exe" -Algorithm SHA256
Ejercicio
Completa el cmdlet que guarda los objetos en un archivo CSV.
Get-Service | -Csv servicios.csv
Ver la solución
Respuesta:Export. Export-Csv convierte cada objeto en una fila del archivo CSV.
¿Has terminado? Sigue practicando
Repasa los conceptos en el diccionario, practica con estas herramientas o prueba otro lenguaje: las ideas que has aprendido (variables, condiciones, funciones, objetos…) te servirán en cualquiera.
* Porcentaje de personas que dijeron haber usado PowerShell en la Stack Overflow Developer Survey 2026: Technology (pregunta sobre lenguajes de programación, de scripts y de marcado; todas las respuestas). El progreso de las lecciones se guarda solo en este navegador.
¿Nos dejas medir las visitas?
Con tu permiso usamos Google Analytics, que guarda cookies, para saber cuántas personas visitan la web y qué páginas les resultan útiles. No usamos cookies de publicidad y tus archivos nunca salen de tu navegador. Puedes cambiar de opinión cuando quieras en «Configurar cookies», al pie de la página. Más información.