Como verificar remotamente os usuários logados remotos em um computador, usando o WMIC?

1

Gostaria de saber se é possível obter os nomes de usuários atuais de usuários conectados remotamente em um computador? Do windows cmd?

Tipo: WMIC / NODE: ComputerName ComputerSystem Obter nome de usuário

Este comando funciona, mas dá aos usuários logados localmente para ComputerName. Não aqueles que estão conectados remotamente.

Obrigado pela sua ajuda!

    
por Vince 25.09.2013 / 18:57

4 respostas

1

Eu uso este para o meu ambiente, modificado ligeiramente para apenas puxar o filtro apenas dos computadores que eu quero. Ele saiu em algum momento no ano passado, eu acho ... funciona bem o suficiente para mim em 2008 R2. Ainda não testei em 2012. Eu só tenho agendado para ser executado diariamente.

link

# Import the Active Directory module for the Get-ADComputer CmdLet 
Import-Module ActiveDirectory 

# Get today's date for the report 
$today = Get-Date 

# Setup email parameters 
$subject = "ACTIVE SERVER SESSIONS REPORT - " + $today 
$priority = "Normal" 
$smtpServer = "YourMailServer" 
$emailFrom = "[email protected]" 
$emailTo = "[email protected]" 

# Create a fresh variable to collect the results. You can use this to output as desired 
$SessionList = "ACTIVE SERVER SESSIONS REPORT - " + $today + "'n'n" 

# Query Active Directory for computers running a Server operating system 
$Servers = Get-ADComputer -Filter {OperatingSystem -like "*server*"} 

# Loop through the list to query each server for login sessions 
ForEach ($Server in $Servers) { 
    $ServerName = $Server.Name 

    # When running interactively, uncomment the Write-Host line below to show which server is being queried 
    # Write-Host "Querying $ServerName" 

    # Run the qwinsta.exe and parse the output 
    $queryResults = (qwinsta /server:$ServerName | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv)  

    # Pull the session information from each instance 
    ForEach ($queryResult in $queryResults) { 
        $RDPUser = $queryResult.USERNAME 
        $sessionType = $queryResult.SESSIONNAME 

        # We only want to display where a "person" is logged in. Otherwise unused sessions show up as USERNAME as a number 
        If (($RDPUser -match "[a-z]") -and ($RDPUser -ne $NULL)) {  
            # When running interactively, uncomment the Write-Host line below to show the output to screen 
            # Write-Host $ServerName logged in by $RDPUser on $sessionType 
            $SessionList = $SessionList + "'n'n" + $ServerName + " logged in by " + $RDPUser + " on " + $sessionType 
        } 
    } 
} 

# Send the report email 
Send-MailMessage -To $emailTo -Subject $subject -Body $SessionList -SmtpServer $smtpServer -From $emailFrom -Priority $priority 

# When running interactively, uncomment the Write-Host line below to see the full list on screen 
$SessionList 
    
por 25.09.2013 / 20:10
1

Como todos os outros estão jogando o chapéu em um presente, eu acho que eu também poderia.

Eu tenho usado o que @TheCleaner sugeriu com o qwinsta.exe para monitorar usuários ativos em servidores de terminal, mas que só produz em texto.

Mas recentemente descobri a classe Win32_UserProfile, que é muito promissora, pois agora posso produzir em objetos para usar no PS.

Isso é o que eu tenho até agora:

Get-WmiObject Win32_Profile -ComputerName $Name -Filter "Loaded='True'" | Foreach {$_.LocalPath}

** Observação: você pode precisar filtrar alguns perfis "Carregados" descartando todos os resultados nos quais o valor $ _. LocalPath não está na pasta C: \ Users.

    
por 15.07.2015 / 21:55
0

Se ele não precisa rodar a partir do cmd ... eu uso um pequeno e incrível util chamado NetScan para fazer isso por mim.

NetScan Link

    
por 28.08.2014 / 13:37
0

Uma solução fácil é enumerar as instâncias do EXPLORER.EXE em execução no host remoto. Em seguida, basta puxar o usuário proprietário.

Exemplo de comando PS:

Get-WmiObject -Class Win32_Process -Filter "Name='explorer.exe'" -ComputerName "REMOTECOMPUTER" | ForEach-Object{ "{0}\{1}" -f $_.GetOwner().Domain, $_.GetOwner().User }
    
por 13.04.2015 / 20:55