Powershell

10 comandos de PowerShell que todo administrador debería dominar

Portada: 10 comandos de PowerShell imprescindibles

PowerShell es la navaja suiza de cualquier administrador de sistemas Windows. Puedes pasarte años haciendo clic en ventanas, o puedes aprender diez comandos y resolver en segundos lo que antes te llevaba minutos. Esta es la lista que me habría gustado tener cuando empecé: probada, ordenada por utilidad real y con ejemplos que puedes copiar tal cual.

1. Get-Help: el comando que enseña todos los demás

Antes de buscar en Google, pregunta a PowerShell. Con -Examples te muestra ejemplos de uso listos para adaptar:

Get-Help Get-Service -Examples
Update-Help   # descarga la ayuda completa (ejecutar como administrador)

2. Get-Process: qué se está comiendo tu CPU y tu RAM

# Los 10 procesos que más memoria consumen
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 Name, Id, @{N='RAM(MB)';E={[math]::Round($_.WorkingSet/1MB)}}

Combínalo con Stop-Process -Id <PID> para cerrar un proceso bloqueado sin abrir el Administrador de tareas.

3. Get-Service y Restart-Service

# Ver servicios detenidos que deberían arrancar solos
Get-Service | Where-Object {$_.StartType -eq 'Automatic' -and $_.Status -ne 'Running'}

# Reiniciar el spooler de impresión (el clásico)
Restart-Service -Name Spooler

4. Test-NetConnection: ping, telnet y traceroute en uno

# ¿Responde el servidor y está abierto el puerto 443?
Test-NetConnection www.google.com -Port 443

# Traceroute integrado
Test-NetConnection 8.8.8.8 -TraceRoute

Desde que existe este cmdlet ya no hace falta habilitar el cliente Telnet solo para comprobar puertos.

5. Get-WinEvent: leer el Visor de eventos sin abrirlo

# Últimos 20 errores del registro de sistema
Get-WinEvent -FilterHashtable @{LogName='System'; Level=2} -MaxEvents 20 | Format-Table TimeCreated, Id, Message -Wrap

6. Get-ChildItem: encontrar archivos gigantes

# Archivos de más de 500 MB en todo el disco C:
Get-ChildItem C:\ -Recurse -File -ErrorAction SilentlyContinue | Where-Object Length -gt 500MB | Sort-Object Length -Descending | Select-Object FullName, @{N='GB';E={[math]::Round($_.Length/1GB,2)}}

7. Export-Csv: convertir cualquier salida en un informe

Get-Service | Export-Csv C:\Temp\servicios.csv -NoTypeInformation -Encoding UTF8

Cualquier comando de esta lista se puede exportar igual. Es la forma más rápida de generar documentación o evidencias para una auditoría.

8. Get-HotFix: ¿está parcheado este equipo?

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5

9. Invoke-Command: ejecutar en equipos remotos

# Ejecutar un comando en tres servidores a la vez
Invoke-Command -ComputerName SRV01,SRV02,SRV03 -ScriptBlock { Get-Service -Name W32Time }

Requiere WinRM habilitado (Enable-PSRemoting en el equipo remoto). Una vez configurado, administrar diez servidores cuesta lo mismo que administrar uno.

10. Get-Command: descubrir lo que no sabes que existe

# ¿Qué cmdlets hay relacionados con DNS?
Get-Command *dns*

Conclusión

No hace falta memorizarlos todos hoy. Guarda esta página en favoritos, usa dos o tres esta semana y verás cómo en un mes forman parte de tu rutina. Si solo te llevas uno, que sea Get-Help: es el que convierte los otros nueve en cientos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *