Descubrir quién está iniciando sesión en una computadora a veces es muy útil para un administrador de sistemas, y hacerlo en PowerShell parece ser aún mejor si no hay otras herramientas involucradas.
Normalmente, puedes disparar Get-WmiObject con llamar Win32_ComputerSystem clase para obtener la información. A continuación se explica cómo obtener el inicio de sesión en una computadora local.
Get-WmiObject -class Win32_ComputerSystem | Format-List Username
o simplemente
(Get-WmiObject -class Win32_ComputerSystem).Username
Pero extraer información de una computadora local no tiene mucho sentido. Está haciendo lo mismo en una computadora remota a la que apunto. Ya que Get-WmiObject tiene el interruptor -computername que podemos usar para llamar a WmiObject en una computadora remota, pegar -computername con un nombre de computadora remota debería funcionar sin problemas.
Get-WmiObject -class Win32_ComputerSystem -computername Name | Format-List Username
Bueno, si esto funciona en su computadora, genial, eso es todo lo que necesita usar para verificar quién está iniciando sesión en un sistema remoto. Pero en mi caso, no funciona. El resultado quedó en blanco y no se mostró nada. Y no es que nadie haya iniciado sesión en este momento.
Un rápido Google muestra que es bastante común que ocurra así. Y no hay solución para solucionarlo por alguna razón. Entonces, lo que terminé haciendo fue tomar una ruta diferente que verifica si hay procesos de Explorer cargados en la computadora remota. Si es así, obtenga el propietario de cada proceso de Explorer y muéstrelos. Lo bueno de este enfoque es que incluso puedo obtener la lista completa de usuarios que inician sesión en un servidor de terminal que a menudo tiene más de un usuario conectado. Gracias a este chico. Puede descargar el código desde el siguiente enlace de descarga pero tendrá que ir a aquí para ver el código fuente y cómo funciona.
Deberá usar el mismo interruptor -nombre del computador para especificar una computadora remota para verificar.
Vale la pena señalar que, dado que el script no está firmado, cambiará su política de ejecución de PowerShell para poder ejecutar el script. Y deberá abrir la consola de PowerShell como administrador para cambiar la política
Set-ExecutionPolicy Unrestricted