Saltar al contenido

Script de Powershell para ver los usuarios conectados actualmente (dominio y máquina) + estado (activo, inactivo, ausente)

Agradeceríamos tu apoyo para difundir nuestras reseñas con relación a las ciencias informáticas.

En busca de esta misma solución, encontré lo que necesitaba en una pregunta diferente en stackoverflow: Powershell-log-off-remote-session. La siguiente línea devolverá una lista de usuarios registrados.

query user /server:$SERVER

No hay un “comando simple” para hacer eso. Puede escribir una función o elegir entre varias que están disponibles en línea en varios repositorios de código. Yo uso esto:

function get-loggedonuser ($computername)

#mjolinor 3/17/10

$regexa = '.+Domain="(.+)",Name="(.+)"$'
$regexd = '.+LogonId="(d+)"$'

$logontype = @
"0"="Local System"
"2"="Interactive" #(Local logon)
"3"="Network" # (Remote logon)
"4"="Batch" # (Scheduled task)
"5"="Service" # (Service account logon)
"7"="Unlock" #(Screen saver)
"8"="NetworkCleartext" # (Cleartext network logon)
"9"="NewCredentials" #(RunAs using alternate credentials)
"10"="RemoteInteractive" #(RDPTSRemoteAssistance)
"11"="CachedInteractive" #(Local wcached credentials)


$logon_sessions = @(gwmi win32_logonsession -ComputerName $computername)
$logon_users = @(gwmi win32_loggedonuser -ComputerName $computername)

$session_user = @

$logon_users 

Dado que estamos en el área de PowerShell, es muy útil si podemos devolver un objeto de PowerShell adecuado…

Personalmente, me gusta este método de análisis, por la brevedad:

((quser) -replace '^>', '') -replace 's2,', ',' | ConvertFrom-Csv

Nota: esto no tiene en cuenta a los usuarios desconectados (“disco”), pero funciona bien si solo desea obtener una lista rápida de usuarios y no le importa el resto de la información. Solo quería una lista y no me importaba si estaban desconectados actualmente.

Si le importa el resto de los datos, es un poco más complejo:

(((quser) -replace '^>', '') -replace 's2,', ',').Trim() | ForEach-Object 
    if ($_.Split(',').Count -eq 5) 
        Write-Output ($_ -replace '(^[^,]+)', '$1,')
     else 
        Write-Output $_
    
 | ConvertFrom-Csv

Llevo un paso más allá y les doy un objeto muy limpio en mi blog.

Terminé haciendo esto en un módulo.

Valoraciones y comentarios

Al final de todo puedes encontrar las críticas de otros gestores de proyectos, tú todavía eres capaz mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *