Si administras equipos Windows, tarde o temprano te preguntarás quién está conectado ahora mismo a una máquina local o remota. PSLoggedOn es la utilidad clásica de Sysinternals que resuelve precisamente eso, mostrando sesiones locales y conexiones por recursos compartidos sin instalar agentes ni componentes adicionales.
Más allá del vistazo rápido, entender bien cómo trabaja PSLoggedOn, qué parámetros tiene, en qué sistemas funciona, qué limitaciones presenta y cómo depurar errores habituales marca la diferencia. En esta guía en español repasamos su uso de arriba a abajo, incorporando trucos, notas reales de campo y detalles internos para que te resulte útil desde el minuto uno.
PSLoggedOn: qué es y qué problemas resuelve
PSLoggedOn es un applet de línea de comandos de Sysinternals (autor original: Mark Russinovich) que muestra quién ha iniciado sesión localmente y quién está conectado a través de recursos compartidos en un equipo Windows, ya sea el tuyo o uno remoto. También puede buscar por usuario y decirte en qué equipos de la red tiene sesión en ese momento.
Su objetivo es cubrir un hueco del propio sistema: con el comando integrado net session puedes ver quién usa recursos en tu equipo local, pero Windows no incluye de serie una forma directa de consultar esa misma información en equipos remotos ni de cruzarla con inicios de sesión locales. Ahí es donde PSLoggedOn entra en juego.
La utilidad forma parte del conjunto PsTools, un paquete de herramientas de administración remota y local que crece desde hace años. El prefijo «Ps» nace por analogía con el comando «ps» de UNIX y agrupa herramientas como PsExec, PsList, PsKill, PsInfo, PsFile, PsService o PsShutdown, entre otras.

Cómo funciona PSLoggedOn por dentro
Para identificar sesiones locales, PSLoggedOn considera que un usuario está conectado cuando su perfil está cargado en el Registro. ¿Cómo lo comprueba? Recorre las subclaves de HKEY_USERS y, para cada nombre con formato SID (identificador de seguridad), obtiene el nombre de cuenta asociado.
Para detectar conexiones por red, la herramienta utiliza la API NetSessionEnum. Con ella enumera sesiones establecidas a través de recursos compartidos como IPC$, ADMIN$ o C$. Esto incluye inicios de sesión de cuentas de equipo (terminadas en «$») que suelen verse cuando servicios de administración o tareas del dominio acceden a la máquina.
Hay dos matices importantes que conviene recordar: 1) si interrogas un equipo remoto con PSLoggedOn, tú mismo aparecerás como conectado por recurso compartido, porque el propio acceso remoto al Registro obliga a abrir una sesión; 2) si no hay nadie conectado localmente, PSLoggedOn puede devolver el último usuario que inició sesión, detalle útil para investigaciones, aunque no implique presencia activa.
Además, la primera vez que ejecutas la utilidad se registra la aceptación de la EULA creando la clave HKCU\Software\Sysinternals\PsLoggedOn\EulaAccepted=0x01. Esto se puede suprimir con el conmutador de línea de comandos -accepteula cuando automatizas despliegues o scripts.
Descarga, instalación y compatibilidad
PSLoggedOn se distribuye dentro del paquete PsTools. La descarga oficial viene desde Sysinternals/Microsoft y no requiere instalación: basta con descomprimir y colocar los binarios en una ruta que esté en el PATH o en el directorio actual.
La suite PsTools se ha publicado y actualizado en varias ocasiones. La documentación antigua citaba un paquete de ~2,7 MB, mientras que la referencia actual de PsTools ronda los ~5 MB. En ambos casos, el archivo de ayuda HTML incluido describe el uso completo de todas las utilidades.
Compatibilidad reseñada en las páginas oficiales: la ficha específica de PSLoggedOn indica Cliente: Windows Vista y superior; Servidor: Windows Server 2008 y superior. Por su parte, la ficha de la suite PsTools (más reciente) apunta Cliente: Windows 8.1 y superior; Servidor: Windows Server 2012 y superior; Nano Server: 2016 y superior.
Para entornos gestionados, recuerda que PSLoggedOn se apoya en el Registro remoto y en sesiones SMB. Si consultas equipos remotos, comprueba políticas de firewall, puertos SMB y el servicio de Registro remoto si tu entorno lo exige. No hace falta instalar agentes en los equipos destino.

