我有以下脚本。它应该找到当前登录到远程计算机的用户,但事实并非如此。我错过了什么?远程计算机是域的一部分。我会看到添加域名吗?怎么样?
strComputer = "computername"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
Wscript.Echo "Logged-on user: " & objComputer.UserName
Next
答案 0 :(得分:2)
作为documented,UserName
属性返回在控制台上登录的用户的名称:
<强>用户名强>
[...]
当前登录的用户的名称。此属性必须具有值。在终端服务会话中, UserName 返回登录到控制台的用户的名称,而不是在终端服务会话期间登录的用户。
如果您没有得到结果,您的用户很可能通过远程桌面登录。
让所有用户登录远程系统check the running Explorer processes for their owners:
strComputer = "computername"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
qry = "SELECT * FROM Win32_Process WHERE Name='explorer.exe'")
For Each p in objWMIService.ExecQuery(qry)
p.GetOwner user, domain
WScript.Echo "Logged-on user: " & domain & "\" & user
Next