在给定的计算机上查看活动远程桌面连接

15
我正在寻找一种工具,用于确定本地网络上的计算机是否被用户远程访问,并且最好知道是哪个用户。在我们公司中,我们共享虚拟机并经常需要询问团队成员是否使用任何远程计算机。我想要一种仪表板,可以告诉我哪台计算机正在被使用,哪台计算机是空闲的。
我愿意使用任何商业解决方案,只要需要在需要监视的每台计算机上安装服务或类似的东西即可。
2个回答

25
以下内容将更容易,如果您是从加入了与您查询的系统相同域的Windows客户端进行查询,可能需要特定于标准域用户以上的某些权限。如果遇到身份验证/权限问题,那就是我首先要检查的事情。
Windows XP 至少有一个名为"qwinsta"的工具可用。较新版本的 Windows 有 qwinsta 和 "query session" 两种工具。
qwinsta /server:computer01
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 console                                     0  Conn    wdcon
 rdp-tcp                                 65536  Listen  rdpwd
                   administrator             2  Disc    rdpwd

“administrator”用户已登录但已断开连接。在这个例子中,computer01是一个具有默认“administration” RDP许可证的Windows Server 2003系统,因此有第二个会话等待连接。连接到先前断开的会话后再次运行相同的命令将如下所示:
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
[unchanged output removed]
 rdp-tcp#25        administrator             2  Active  rdpwd

这已足以回答“是否有人通过RDP处于活动状态”,如果你使用个别用户名,它也应该回答“是谁”。如果你们都使用“testuser”、“administrator”或其他类似名称,你可能想知道“来自哪个客户端”,上面的方法无法回答。以上方法提供了一个快速简单的答案,而不需要额外的工具。如需更详细的信息,可以查看cassia libraryPSTerminalServices(基于cassia构建)。有关更多详细信息,请参见this question中的一些答案。

我最初的想法是使用Sysinternals工具,例如PsLoggedOnLogonSessions。然后我在这篇来自2003年的博客文章中发现了之前我不知道的qwinsta和rwinsta工具的参考。


非常感谢您提供的所有信息! - edeboursetty

0

您可以使用名为PSRdSessions的PSModule,该模块提供一些简单的功能

使用示例

Get-RdSession -ComputerName Server01.domain.xyz # return [Cassia.Impl.TerminalServicesSession]

为了返回[哈希表]

Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession # return

用于返回 [pscustomobject]

Get-RdSession -ComputerName Server01.domain.xyz | Convert-RdSession | %{[pscustomobject]$_}

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接