监视 Active Directory 中的登录用户

监视 Active Directory 中的登录用户

域中有很多 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

相关内容