在由 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
每增加一个服务器只需添加一行。