域中有很多 Windows Server 2008 R2 计算机。它们用作本地和远程访问的工作站。收集有关登录用户的信息的正确方法是什么?包括:
- 谁在本地登录(就远程桌面服务管理器而言,会话 = 控制台)
- 谁在本地登录,但桌面被锁定(状态!= RDSM 中的活动)
- 远程登录的用户
- 谁已远程登录,但桌面已锁定
- 按时登录(如果可能)
我想要编写一个包含这些信息的 HTML 页面,因此编写一个脚本来完成这项工作就太好了。
对我不起作用的解决方案:
例如,PsLoggedOn
实用程序(SysInternals)不提供有关状态(活动/断开连接)的信息。
远程桌面服务管理器是一款出色的 GUI 工具,尤其是在将所有计算机添加到组时。我需要通过控制台界面获取相同的信息。
答案1
你可以直接解析数据奎斯塔。Qwinsta 输出通常如下所示:
PS C:\> qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console 1 Conn
>rdp-tcp#0 administrator 2 Active rdpwd
rdp-tcp 65536 Listen
以下通过“SESSIONNAME”查询 RDP 连接:
$sessionInfo = qwinsta | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv
$rdpSessions = $sessionInfo | where {$_.SESSIONNAME -like ">rdp-tcp*"}
$rdpSessions
您将获得类似以下的输出:
PS C:\> $rdpSessions
SESSIONNAME : >rdp-tcp#0
USERNAME : administrator
ID : 2
STATE : Active
TYPE : rdpwd
DEVICE :
答案2
我没有用过它(因为我没有任何 R2 终端服务器),所以我可能是错的,但 Powershell 中的 RDS 提供程序应该可以满足您的所有需求。请查看这如果你有兴趣的话。
答案3
PDQ Inventory 是一款(免费)工具,可让您了解网络中所有在线计算机。它还可以导出到 Excel。
Name Online Scan Status O/S O/S Version O/S Service Pack Uptime Current User Successful Scan Date
PC005 Yes 8.1 6.3.9600 0 22 minutes BUGGEGRP\USER01 (locked) 26/04/2016 12:34