it-swarm-tr.com

Windows iş istasyonunda oturum açmış olanların komut satırından nasıl denetlenir?

Ortam etki alanında, sunucu Windows Server 2003, iş istasyonlarında Vista ve XP yüklü.
Şu anda iş istasyonunda oturum açmış olanları uzaktan kontrol etmenin, tercihen basit bir komut satırından ve sistem yöneticileri veya üçüncü taraf programları olmayan bir yol bulmam gerekiyor.

Teşekkürler

37
Andrija

Bu orijinal kaynak ama şimdi 404:

Pencerelerde bulunan (Windows Yönetim Arabirimi Komutu) WMIC kullanılmasını önerdiler:

WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME 

Şu anda xxx.xxx.xxx.xxx'te oturum açmış olan kullanıcı adını döndürür veya

WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME 

şu anda oturum açmış olan kullanıcı adını "iş istasyonu_adı" döndürecektir

GÜNCELLEME: Uzak makinede yönetici iseniz, bu işlem Windows 10 üzerinde de çalışmalıdır.

47
Preet Sangha

Üzgünüz, Sysinternals kullanmak istemediğinizi fark etmedim.
Bu artık bir Microsoft technet aracı, kullanmamak için özel bir neden var mı?
Sysinternals'ı daha önce diğer üçüncü taraf araçlarına göre tercih ettim Mark Russinovich Microsoft'a taşındı.


Microsoft Sysinternals Suite'in Psokedon adlı bir aracı var,

psloggedon.exe -l

Ayrıca NBTSTAT ,

nbtstat -a NetBIOS-Computer-NAme
17
nik

Ben win32_logonuser kullandım, ancak birden fazla etki alanı kullanıcısı döndürülen bir sorunla karşılaştım, bu yüzden benim amacım için işe yaramadı. Bunun yerine (Powershell'de) kullandım

#Get Currently logged in user
$ExplorerProcess = gwmi win32_process | where name -Match Explorer

if($ExplorerProcess.getowner().user.count -gt 1){
    $LoggedOnUser = $ExplorerProcess.getowner().user[0]
}

else{
    $LoggedOnUser = $ExplorerProcess.getowner().user
}

eğer çünkü bazen getowner bir nedenle birden fazla kullanıcıyı rapor edecek, neden bilmiyorum ama benim durumumda aynı kullanıcıydı, bu yüzden bir sorun değildi.

12
MDMoore313

Bu bilgiyi win32_logonuser'dan alabilirsiniz.

bu sayfa :

strComputer = "."   ' " use "." for local computer

Set objWMI = GetObject("winmgmts:" _
              & "{impersonationLevel=impersonate}!\\" _
              & strComputer & "\root\cimv2")

Set colSessions = objWMI.ExecQuery _
    ("Select * from Win32_LogonSession Where LogonType = 2 OR LogonType = 10")

If colSessions.Count = 0 Then
   Wscript.Echo "No interactive users found"
Else
   For Each objSession in colSessions
     If objSession.LogonType = 2 Then
       WScript.Echo "Logon type: Console"
     Else
       WScript.Echo "Logon type: RDP/Terminal Server"
     End If
     Set colList = objWMI.ExecQuery("Associators of " _
         & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _
         & "Where AssocClass=Win32_LoggedOnUser Role=Dependent" )

     For Each objItem in colList
       WScript.Echo "User: " & objItem.Name
       WScript.Echo "FullName: " & objItem.FullName
       WScript.Echo "Domain: " & objItem.Domain
     Next
     Wscript.Echo "Session start time: " & objSession.StartTime
     WScript.Echo
   Next
End If
6
HK_