如何以编程方式检查多台服务器的最后的远程桌面会话?

如何以编程方式检查多台服务器的最后的远程桌面会话?

在由 Active Directory 域和数十台不同服务器(Windows 2008、2012 等)组成的环境中。

我如何以编程方式列出每个服务器的所有最近登录(通过远程桌面)?如何远程查询服务器以列​​出所有登录信息。我应该使用什么协议/服务/连接来获取这些信息?

我想要得到类似的东西:

 server1
 DOMAIN\john,2015-12-15 09:40
 DOMAIN\mary,2015-12-15 07:04
 DOMAIN\john,2015-12-15 03:33
 DOMAIN\john,2015-12-13 19:00

 server2
 DOMAIN\john,2015-11-10 05:04
 DOMAIN\someone,2015-10-09 15:12

 etc.

答案1

这可以通过以下 powershell 命令实现

Get-RDUsersession | select ServerName, UserName, CreateTime

powershell.exe 必须在 RDS-Server 上以本地管理员身份运行。(以管理员身份启动 powershell.exe)

如果您想对所有服务器执行此操作,最简单的方法就是找到类似的东西。也许它们都有相同的集合名称或连接代理。如果没有相似之处,您需要使用new-pssession可能有点棘手的方法。

Get-RDUsersession -collectionname RDS-SH-Collection | select ServerName, DomainName, UserName, CreateTime

把这些信息放到一个文件中写入

$users = Get-RDUsersession -collectionname RDS-SH-Collection | select ServerName, DomainName, UserName, CreateTime | out-file C:\path\output.txt -force

将所有值(如 RDS-SH-Collection 或 C:\path\output.txt)更改为您的意愿。

答案2

您可以随时使用qwinsta(这实际上是一个查询会话别名)在批处理脚本中如下所示:

qwinsta /server:server1
qwinsta /server:server2

每增加一个服务器只需添加一行。

相关内容