Cmd-let y otras cosas
Vamos a hacer la explicación definitiva sobre los cmdlets de PowerShell y toda la “nomenclatura mental” que necesitas para entender cualquier cmdlet, incluso uno que nunca hayas visto.
Esto es clave porque PowerShell no es un “lenguaje de comandos”, sino un lenguaje de objetos, y cuando entiendes su estructura, puedes leer cualquier comando como si fuera castellano.
Voy a explicártelo de forma clara, ordenada y con ejemplos prácticos.
🟦 1. La regla de oro: todos los cmdlets siguen el patrón Verbo‑Sustantivo
PowerShell está diseñado para ser predecible.
Todos los cmdlets siguen esta forma:
Código
Verbo-Sustantivo
Ejemplos:
Get-Service→ “Obtener servicios”Set-Service→ “Configurar servicios”Start-Service→ “Iniciar servicios”Stop-Process→ “Detener procesos”Get-Item→ “Obtener un elemento”Set-Item→ “Modificar un elemento”Remove-Item→ “Eliminar un elemento”
Esto significa que si conoces los verbos, puedes adivinar cualquier cmdlet.
🟦 2. Los verbos más importantes (la clave para entender todo)
Aquí tienes los verbos que más se usan, con su significado real:
| Verbo | Significado |
|---|---|
| Get | Obtener, listar, leer |
| Set | Configurar, modificar |
| New | Crear |
| Remove | Eliminar |
| Start | Iniciar |
| Stop | Detener |
| Restart | Reiniciar |
| Enable | Activar |
| Disable | Desactivar |
| Invoke | Ejecutar |
| Test | Comprobar si algo existe o funciona |
| Add | Añadir |
| Clear | Vaciar |
| Copy | Copiar |
| Move | Mover |
| Write | Escribir salida |
Si ves un cmdlet nuevo, solo tienes que leerlo así:
Código
Verbo + Sustantivo = Acción + Objeto
Ejemplo:
Invoke-Command = “Ejecutar un comando”.
🟦 3. Los sustantivos más comunes
Los sustantivos indican qué tipo de objeto estás manipulando:
| Sustantivo | Qué representa |
|---|---|
| Service | Servicios |
| Process | Procesos |
| Item | Archivos, carpetas, claves del registro |
| Content | Contenido de archivos |
| EventLog | Logs del sistema |
| ScheduledTask | Tareas programadas |
| NetFirewallRule | Reglas del firewall |
| LocalUser | Usuarios locales |
| LocalGroup | Grupos locales |
| CimInstance | Objetos WMI |
| PSSession | Sesiones remotas |
Ejemplo:
Get-LocalUser → “Obtener usuarios locales”.
🟦 4. El pipeline | (la joya de PowerShell)
En Linux, el pipeline pasa texto. En PowerShell, pasa objetos completos.
Ejemplo:
powershell
Get-Service | Where-Object { $_.Status -eq "Running" }
Traducción:
Get-Service→ obtén todos los servicios.|→ pásalos uno por uno.Where-Object→ filtra según una condición.$_→ cada servicio individual.$_.Status→ propiedad “Status” del servicio.
🟦 5. Where-Object explicado de forma sencilla
Where-Object sirve para filtrar.
Formato:
powershell
Where-Object { condición }
Ejemplos:
powershell
Where-Object { $_.Name -eq "sshd" }
Where-Object { $_.Status -eq "Running" }
Where-Object { $_.DisplayName -match "Update" }
🟦 6. ¿Qué es $_?
$_ significa:
“El objeto actual que está pasando por el pipeline”.
Si haces:
powershell
Get-Process | Where-Object { $_.CPU -gt 10 }
$_ es cada proceso.
🟦 7. Operadores importantes
| Operador | Significado |
|---|---|
-eq | Igual |
-ne | No igual |
-gt | Mayor que |
-lt | Menor que |
-match | Coincide con expresión regular |
-like | Coincide con comodines (*texto*) |
-contains | Contiene un valor |
-in | Está dentro de una lista |
Ejemplos:
powershell
$_.Name -eq "sshd"
$_.Status -ne "Running"
$_.DisplayName -match "Diag|Telemetry"
$_.Name -like "*update*"
🟦 8. Select-Object (para elegir propiedades)
Ejemplo:
powershell
Get-Service | Select-Object Name, Status
🟦 9. Sort-Object (ordenar)
powershell
Get-Process | Sort-Object CPU -Descending
🟦 10. Format-Table y Format-List
powershell
Get-Service | Format-Table
Get-Service | Format-List *
🟦 11. Cómo leer cualquier cmdlet aunque no lo conozcas
Ejemplo:
powershell
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" }
Traducción:
- Get → obtener
- NetFirewallRule → reglas del firewall
- Where-Object → filtrar
- $_.Enabled -eq «True» → reglas activas
Otro ejemplo:
powershell
New-LocalUser -Name "David"
- New → crear
- LocalUser → usuario local
- -Name → parámetro
🟦 12. Ejercicio práctico para que lo domines
📌 Ejercicio 1 — Lista solo los servicios que están detenidos
powershell
Get-Service | Where-Object { $_.Status -eq "Stopped" }
📌 Ejercicio 2 — Lista los procesos que consumen más de 50 MB
powershell
Get-Process | Where-Object { $_.WorkingSet -gt 50MB }
📌 Ejercicio 3 — Lista las tareas programadas relacionadas con Windows Update
powershell
Get-ScheduledTask | Where-Object { $_.TaskName -match "Update" }
los cmdlets de ayuda, descubrimiento, introspección y exploración de PowerShell.
Estos son la clave para dominar PowerShell, porque te permiten aprender cualquier cmdlet sin buscar en Google.
Vamos a verlos todos, explicados con claridad y con ejemplos prácticos.
🟦 1. Get-Command — El “Google” interno de PowerShell
Sirve para descubrir qué comandos existen.
✔️ Ver todos los cmdlets disponibles
powershell
Get-Command
✔️ Buscar cmdlets por verbo
powershell
Get-Command -Verb Get
✔️ Buscar cmdlets por sustantivo
powershell
Get-Command -Noun Service
✔️ Buscar por palabra clave
powershell
Get-Command *firewall*
✔️ Ver qué comandos pertenecen a un módulo
powershell
Get-Command -Module Microsoft.PowerShell.Management
Este es el cmdlet más importante para aprender PowerShell.
🟦 2. Get-Help — La documentación integrada
Es la ayuda oficial, como el man de Linux pero más potente.
✔️ Ver ayuda básica
powershell
Get-Help Get-Service
✔️ Ver ejemplos (muy útil)
powershell
Get-Help Get-Service -Examples
✔️ Ver ayuda detallada
powershell
Get-Help Get-Service -Detailed
✔️ Ver ayuda completa
powershell
Get-Help Get-Service -Full
✔️ Ver ayuda online
powershell
Get-Help Get-Service -Online
🟦 3. Get-Member — El cmdlet para entender objetos
PowerShell trabaja con objetos, no texto. Get-Member te dice:
- qué propiedades tiene un objeto
- qué métodos tiene
- qué tipo de objeto es
✔️ Ejemplo: ver propiedades de un servicio
powershell
Get-Service | Get-Member
Verás cosas como:
- Name
- Status
- DisplayName
- ServiceType
- StartType
✔️ Ejemplo: ver propiedades de un proceso
powershell
Get-Process | Get-Member
Esto es oro puro para entender qué puedes hacer con un objeto.
🟦 4. Get-Module — Ver módulos instalados
Los módulos son “paquetes” de cmdlets.
✔️ Ver módulos cargados
powershell
Get-Module
✔️ Ver módulos instalados
powershell
Get-Module -ListAvailable
✔️ Ver cmdlets dentro de un módulo
powershell
Get-Command -Module NetSecurity
🟦 5. Show-Command — Interfaz gráfica para entender un cmdlet
Este es poco conocido pero muy útil.
✔️ Abre una ventana GUI con los parámetros del cmdlet
powershell
Show-Command Get-Service
Te muestra:
- parámetros
- tipos
- valores
- ejemplos
Ideal para aprender visualmente.
🟦 6. Measure-Object — Medir objetos
Sirve para:
- contar
- sumar
- calcular medias
Ejemplo:
powershell
Get-Process | Measure-Object
🟦 7. Out-GridView — Ver datos en tabla interactiva
Si tienes Windows con interfaz gráfica:
powershell
Get-Process | Out-GridView
Te abre una tabla filtrable, ordenable, muy útil.
🟦 8. Select-Object — Elegir propiedades
Ejemplo:
powershell
Get-Service | Select-Object Name, Status
🟦 9. Format-List y Format-Table — Dar formato a la salida
Lista detallada:
powershell
Get-Service | Format-List *
Tabla:
powershell
Get-Service | Format-Table Name, Status
🟦 10. Get-Alias — Ver alias (atajos)
PowerShell tiene alias tipo Linux:
powershell
Get-Alias
Ejemplos:
ls→Get-ChildItemcat→Get-Contentps→Get-Process
🟦 11. Get-History — Ver historial de comandos
powershell
Get-History
🟦 12. Get-PSDrive — Ver unidades especiales
PowerShell tiene unidades como:
HKLM:→ RegistroEnv:→ Variables de entornoCert:→ Certificados
powershell
Get-PSDrive
🟦 13. Get-PSProvider — Ver proveedores del sistema
powershell
Get-PSProvider
Te dice qué “sistemas” puedes navegar como si fueran carpetas.
🟦 14. Get-TypeData — Ver tipos de objetos
Muy útil para entender cómo PowerShell formatea objetos.
🟦 15. Update-Help — Actualizar la ayuda oficial
powershell
Update-Help
🟦 RESUMEN: Los cmdlets que te ayudan a entender PowerShell
| Cmdlet | Para qué sirve |
|---|---|
| Get-Command | Descubrir comandos |
| Get-Help | Ver documentación |
| Get-Member | Ver propiedades y métodos de objetos |
| Get-Module | Ver módulos |
| Show-Command | Ver parámetros en GUI |
| Get-Alias | Ver alias |
| Get-History | Ver historial |
| Measure-Object | Medir datos |
| Select-Object | Elegir propiedades |
| Format-Table / Format-List | Formatear salida |
| Out-GridView | Ver datos en tabla interactiva |
| Get-PSDrive | Ver unidades especiales |
| Get-PSProvider | Ver proveedores del sistema |
Con estos, puedes aprender cualquier cmdlet del mundo, incluso uno que no conoces.
Te preparo el mapa mental definitivo de los cmdlets que sirven para entender PowerShell, descubrir comandos, ver cómo funcionan, explorar objetos y aprender cualquier cmdlet sin buscar en Google.
Este es el “kit de supervivencia” de PowerShell. Si dominas estos, dominas el lenguaje entero.
🧠 MAPA MENTAL — Cmdlets para entender PowerShell
Voy a organizarlos en 6 bloques, cada uno con su función clara.
🟦 1. Descubrir comandos
(¿Qué cmdlets existen? ¿Cómo se llaman? ¿Qué puedo hacer?)
🔹 Get-Command — El buscador universal
Sirve para encontrar cualquier comando instalado en tu sistema.
Ejemplos:
powershell
Get-Command
Get-Command -Verb Get
Get-Command -Noun Service
Get-Command *firewall*
Get-Command -Module Microsoft.PowerShell.Management
Es el primer cmdlet que usas cuando no sabes qué cmdlet usar.
🟦 2. Ver ayuda y documentación
(¿Qué hace este cmdlet? ¿Qué parámetros tiene? ¿Cómo se usa?)
🔹 Get-Help — La documentación integrada
Es el equivalente a man en Linux, pero más potente.
powershell
Get-Help Get-Service
Get-Help Get-Service -Examples
Get-Help Get-Service -Detailed
Get-Help Get-Service -Full
Get-Help Get-Service -Online
🔹 Update-Help — Actualizar la ayuda
powershell
Update-Help
🟦 3. Explorar objetos
(PowerShell trabaja con objetos, no texto. Esto es clave.)
🔹 Get-Member — Ver propiedades y métodos
Es el cmdlet más importante para entender qué contiene un objeto.
powershell
Get-Service | Get-Member
Get-Process | Get-Member
Te muestra:
- propiedades
- métodos
- tipo de objeto
Es la herramienta para “abrir” un objeto y ver qué tiene dentro.
🟦 4. Explorar módulos y su contenido
(¿Qué módulos tengo? ¿Qué comandos trae cada uno?)
🔹 Get-Module — Ver módulos cargados o instalados
powershell
Get-Module
Get-Module -ListAvailable
🔹 Import-Module — Cargar un módulo
powershell
Import-Module NetSecurity
🔹 Get-Command -Module — Ver comandos dentro de un módulo
powershell
Get-Command -Module NetSecurity
🟦 5. Explorar el entorno PowerShell
(alias, proveedores, unidades, historial…)
🔹 Get-Alias — Ver alias (atajos tipo Linux)
powershell
Get-Alias
Ejemplos:
ls→Get-ChildItemcat→Get-Contentps→Get-Process
🔹 Get-PSDrive — Ver unidades especiales
powershell
Get-PSDrive
Incluye:
C:→ discoHKLM:→ registroEnv:→ variables de entornoCert:→ certificados
🔹 Get-PSProvider — Ver proveedores
powershell
Get-PSProvider
Te dice qué “sistemas” puedes navegar como carpetas.
🔹 Get-History — Ver historial de comandos
powershell
Get-History
🟦 6. Explorar y manipular datos
(para entender mejor la salida de otros cmdlets)
🔹 Select-Object — Elegir propiedades
powershell
Get-Service | Select-Object Name, Status
🔹 Sort-Object — Ordenar
powershell
Get-Process | Sort-Object CPU -Descending
🔹 Measure-Object — Contar, sumar, calcular
powershell
Get-Process | Measure-Object
🔹 Format-Table / Format-List — Dar formato
powershell
Get-Service | Format-Table
Get-Service | Format-List *
🔹 Out-GridView — Tabla interactiva (si tienes GUI)
powershell
Get-Process | Out-GridView
🟩 RESUMEN VISUAL (tu mapa mental)
Código
┌──────────────────────────────────────────────┐
│ 1. Descubrir comandos │
│ → Get-Command │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 2. Ver ayuda │
│ → Get-Help │
│ → Update-Help │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 3. Explorar objetos │
│ → Get-Member │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 4. Explorar módulos │
│ → Get-Module │
│ → Import-Module │
│ → Get-Command -Module │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 5. Explorar entorno PowerShell │
│ → Get-Alias │
│ → Get-PSDrive │
│ → Get-PSProvider │
│ → Get-History │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 6. Explorar datos │
│ → Select-Object │
│ → Sort-Object │
│ → Measure-Object │
│ → Format-Table / Format-List │
│ → Out-GridView │
└──────────────────────────────────────────────┘
Esta es una de las diferencias más importantes entre Windows y Linux, y entenderla te da una visión muy clara de cómo funciona la administración en Windows.
Voy a explicártelo con precisión, pero de forma muy clara y práctica, para que entiendas:
- qué es el usuario Administrador
- qué significa pertenecer al grupo Administrators
- qué diferencias hay con root en Linux
- qué cosas puede hacer uno y no el otro
- cómo saber si tú eres administrador
- qué cosas ni siquiera el Administrador puede hacer
- y cómo se hacen esas cosas especiales
Vamos paso a paso.
🟦 1. En Windows hay dos conceptos distintos
Esto es clave:
✔️ 1. El usuario “Administrador” (la cuenta oculta)
- Es una cuenta local llamada Administrator.
- Está deshabilitada por defecto en Windows 10/11.
- Tiene permisos muy altos, pero no es root.
- No se usa normalmente por seguridad.
✔️ 2. El grupo “Administrators”
- Es un grupo que contiene usuarios con permisos administrativos.
- Si tu usuario pertenece a este grupo, eres administrador del sistema.
- Esto es lo que se usa en el día a día.
👉 Tú no necesitas usar la cuenta Administrator. Con pertenecer al grupo Administrators ya eres admin.
🟦 2. ¿Cómo saber si tu usuario pertenece al grupo Administrators?
En PowerShell:
powershell
whoami /groups
Si ves:
Código
BUILTIN\Administrators
→ Eres administrador.
O más directo:
powershell
Get-LocalGroupMember Administrators
Si aparece:
Código
David
→ Eres administrador.
🟦 3. ¿Ser administrador en Windows es como ser root en Linux?
NO. Y esta es una diferencia muy importante.
✔️ En Linux:
- root = poder absoluto
- no hay restricciones
- no hay UAC
- no hay permisos denegados
- puedes borrar el sistema entero sin preguntar
✔️ En Windows:
Incluso siendo administrador:
- hay cosas que no puedes hacer directamente
- hay carpetas protegidas
- hay permisos del sistema que no puedes modificar
- hay procesos protegidos
- hay archivos propiedad de SYSTEM
- hay claves del registro inaccesibles
- hay recursos bloqueados por UAC
👉 El administrador de Windows NO es root.
🟦 4. ¿Qué puede hacer el Administrador que un usuario normal no puede?
✔️ Instalar software
✔️ Modificar el registro
✔️ Cambiar permisos de archivos
✔️ Administrar servicios
✔️ Administrar firewall
✔️ Crear usuarios y grupos
✔️ Acceder a carpetas del sistema
✔️ Ejecutar PowerShell como administrador
✔️ Configurar políticas de seguridad
🟦 5. ¿Qué NO puede hacer un administrador (pero root sí)?
Aquí viene lo interesante.
❌ 1. No puede acceder a archivos propiedad de SYSTEM
Ejemplo:
Código
C:\System Volume Information
Ni siquiera como admin.
❌ 2. No puede matar procesos protegidos
Ejemplo:
lsass.execsrss.exewininit.exe
Windows los protege.
❌ 3. No puede modificar permisos de ciertos recursos críticos
Ejemplo:
- partes del registro
- archivos del kernel
- drivers en uso
❌ 4. No puede desactivar UAC completamente sin romper cosas
UAC es parte del modelo de seguridad moderno.
❌ 5. No puede acceder a sesiones de otros usuarios sin herramientas especiales
En Linux root sí puede.
❌ 6. No puede modificar archivos del sistema en uso
Windows bloquea archivos críticos.
🟦 6. ¿Cómo se hacen esas cosas que ni el administrador puede hacer?
Aquí entran técnicas avanzadas:
✔️ 1. Ejecutar como SYSTEM
SYSTEM es el “root real” de Windows.
Puedes abrir una consola como SYSTEM con:
powershell
psexec -i -s cmd.exe
O en PowerShell:
powershell
psexec -i -s powershell.exe
(PsExec es parte de Sysinternals)
✔️ 2. Tomar posesión de archivos protegidos
powershell
takeown /f "C:\System Volume Information" /r /d y
icacls "C:\System Volume Information" /grant David:F /t
✔️ 3. Usar el modo seguro
Permite modificar archivos bloqueados.
✔️ 4. Usar WinRE (entorno de recuperación)
Acceso completo al sistema sin restricciones.
🟦 7. ¿Necesitas usar SYSTEM en tu día a día?
No. Para un usuario normal o administrador:
👉 Pertenecer al grupo Administrators es suficiente para todo lo que necesitas.
SYSTEM solo se usa para:
- reparar sistemas
- modificar archivos protegidos
- tareas forenses
- manipular permisos del kernel
- eliminar malware avanzado
- modificar el registro profundo
🟦 8. ¿Necesitas hacer algo como “sudo” en Windows?
Sí, pero es diferente.
✔️ En Linux:
Código
sudo comando
✔️ En Windows:
Usas UAC (Control de cuentas de usuario).
Ejemplo:
- Abrir PowerShell como administrador
- Ejecutar un programa con “Run as administrator”
- Usar
Start-Processcon elevación:
powershell
Start-Process powershell -Verb RunAs
Esto es el equivalente a sudo.
🟦 9. Resumen claro
| Concepto | Linux | Windows |
|---|---|---|
| Superusuario | root | SYSTEM |
| Admin normal | sudo | Administrators |
| Cuenta especial | root | Administrator (oculta) |
| Elevación | sudo | UAC / RunAs |
| Poder absoluto | root | SYSTEM (no Administrador) |
Vamos a entrar a fondo en todos esos puntos:
- qué es UAC,
- qué diferencia hay entre Administrador, SYSTEM y root,
- qué puede hacer cada uno,
- qué no puede hacer,
- cómo saber tus privilegios,
- cómo elevar permisos,
- y cómo hacer tareas que ni el Administrador puede hacer.
Te lo explico de forma clara, ordenada y con ejemplos prácticos.
🟦 1. ¿Qué es UAC? (User Account Control)
UAC es Control de Cuentas de Usuario, el sistema que hace que Windows te pregunte:
“¿Quieres permitir que esta aplicación haga cambios en el dispositivo?”
Es el equivalente conceptual a sudo, pero funciona distinto.
✔️ ¿Qué hace UAC realmente?
- Evita que incluso un usuario administrador ejecute todo con permisos máximos.
- Obliga a “elevar privilegios” cuando haces algo sensible.
- Protege el sistema de malware que intenta ejecutarse con permisos de administrador.
- Separa dos niveles dentro del mismo usuario:
- token estándar (lo que usas normalmente)
- token elevado (cuando aceptas el aviso de UAC)
✔️ ¿Por qué existe?
Porque en Windows XP los usuarios iban siempre como administradores y era un desastre de seguridad.
✔️ ¿Qué NO es UAC?
- No es un sustituto de permisos.
- No es un firewall.
- No es un antivirus.
Es simplemente un mecanismo de elevación controlada.
🟦 2. ¿Qué diferencia hay entre Administrador, SYSTEM y root?
Aquí está la clave.
🟩 1. Usuario Administrador (Administrator)
- Es una cuenta local especial.
- Está deshabilitada por defecto.
- Tiene permisos muy altos, pero no absolutos.
- No es root.
🟩 2. Grupo Administrators
- Cualquier usuario dentro de este grupo es “administrador”.
- Tú eres David, miembro de Administrators.
- Esto te da permisos elevados, pero no totales.
🟩 3. SYSTEM
- Es el “root real” de Windows.
- Tiene más permisos que cualquier usuario, incluso Administrator.
- Es una cuenta interna del sistema operativo.
- No puedes iniciar sesión como SYSTEM directamente.
🟩 4. root (Linux)
- Puede hacer absolutamente todo.
- No tiene restricciones.
- Puede borrar el kernel, matar cualquier proceso, leer cualquier archivo.
✔️ Comparación rápida
| Nivel | Linux | Windows |
|---|---|---|
| Superusuario absoluto | root | SYSTEM |
| Administrador normal | sudo | Administrators |
| Cuenta especial | root | Administrator |
🟦 3. ¿Qué puede hacer un administrador en Windows?
Si perteneces al grupo Administrators, puedes:
- Instalar software
- Modificar el registro
- Administrar servicios
- Administrar firewall
- Crear usuarios y grupos
- Cambiar permisos de archivos
- Acceder a carpetas del sistema
- Ejecutar PowerShell como administrador
- Configurar políticas de seguridad
- Usar herramientas de administración remota
Es decir: puedes administrar el sistema completamente.
🟦 4. ¿Qué NO puede hacer un administrador (pero root sí)?
Aquí viene lo interesante.
❌ 1. No puede acceder a archivos propiedad de SYSTEM
Ejemplo:
Código
C:\System Volume Information
Ni siquiera como administrador.
❌ 2. No puede matar procesos protegidos
Ejemplos:
lsass.execsrss.exewininit.exe
Windows los protege porque matarlos rompe el sistema.
❌ 3. No puede modificar permisos de ciertos recursos críticos
Ejemplo:
- partes del registro
- archivos del kernel
- drivers en uso
❌ 4. No puede desactivar UAC completamente sin romper cosas
Windows moderno depende de UAC.
❌ 5. No puede acceder a sesiones de otros usuarios sin herramientas especiales
En Linux root sí puede.
❌ 6. No puede modificar archivos del sistema en uso
Windows bloquea archivos críticos.
🟦 5. ¿Cómo se hacen esas cosas que ni el administrador puede hacer?
Aquí entran técnicas avanzadas.
🟩 1. Ejecutar como SYSTEM (el “root” de Windows)
Necesitas PsExec (Sysinternals).
Ejemplo:
powershell
psexec -i -s cmd.exe
O:
powershell
psexec -i -s powershell.exe
Esto abre una consola como SYSTEM.
Con SYSTEM puedes:
- acceder a carpetas protegidas
- modificar permisos del kernel
- matar procesos protegidos
- editar partes del registro inaccesibles
🟩 2. Tomar posesión de archivos protegidos
Ejemplo:
powershell
takeown /f "C:\System Volume Information" /r /d y
icacls "C:\System Volume Information" /grant David:F /t
Esto te da acceso a carpetas normalmente inaccesibles.
🟩 3. Usar el modo seguro
Permite modificar archivos bloqueados.
🟩 4. Usar WinRE (entorno de recuperación)
Acceso completo al sistema sin restricciones.
🟦 6. ¿Cómo saber si eres administrador?
✔️ Método 1 — PowerShell
powershell
whoami /groups
Busca:
Código
BUILTIN\Administrators
✔️ Método 2 — Ver miembros del grupo Administrators
powershell
Get-LocalGroupMember Administrators
✔️ Método 3 — Panel de control
Cuentas de usuario → Tu cuenta → “Administrador”.
🟦 7. ¿Cómo elevar permisos (equivalente a sudo)?
En Windows no hay sudo, pero hay UAC.
✔️ 1. Ejecutar PowerShell como administrador
Botón derecho → “Ejecutar como administrador”.
✔️ 2. Elevar desde PowerShell
powershell
Start-Process powershell -Verb RunAs
✔️ 3. Elevar un comando específico
powershell
Start-Process notepad.exe -Verb RunAs
✔️ 4. Elevar un script
powershell
Start-Process powershell -Verb RunAs -ArgumentList "-File C:\script.ps1"
🟦 8. ¿Debes activar la cuenta Administrator?
No. No aporta nada que no tengas ya como miembro de Administrators.
Solo se usa para:
- recuperación
- auditoría
- entornos corporativos
- tareas muy específicas
🟦 9. Resumen claro y directo
- Tú eres administrador porque perteneces al grupo Administrators.
- Eso te da casi todos los permisos del sistema.
- Pero no eres SYSTEM, que es el “root” real de Windows.
- UAC es el sistema que controla la elevación de privilegios.
- Para tareas extremas, puedes usar SYSTEM con PsExec.
- Windows tiene más capas de seguridad que Linux, por eso incluso el administrador tiene límites.
1. ¿Qué es PsExec realmente?
PsExec es una herramienta de la suite Sysinternals, creada por Mark Russinovich (actual CTO de Azure). Sysinternals es propiedad de Microsoft, pero no forma parte de Windows.
👉 PsExec no viene preinstalado 👉 PsExec no está incluido en PowerShell 👉 PsExec hay que descargarlo manualmente
Pero es 100% oficial y segura.
🟦 2. ¿Para qué sirve PsExec?
PsExec permite:
- ejecutar comandos en remoto
- ejecutar procesos como SYSTEM
- abrir una consola como SYSTEM
- ejecutar procesos en otra sesión
- ejecutar comandos en otra máquina sin instalar nada allí
Es una herramienta de administración avanzada.
🟦 3. ¿Dónde se descarga PsExec?
De la web oficial de Microsoft Sysinternals:
Código
https://learn.microsoft.com/sysinternals/
El paquete se llama PsTools, y dentro viene PsExec.
🟦 4. ¿Cómo se usa PsExec para abrir una consola como SYSTEM?
Una vez descargado:
powershell
psexec -i -s cmd.exe
O para PowerShell:
powershell
psexec -i -s powershell.exe
Esto abre una consola con permisos SYSTEM, que es el “root” real de Windows.
🟦 5. ¿Por qué PsExec no viene con Windows?
Por seguridad.
Si PsExec viniera preinstalado:
- malware podría usarlo para elevar privilegios
- cualquier usuario podría abrir SYSTEM sin restricciones
- sería demasiado fácil romper el sistema
Por eso Microsoft lo distribuye como herramienta separada, para administradores avanzados.
🟦 6. ¿Hay alguna alternativa integrada en Windows?
Sí, pero ninguna tan directa como PsExec.
✔️ 1. Task Scheduler (Programador de tareas)
Permite ejecutar tareas como SYSTEM:
powershell
schtasks /run /tn "TareaComoSYSTEM"
✔️ 2. Servicios
Puedes crear un servicio que se ejecute como SYSTEM.
✔️ 3. WinRE / Modo seguro
Permite modificar archivos protegidos.
✔️ 4. Windows Installer
Algunas instalaciones elevan a SYSTEM automáticamente.
Pero ninguna es tan cómoda como PsExec.
🟦 7. ¿PsExec es necesario para un usuario normal?
No.
Para ti, como administrador de tu VM:
👉 No necesitas PsExec para nada del día a día.
Solo sirve para:
- acceder a carpetas ultra protegidas
- matar procesos protegidos
- modificar permisos del kernel
- hacer forense
- eliminar malware avanzado
- depurar problemas del sistema
🟦 8. ¿PsExec es seguro?
Sí, si lo descargas de Microsoft.
Pero:
- algunos antivirus lo detectan como “herramienta potencialmente peligrosa”
- porque puede usarse para elevar privilegios
- no porque sea malware
Es como sudo en Linux: poderoso, pero peligroso si se usa mal.
🟦 9. Resumen claro
| Herramienta | ¿Viene con Windows? | ¿Para qué sirve? |
|---|---|---|
| PsExec | ❌ No | Ejecutar como SYSTEM, remoto, depuración |
| PowerShell | ✔️ Sí | Administración general |
| UAC | ✔️ Sí | Elevación de privilegios |
| Administrador | ✔️ Sí | Usuario con permisos altos |
| SYSTEM | ✔️ Sí | Superusuario interno (root) |
Vamos a aclarar qué son esos usuarios especiales de Windows (NETWORK SERVICE, LOCAL SERVICE, TrustedInstaller), cómo se relacionan con el Administrador, qué permisos tienen y cómo encajan en el modelo de seguridad de Windows. Esta parte es muy importante porque Windows funciona con cuentas internas del sistema, no solo con usuarios humanos.
Te lo explico de forma clara, profunda y con ejemplos.
🟦 1. Lo primero: estos NO son usuarios normales
Los usuarios:
- NETWORK SERVICE
- LOCAL SERVICE
- TrustedInstaller
NO son usuarios humanos. NO aparecen en la pantalla de login. NO tienen contraseña. NO pertenecen al grupo Administrators.
Son cuentas internas del sistema operativo creadas para ejecutar servicios con permisos específicos.
🟦 2. ¿El Administrador “tiene” estos usuarios?
No. No funcionan así.
👉 El Administrador NO “tiene” los permisos de estas cuentas. 👉 Estas cuentas NO pertenecen al grupo Administrators. 👉 Estas cuentas tienen permisos diferentes, ni más ni menos, sino distintos.
Cada una está diseñada para un propósito concreto.
🟦 3. ¿Qué permisos tiene cada una?
Vamos una por una.
🟩 3.1. LOCAL SERVICE
Nombre interno: NT AUTHORITY\LOCAL SERVICE
✔️ Permisos:
- Muy limitados
- Solo acceso local
- No tiene permisos de administrador
- No puede modificar el sistema
- No puede acceder a archivos protegidos
✔️ ¿Para qué se usa?
Servicios que necesitan acceso local pero no deben tener privilegios altos.
Ejemplos:
- DHCP Client
- Windows Time
🟩 3.2. NETWORK SERVICE
Nombre interno: NT AUTHORITY\NETWORK SERVICE
✔️ Permisos:
- Igual que LOCAL SERVICE, pero
- Puede autenticarse en la red como la máquina
- Permisos limitados en el sistema local
✔️ ¿Para qué se usa?
Servicios que necesitan acceso a la red pero no deben tener permisos de administrador.
Ejemplos:
- Servicios de red
- Servicios web internos
🟩 3.3. TrustedInstaller
Nombre interno: NT SERVICE\TrustedInstaller
Este es el más interesante.
✔️ Permisos:
- Más permisos que el Administrador
- Más permisos que SYSTEM en algunas carpetas
- Control total sobre:
- archivos del sistema
- actualizaciones
- componentes de Windows
- WinSxS
- Windows Update
✔️ ¿Para qué se usa?
Para proteger archivos críticos del sistema.
Ejemplos:
C:\Windows\System32C:\Windows\WinSxS- Archivos del kernel
- DLLs del sistema
✔️ ¿Por qué existe?
Para evitar que incluso un administrador rompa Windows sin querer.
🟦 4. ¿Quién tiene más permisos? (Jerarquía real)
Aquí tienes la jerarquía de permisos en Windows:
Código
TrustedInstaller
↓
SYSTEM
↓
Administrators
↓
Usuarios normales
✔️ TrustedInstaller
→ Máximo nivel para archivos del sistema.
✔️ SYSTEM
→ Máximo nivel general del sistema operativo.
✔️ Administrators
→ Permisos muy altos, pero limitados por UAC y por TrustedInstaller.
✔️ Usuarios normales
→ Permisos limitados.
🟦 5. ¿Puede el Administrador hacer lo mismo que SYSTEM o TrustedInstaller?
No.
❌ El Administrador NO puede:
- modificar archivos propiedad de TrustedInstaller
- borrar DLLs del sistema
- modificar WinSxS
- matar procesos protegidos
- acceder a carpetas ultra protegidas
- modificar claves del registro protegidas
✔️ Pero puede hacerlo si:
- toma posesión del archivo
- cambia permisos
- usa SYSTEM (con PsExec)
- usa WinRE
- usa modo seguro
🟦 6. ¿Cómo ver estos usuarios en tu sistema?
✔️ Verlos en permisos de un archivo
Botón derecho → Propiedades → Seguridad → Avanzado.
Verás:
- SYSTEM
- Administrators
- TrustedInstaller
- LOCAL SERVICE
- NETWORK SERVICE
✔️ Verlos en PowerShell
powershell
Get-LocalUser
No los verás porque no son usuarios locales, sino cuentas internas.
Para verlos en un archivo:
powershell
Get-Acl C:\Windows\System32
🟦 7. ¿Cómo tomar control de archivos de TrustedInstaller?
Ejemplo:
powershell
takeown /f C:\Windows\System32\archivo.dll
icacls C:\Windows\System32\archivo.dll /grant David:F
Pero no se recomienda, porque puedes romper Windows.
🟦 8. ¿Cómo actuar como SYSTEM?
Con PsExec:
powershell
psexec -i -s powershell.exe
Comprueba:
powershell
whoami
Verás:
Código
nt authority\system
🟦 9. ¿Cómo actuar como TrustedInstaller?
Hay herramientas como:
- NSudo
- PowerRun
- RunAsTI
Pero esto ya es nivel muy avanzado.
🟦 10. Resumen claro
| Cuenta | Tipo | Permisos | Uso |
|---|---|---|---|
| TrustedInstaller | Servicio | Máximos sobre archivos del sistema | Windows Update, WinSxS |
| SYSTEM | Cuenta interna | Máximos generales | Kernel, servicios críticos |
| Administrators | Grupo | Muy altos, pero limitados | Administración normal |
| NETWORK SERVICE | Cuenta interna | Limitados + acceso a red | Servicios de red |
| LOCAL SERVICE | Cuenta interna | Muy limitados | Servicios locales |
1. SYSTEM y TrustedInstaller NO son lo mismo
Y tampoco funcionan igual.
Piensa en la jerarquía así:
Código
TrustedInstaller → Máximo nivel sobre archivos del sistema
SYSTEM → Máximo nivel general del sistema operativo
Administrators → Nivel alto, pero limitado por UAC y permisos
Usuarios normales → Nivel básico
✔️ SYSTEM = “root” general
Puede hacer casi todo:
- matar procesos protegidos
- acceder a claves del registro ultra protegidas
- manipular servicios críticos
- leer archivos del kernel
✔️ TrustedInstaller = “dueño” de Windows
Tiene permisos superiores a SYSTEM pero solo sobre archivos del sistema:
C:\Windows\System32C:\Windows\WinSxS- DLLs del sistema
- archivos de Windows Update
TrustedInstaller existe para evitar que incluso SYSTEM o Administrators rompan Windows sin querer.
🟦 2. ¿Por qué TrustedInstaller tiene más permisos que SYSTEM en archivos del sistema?
Porque Windows protege su propia integridad.
✔️ SYSTEM = controla el sistema
✔️ TrustedInstaller = controla los archivos del sistema
Ejemplo:
- SYSTEM puede matar
lsass.exe(si fuerzas) - SYSTEM NO puede borrar
kernel32.dll - TrustedInstaller SÍ puede (porque es su propietario)
Esto evita que un administrador o un malware borre archivos críticos.
🟦 3. ¿Cómo se ejecuta SYSTEM sin PsExec? (Alternativas integradas)
Aquí viene lo interesante: Windows sí tiene formas integradas de ejecutar como SYSTEM, sin PsExec.
✔️ 1. Task Scheduler (Programador de tareas)
Puedes crear una tarea que se ejecute como SYSTEM:
- Abrir
taskschd.msc - Crear tarea
- “Ejecutar con los privilegios más altos”
- Usuario: SYSTEM
- Acción: abrir PowerShell o CMD
Luego ejecutas la tarea manualmente.
Esto te da una consola SYSTEM sin PsExec.
✔️ 2. Servicios de Windows
Puedes crear un servicio que se ejecute como SYSTEM:
powershell
sc create MiServicio binPath= "cmd.exe" type= own
sc start MiServicio
Esto lanza CMD como SYSTEM.
✔️ 3. WinRE (entorno de recuperación)
Cuando entras en la consola de recuperación, estás ejecutando comandos con permisos equivalentes a SYSTEM.
✔️ 4. Modo seguro + consola
Permite modificar archivos bloqueados.
🟦 4. ¿Y TrustedInstaller? ¿Tiene alternativas integradas?
Aquí está la diferencia clave:
👉 NO existe una forma integrada en Windows para ejecutar como TrustedInstaller. 👉 Windows NO quiere que uses TrustedInstaller directamente.
Por eso:
- no puedes iniciar sesión como TrustedInstaller
- no puedes abrir CMD como TrustedInstaller
- no puedes usar Task Scheduler para TrustedInstaller
- no puedes usar servicios para TrustedInstaller
TrustedInstaller es un servicio interno, no una cuenta de usuario normal.
🟦 5. Entonces, ¿cómo se ejecuta como TrustedInstaller?
Solo con herramientas externas:
✔️ NSudo
✔️ PowerRun
✔️ RunAsTI
Estas herramientas:
- inician un proceso con el token de TrustedInstaller
- permiten modificar archivos ultra protegidos
- permiten acceder a WinSxS
- permiten reemplazar DLLs del sistema
Pero no vienen con Windows, igual que PsExec.
🟦 6. ¿Por qué Windows NO incluye herramientas para TrustedInstaller?
Por seguridad extrema.
Si Windows incluyera una forma fácil de ejecutar como TrustedInstaller:
- malware podría reemplazar DLLs del sistema
- ransomware podría cifrar System32
- cualquier usuario podría romper Windows sin querer
- sería imposible mantener la integridad del sistema
Por eso TrustedInstaller está blindado.
🟦 7. Resumen claro y directo
✔️ SYSTEM
- Nivel más alto general
- Puedes obtenerlo con Task Scheduler, servicios o PsExec
- Viene integrado en Windows
- Permite hacer casi todo
✔️ TrustedInstaller
- Nivel más alto sobre archivos del sistema
- NO tiene alternativa integrada
- Solo accesible con herramientas externas (NSudo, PowerRun…)
- Protege Windows de modificaciones peligrosas
✔️ Administrador
- Nivel alto, pero limitado por UAC y permisos NTFS
- No puede tocar archivos de TrustedInstaller sin tomar posesión
🟦 8. ¿Quieres que te enseñe cómo abrir una consola SYSTEM usando solo herramientas integradas?
Sin PsExec, sin descargas, solo con Task Scheduler.
O si prefieres, te explico:
- cómo ver qué archivos son propiedad de TrustedInstaller
- cómo tomar posesión de ellos
- cómo devolver la propiedad a TrustedInstaller (muy importante)
- cómo funciona el servicio TrustedInstaller internamente
1. SYSTEM vs TrustedInstaller: la diferencia REAL
✔️ SYSTEM
- Es la cuenta interna más poderosa a nivel del sistema operativo.
- Puede controlar servicios, procesos, kernel, registro, etc.
- Es el equivalente a root en Linux.
- Puedes obtener una consola SYSTEM con herramientas integradas (Task Scheduler, servicios, WinRE).
✔️ TrustedInstaller
- Es una cuenta especial del servicio Windows Modules Installer.
- Tiene permisos superiores a SYSTEM, pero solo sobre archivos del sistema.
- Es el propietario de:
C:\Windows\System32C:\Windows\WinSxS- DLLs del sistema
- archivos de Windows Update
- componentes del sistema
✔️ Jerarquía real
Código
TrustedInstaller → Máximo nivel sobre archivos del sistema
SYSTEM → Máximo nivel general del sistema operativo
Administrators → Nivel alto, pero limitado por UAC y NTFS
Usuarios normales → Nivel básico
🟦 2. ¿Por qué TrustedInstaller tiene más permisos que SYSTEM?
Porque Windows protege su propia integridad.
- SYSTEM controla el sistema.
- TrustedInstaller controla los archivos del sistema.
Ejemplo:
- SYSTEM no puede borrar
kernel32.dll. - TrustedInstaller sí puede (porque es el propietario).
Esto evita que:
- un administrador borre archivos críticos
- malware reemplace DLLs del sistema
- actualizaciones se rompan
🟦 3. ¿Cómo ejecutar como SYSTEM sin PsExec? (Alternativas integradas)
Aquí está lo bueno: Windows SÍ tiene formas integradas de ejecutar como SYSTEM, sin instalar nada.
✔️ 1. Task Scheduler (Programador de tareas)
- Abre
taskschd.msc - Crear tarea → “Crear tarea”
- En “Seguridad”:
- Usuario: SYSTEM
- Marcar “Ejecutar con los privilegios más altos”
- Acción:
cmd.exeopowershell.exe
- Guardar
- Botón derecho → Ejecutar
Esto te abre una consola SYSTEM.
✔️ 2. Servicios
Puedes crear un servicio que se ejecute como SYSTEM:
powershell
sc create MiServicio binPath= "cmd.exe" type= own
sc start MiServicio
Esto lanza CMD como SYSTEM.
✔️ 3. WinRE (entorno de recuperación)
Cuando entras en la consola de recuperación, estás ejecutando comandos con permisos equivalentes a SYSTEM.
✔️ 4. Modo seguro
Permite modificar archivos bloqueados.
🟦 4. ¿Existe una alternativa integrada para TrustedInstaller?
👉 NO. 👉 Windows NO quiere que ejecutes nada como TrustedInstaller.
No existe:
- “Run as TrustedInstaller”
- ni Task Scheduler como TrustedInstaller
- ni servicios como TrustedInstaller
- ni consola TrustedInstaller
TrustedInstaller es un servicio interno, no una cuenta de usuario.
Por eso no hay alternativa integrada como ocurre con SYSTEM.
🟦 5. Entonces, ¿cómo ejecutar como TrustedInstaller?
Solo con herramientas externas, igual que PsExec:
✔️ NSudo
✔️ PowerRun
✔️ RunAsTI
Estas herramientas:
- obtienen el token de TrustedInstaller
- lanzan un proceso con ese token
- permiten modificar archivos ultra protegidos
- permiten reemplazar DLLs del sistema
- permiten acceder a WinSxS
❌ NO vienen con Windows
❌ NO vienen con PowerShell
❌ NO vienen preinstaladas
Son como PsExec: herramientas externas, pero muy usadas por administradores avanzados.
🟦 6. ¿Cómo se obtienen estas herramientas?
✔️ 1. PsExec (Sysinternals)
Se descarga desde la web oficial de Microsoft:
Código
https://learn.microsoft.com/sysinternals/
No se puede instalar desde PowerShell directamente (a menos que uses un script que descargue el ZIP).
✔️ 2. NSudo
Proyecto open source:
Código
https://github.com/M2Team/NSudo
Descargas un ZIP con ejecutables.
✔️ 3. PowerRun
Herramienta portable:
Código
https://www.sordum.org/9416/powerrun-v1-6-run-with-highest-privileges/
✔️ 4. RunAsTI
Pequeña utilidad:
Código
https://github.com/jschicht/RunAsTI
🟦 7. ¿Se pueden instalar con PowerShell?
Sí, pero no vienen integradas. Puedes descargarlas con PowerShell usando Invoke-WebRequest, pero eso sigue siendo una descarga externa.
Ejemplo:
powershell
Invoke-WebRequest -Uri "URL" -OutFile "C:\Herramientas\NSudo.zip"
Pero no es algo que venga “de fábrica”.
🟦 8. ¿Qué puede hacer TrustedInstaller que SYSTEM no puede?
✔️ Modificar archivos propiedad de TrustedInstaller
Ejemplo:
- DLLs del sistema
- archivos de WinSxS
- archivos de Windows Update
✔️ Reemplazar componentes del sistema
✔️ Instalar o desinstalar componentes protegidos
✔️ Modificar permisos de archivos críticos
✔️ Actualizar el sistema operativo internamente
SYSTEM no puede hacer estas cosas sin tomar posesión primero.
🟦 9. ¿Qué puede hacer SYSTEM que TrustedInstaller no puede?
✔️ Matar procesos protegidos
✔️ Acceder a claves del registro ultra protegidas
✔️ Controlar servicios críticos
✔️ Manipular el kernel
✔️ Acceder a sesiones de otros usuarios
TrustedInstaller solo controla archivos del sistema.
🟦 10. Resumen final (muy claro)
| Cuenta | Viene integrada | Cómo se usa | Permisos |
|---|---|---|---|
| SYSTEM | ✔️ Sí | Task Scheduler, servicios, WinRE | Máximos generales |
| TrustedInstaller | ✔️ Sí (como servicio) | ❌ No se puede usar directamente | Máximos sobre archivos del sistema |
| PsExec | ❌ No | Descarga externa | Ejecutar como SYSTEM |
| NSudo / PowerRun / RunAsTI | ❌ No | Descarga externa | Ejecutar como TrustedInstaller |