如何获取远程桌面客户端的IP地址? 我怎样才能在RDP连接时触发一个shell命令?

有没有一种方法来确定在服务器上使用PowerShell(或其他方法)的远程桌面客户端的IP地址? (Windows Server 2008 R2 x64是我使用的)

编辑:我发现,我可以grep netstat的标准输出检索这是非常可行的信息,所以当客户端连接时,如何触发脚本/ shell命令?

从命令提示符处,您可以运行以下命令以获取连接到RDP(端口3389)的远程IP的列表。

netstat -n | find ":3389" | find "ESTABLISHED" 

我敢肯定,这可以在PowerShell脚本(甚至只是一个普通的旧batch file)。 如果你有兴趣,我明天可以提供一个例子。

好的,我发现Windows自带的task scheduler程序可以configuration到我可以运行批处理脚本的地方,当事件日志中的事件生成时触发。 通过用户界面,您可以select事件types,事件源和事件ID,在这种情况下,我使用了4264(并且是捕获所有logintypes)。 在这里我使用了一个简单的批处理脚本:

 SET logfile="rdp_ip_logs.log" date /T>>%logfile% time /T>>%logfile% netstat -n | find ":3389" | find "ESTABLISHED">>%logfile% 

另外我发现这个超级有用的例子,如何订阅/听事件写在.NET中: http : //msdn.microsoft.com/en-us/library/bb552514 (v= vs.90).aspx我'最终会使用它来写某些事件到数据库进行基于Web的检查。

如果您不需要编写脚本,则可以查看安全事件日志中的事件ID 4624.将会有一行:

源networking地址:192.168.xxx.xxx