Sintaxis y parámetros de PSLoggedOn
Uso básico: psloggedon . Estos son los modificadores y argumentos clave que aparecen en la documentación:
- –: muestra la ayuda con las opciones disponibles y las unidades usadas en la salida.
- -l: limita el resultado a sesiones locales, ocultando conexiones por recursos compartidos.
- -x: suprime las marcas de tiempo de inicio de sesión.
- -accepteula: evita que se muestre el diálogo de licencia la primera vez.
- \\equipo: nombre del equipo del que quieres listar información de inicio de sesión.
- nombre_usuario: hace una búsqueda por la red de equipos donde ese usuario tiene sesión iniciada, útil antes de cambiar perfiles.
Consejo operativo: si manejas varios binarios, coloca psloggedon.exe y psloggedon64.exe en una ruta común y llama siempre a la versión adecuada según la arquitectura. Esto simplifica scripts y evita redirecciones inesperadas en sistemas de 64 bits.
Automatización con PowerShell y errores habituales
Un tropiezo común al automatizar PSLoggedOn desde PowerShell (consulta la guía avanzada de scripts en batch) es usar Format-Table (ft) en mitad de la canalización antes de iterar. Esto convierte los objetos en datos de formato, y terminas pasando cosas como Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData a tu comando externo.
Si ves mensajes del tipo Error opening HKEY_USERS for \\Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData, revisa tu script: no des forma a los objetos antes del bucle. Por ejemplo, en lugar de | ft -Property name, usa | Select -ExpandProperty Name o | ForEach-Object { $_.Name }.
Ejemplo correcto: $computers = Get-ADComputer -Filter * | Where-Object { $_.DistinguishedName -like "*OU=Computers,OU=site,OU=EMEA Hub,DC=zone2,DC=company,DC=net" } | Select -ExpandProperty Name. Después, itera y llama a PSLoggedOn con la cadena del equipo: foreach ($c in $computers) { & "C:\\Ruta\\PSTools\\psloggedon.exe" -x -l \\$c }.
Otros problemas frecuentes y cómo atajarlos: 1) permisos insuficientes para leer el Registro remoto; 2) firewall bloqueando SMB o políticas endurecidas; 3) nombre DNS/NetBIOS que no resuelve; 4) arquitectura errónea del binario. Solución: validar credenciales, probar resolución con ping y Test-Connection, revisar reglas de firewall y usar la versión 32/64 bits adecuada.
PsTools: el contexto que importa
PSLoggedOn no está solo. El paquete PsTools incluye utilidades que se complementan entre sí. Listado destacado de la documentación oficial:
- PsExec: ejecución remota de procesos.
- PsFile: enumera archivos abiertos de forma remota.
- PsGetSid: muestra el SID de un equipo o usuario.
- PsInfo: inventario e información del sistema.
- PsPing: métricas de rendimiento de red.
- PsKill: finaliza procesos por PID o nombre.
- PsList: detalle de procesos.
- PsLogList: vuelca registros de eventos.
- PsPasswd: cambia contraseñas de cuentas.
- PsService: consulta y controla servicios.
- PsShutdown: apaga y reinicia equipos.
- PsSuspend: suspende procesos en ejecución.
- PsUptime: tiempo desde el último reinicio (hoy integrado en PsInfo).
La suite viene con un archivo de ayuda HTML muy completo y, si necesitas soporte, existe un foro específico de PsTools donde la comunidad comparte soluciones y casos prácticos. También hay una introducción de Wes Miller que ofrece una visión general de alto nivel de estas utilidades.
PSFile, el compañero perfecto para investigar sesiones
Cuando PSLoggedOn te diga que alguien está conectado por red, el siguiente paso lógico es ver qué archivos tiene abiertos y con qué tipo de acceso. Ahí entra PSFile, del mismo paquete PsTools.
PSFile lista en el equipo remoto la ruta completa del archivo, el nombre, el tipo de acceso y quién lo mantiene abierto. Además, puedes cerrar un handle indicando su Id si es necesario (con precaución para no interrumpir trabajo). Requiere credenciales con permisos administrativos en el destino.
En usos típicos, PSFile y PSLoggedOn se combinan para responder al trío de preguntas clave: quién está conectado, desde dónde y a qué recurso está accediendo.
Este recorrido te deja listo para incorporar PSLoggedOn a tus tareas diarias: inventarios rápidos, auditorías de actividad, verificaciones previas a cambios de perfil y apoyo a incidencias relacionadas con sesiones abiertas. Usado junto a PSFile, PsInfo y PsService cubre un porcentaje enorme de las necesidades del día a día en la administración de estaciones y servidores.
