如何从命令行检查当前login到Windows工作站的人员?

环境是在域中,服务器是Windows Server 2003,工作站安装了Vista和XP。
我需要的方式来远程检查谁是目前login工作站,最好从一些简单的命令行,没有sysinternals或第三方程序。

谢谢

看到这里: https : //web.archive.org/web/1/http : //techrepublic%2ecom%2ecom/5208-7343-0.html?forumID=101&threadID=307918&messageID=3065346

他们build议在Windows上可用的wmic命令:

WMIC / NODE:xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME将当前login的用户名返回到xxx.xxx.xxx.xxx

或WMIC / NODE:“workstation_name”COMPUTERSYSTEM GET USERNAME将返回当前login到“workstation_name”的用户名

对不起,没有注意到你不想使用Sysinternals。
那现在是微软的technet工具,有什么具体的原因不能使用它?
Mark Russinovich进入微软之前,我更喜欢Sysinternals优于其他第三方工具。


微软Sysinternals套件有一个名为Psloggedon的工具,

 psloggedon.exe -l 

还有NBTSTAT ,

 nbtstat -a NetBIOS-Computer-NAme 

我已经使用win32_loggedonuser,但遇到了一个问题,其中多个域用户被返回,所以它不适合我的目的。 相反,我用(在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 } 

如果是因为有时候getowner会报告多个用户出于某种原因,不知道为什么,但在我的情况下,这是同一个用户,所以这不是一个问题。

你可以从win32_loggedonuser得到这个信息。

从这个页面 :

 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