Determine la pantalla remota de Windows bloqueada o desbloqueada de forma remota

2

Tengo varias estaciones de trabajo de Windows 7/2008 en mi entorno de dominio. tenemos un GPO que cierra automáticamente la ventana si nadie está trabajando en él (inactivo). (No hay protector de pantalla sólo bloquear)

¿Cómo puedo comprobar de forma remota si la estación de trabajo remota está bloqueada o desbloqueada? Intenté consultar al usuario usando el comando quser (probado en el usuario cuyas ventanas están bloqueadas u otro usuario cuyas ventanas están desbloqueadas, mismo resultado)

C:\>psexec \\REMOTEPC1 quser

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 USER1                 console             1  Active      none   1/24/2017 11:21 AM

el resultado anterior muestra ESTADO = ACTIVO, pero no puedo consultar si la estación de trabajo está BLOQUEADA / DESBLOQUEADA. ¿Cómo obtener el resultado requerido instantáneamente por comando o método?

Syed Jahanzaib
fuente

Respuestas:

1

No puedo consultar si la estación de trabajo está BLOQUEADA / DESBLOQUEADA

Utilice la siguiente secuencia de comandos de PowerShell (GetRemoteLogonStatus.ps1).

Esta secuencia de comandos devolverá el estado de inicio de sesión de la máquina local o remota. Los tipos de devolución incluyen "No conectado", "Bloqueado", "Conectado" y "Desconectado. La parte más útil de esto es verificar si una computadora está en estado bloqueado, aunque los otros tipos de devolución también podrían ser útiles.

Esta es una función simple y se puede incluir fácilmente en un script más grande. Los tipos de devolución podrían cambiarse a números para que el script de llamada analice más fácilmente el valor de devolución.

# This function will return the logged-on status of a local or remote computer 
# Written by BigTeddy 10 September 2012 
# Version 1.0 
# Sample usage: 
# GetRemoteLogonStatus '<remoteComputerName>' 

function GetRemoteLogonStatus ($computer = 'localhost') { 
if (Test-Connection $computer -Count 2 -Quiet) { 
    try { 
        $user = $null 
        $user = gwmi -Class win32_computersystem -ComputerName $computer | select -ExpandProperty username -ErrorAction Stop 
        } 
    catch { "Not logged on"; return } 
    try { 
        if ((Get-Process logonui -ComputerName $computer -ErrorAction Stop) -and ($user)) { 
            "Workstation locked by $user" 
            } 
        } 
    catch { if ($user) { "$user logged on" } } 
    } 
else { "$computer Offline" } 
}

Fuente Obtener estado de inicio de sesión remoto - Powershell

DavidPostill
fuente
1
lo siento por ser noob, no he usado scripts de powershell antes. Simplemente hice un archivo en el bloc de notas llamado GetRemoteLogonStatus.ps1 y pegué todo el contenido en él. Luego traté de ejecutarlo pero no da salida. ejemplo, comencé a usar powershell ejecutando el comando 'powershell', luego ejecuté el script como PS C:\temp> .\GetRemoteLogonStatus.ps1 y la solicitud devuelve, sin error, sin información, etc.
Syed Jahanzaib
0

Olvidé actualizar el post. Ya que estoy usando mi caja de Ubuntu para administrar la mayoría de las funciones de Active Directory usando los scripts de Webmin / BASH, por lo tanto, hice un pequeño script de bash que consulta las ventanas remotas registradas en la sesión del usuario y el estado de las ventanas bloqueadas / desbloqueadas.

Resultado:

root@linux:/temp# /temp/winuserstatus.sh WORKSTAION-1

Remote PC = WORKSTAION-1
IP Details =
Address: 10.0.0.20
Address: 10.0.0.21

User Status = Logged in User found ... details as below ...
jahan.zaib console 13 Active 1+00:53 1/23/2017 1:57 PM
Windows Status = Windows is LOCKED

El script de bash hace lo siguiente ...

  • Compruebe el estado del PING de la PC remota, si el ping falla, salga con un error

Obtenga una IP remota de Windows a través de NSLOOKUP usando DNS local

Usuario registrado actual y su estado

El estado actual de las ventanas está bloqueado / desbloqueado.

Recortar los resultados y visualizarlos a nuestro gusto.

Lo publiqué detalles aquí

Syed Jahanzaib
fuente