pengembangan-web-mp-pd.com

Bagaimana cara memeriksa siapa yang sedang masuk ke windows workstation dari command line?

Lingkungan dalam domain, server adalah Windows Server 2003, workstation memiliki Vista dan XP diinstal.
Saya perlu cara untuk memeriksa jarak jauh siapa yang saat ini masuk di workstation, lebih disukai dari beberapa baris perintah sederhana dan tanpa sysinternals atau program pihak ketiga.

Terima kasih

37
Andrija

Ini adalah sumber asli tapi itu sekarang 404:

Mereka menyarankan menggunakan WMIC (Windows Management Interface Command) yang tersedia di windows:

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

Akan mengembalikan nama pengguna yang saat ini masuk ke xxx.xxx.xxx.xxx, atau

WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME 

akan mengembalikan nama pengguna yang saat ini masuk ke "workstation_name"

PEMBARUAN: Ini juga bisa digunakan pada Windows 10 - jika Anda seorang admin di mesin jarak jauh.

47
Preet Sangha

Maaf, tidak melihat Anda tidak ingin menggunakan Sysinternals.
Itu sekarang menjadi alat teknologi Microsoft, ada alasan khusus untuk tidak menggunakannya?
Saya lebih suka Sysinternals daripada alat pihak ketiga lainnya sebelumnya Mark Russinovich pindah ke Microsoft.


The Microsoft Sysinternals Suite memiliki alat bernama Psloggedon ,

psloggedon.exe -l

Ada juga NBTSTAT ,

nbtstat -a NetBIOS-Computer-NAme
17
nik

Saya telah menggunakan win32_loggedonuser, tetapi mengalami masalah di mana lebih dari satu pengguna domain dikembalikan, jadi itu tidak berfungsi untuk tujuan saya. Sebaliknya saya menggunakan (In PowerShell)

#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
}

jika itu karena kadang-kadang pemilik akan melaporkan lebih dari satu pengguna untuk beberapa alasan, tidak tahu mengapa tetapi dalam kasus saya itu adalah pengguna yang sama sehingga tidak menjadi masalah.

12
MDMoore313

Anda bisa mendapatkan info ini dari win32_loggedonuser.

Dari halaman ini :

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_