Cuando hablamos de PowerShell, muchos son los usuarios que lo consideran una versión vitaminada de CMD. Si bien es cierto que tienen parte de razón, realmente no es lo mismo, por lo que no todos los comandos se pueden utilizar de forma indistinta.
PowerShell es una herramienta de línea de comandos desarrollada por Microsoft para administrar sistemas, automatizar tareas, gestionar entornos entre otros. A diferencia de CMD, esta herramienta trabaja con objetos en lugar de con texto plano, por lo que permite realizar tareas más avanzadas que con CMD.
Un ejemplo de cómo PowerShell trabaja con objetos es la siguiente línea:
Get-Process | Sort-Object CPU | Select-Object Name,CPU
Este comando es una tubería de PowerShell, uno de los conceptos más importantes que se presenta con una barra vertical |(Alt GR 1) y que sirve para conectar comandos en entre sí, pasando la salida de un comando para que la utilice el siguiente comando como entrada.
Este comando en concreto realiza tres pasos:
- Get-Process: Muestra una lista de todos los procesos que se están ejecutando en el sistema en ese momento.
- Sort-Object CPU: Coge ese listado y lo ordena en función del uso de la CPU de forma ascendente (por defecto).
- Select-Object Name,CPU: Coge el último listado, reduce la lista para que únicamente se muestren las columnas nombre del proceso y el tiempo de procesador que lleva consumido.
Si quieres sacarle todo el partido a PowerShell, en HardZone hemos recopilado cuáles son los comandos básicos que debes aprender a conocer para sacarle todo el partido a esta potente herramienta de Microsoft.
Comandos esenciales de PowerShell
Información del sistema
Además de identificar el hardware del equipo, permite también conocer el historial de comandos que hemos utilizado, algo que, en ocasiones, puede ser de mucha utilidad.
- Muestra información detallada del sistema => Get-ComputerInfo
- Muestra la fecha y hora => Get-Date
- Muestra el historial de comandos =>Get-History
- Limpia el historial =>Clear-History

Navegación y archivos
A través de PowerShell podemos movernos entre carpetas y realizar operaciones básicas con archivos como crear, copiar, mover e incluso eliminar archivos.
- Muestra la carpeta actual =>Get-Location
- Cambia de carpeta =>Set-Location C:Users
- Lista archivos y carpetas =>Get-ChildItem
- Busca archivos y carpetas dentro de subdirectorios =>Get-ChildItem -Recurse
- Crea un archivo =>New-Item archivo.txt
- Crea una carpeta =>New-Item -ItemType Directory MiCarpeta
- Copia archivos =>Copy-Item origen.txt destino.txt
- Mueve archivos =>Move-Item archivo.txt C:Destino
- Renombra archivos =>Rename-Item archivo.txt nuevo.txt
- Elimina un archivo =>Remove-Item archivo.txt
- Elimina una carpeta y todo su contenido =>Remove-Item carpeta -Recurse

Buscar y filtrar
También podemos hacer búsquedas de todo tipo aplicando filtros.
- Busca texto dentro de un archivo =>Select-String «error» archivo.log
- Filtra archivos por extensión =>Get-ChildItem *.txt
- Filtra procesos según el uso de CPU =>Get-Process | Where-Object {$_.CPU -gt 100}
- Ordena servicios por estado =>Get-Service | Sort-Object Status

Ver y modificar contenido
Con los siguientes comandos, podemos ver, modificar o añadir contenido dentro de los archivos sin tener que utilizar un editor de texto como el Bloc de notas.
- Muestra el contenido de un archivo =>Get-Content archivo.txt
- Muestra las últimas 20 líneas de un archivo =>Get-Content archivo.log -Tail 20
- Reemplaza el contenido completo de un archivo =>Set-Content archivo.txt «Hola»
- Añade texto al final de un archivo =>Add-Content archivo.txt «Nueva línea»
- Vacía un archivo sin eliminarlo =>Clear-Content archivo.txt

Procesos y servicios
Estos comandos son fundamentales cuando Windows está presentando problemas con determinadas aplicaciones colgadas y con procesos activos entre otros.
- Muestra procesos activos =>Get-Process
- Cierra un proceso =>Stop-Process -Name chrome
- Abre una aplicación =>Start-Process notepad
- Muestra servicios del sistema =>Get-Service
- Reinicia un servicio =>Restart-Service spooler

Conectividad y redes
Con PowerShell podemos diagnosticar problemas con la conexión de red e incluso con la conexión a internet.
- Realiza una prueba de conectividad (ping) =>Test-Connection hardzone.es
- Muestra las direcciones IP del equipo =>Get-NetIPAddress
- Consulta información DNS =>Resolve-DnsName hardzone.es
- Comprueba si un puerto está disponible =>Test-NetConnection hardzone.es -Port 443

Ayuda
Si quieres descubrir nuevos comandos o aprender todas las opciones que nos ofrece PowerShell, necesitas utilizar los siguientes comandos.
- Lista todos los comandos disponibles =>Get-Command
- Muestra ayuda sobre un comando =>Get-Help Get-Process
- Muestra ejemplos prácticos =>Get-Help Get-Process -Examples
- Muestra propiedades y métodos de un objeto =>Get-Member
- Inspecciona las propiedades de procesos =>Get-Process | Get-Member
Dudas frecuentes sobre el uso de PowerShell en Windows
¿En qué se diferencia PowerShell del símbolo del sistema (CMD)?
A diferencia de CMD, que trabaja principalmente con texto plano, PowerShell utiliza objetos. Esto permite una manipulación de datos mucho más avanzada y una integración profunda con la administración del sistema mediante tuberías.
¿Cómo puedo ver qué procesos consumen más recursos sin usar el Administrador de tareas?
Puedes ejecutar el comando ‘Get-Process | Sort-Object CPU | Select-Object Name,CPU’. Esto listará los procesos ordenados por su uso de procesador, mostrando específicamente el nombre y el tiempo de CPU.
¿Es posible buscar archivos específicos por su formato rápidamente?
Sí, utilizando el comando ‘Get-ChildItem *.ext’ (sustituyendo ext por la extensión deseada, como .txt o .jpg). Para buscar en todas las subcarpetas, se añade el parámetro ‘-Recurse’.
¿Qué comando debo usar si una aplicación se ha quedado bloqueada?
Para forzar el cierre de una aplicación como Google Chrome, puedes utilizar ‘Stop-Process -Name chrome’. Es una forma rápida y eficaz de gestionar procesos que no responden.
¿Cómo puedo verificar mi conexión de red desde la consola?
Puedes usar ‘Test-Connection’ seguido del nombre de la web para hacer un ping, ‘Get-NetIPAddress’ para conocer tus IPs locales o ‘Test-NetConnection’ para comprobar si un puerto específico está abierto.
