例如,我有一个由4个人使用的服务器,该服务器中只有一个帐户。我们知道,当有人已经访问它,而另一个用户访问服务器时,当前用户将被断开连接。
是否有任何方法可以识别当前是否通过远程桌面连接访问服务器,以防止活动用户不必要的中断。
发布于 2015-08-26 07:47:47
这适用于以下操作系统: Windows 2008、Windows 2008 R2、Windows 2012和Windows。尝试以下命令:
query session [<SessionName> | <UserName> | <SessionID>] [/server:<ServerName>] [/mode] [/flow] [/connect] [/counter]这将提供如下输出:
C:\>query session
SESSIONNAME USERNAME ID STATE TYPE DEVICE
>console Administrator1 0 active wdcon
rdp-tcp#1 User1 1 active wdtshare
rdp-tcp 2 listen wdtshare
4 idle
5 idle希望这能有所帮助。
发布于 2015-08-26 18:38:05
Windows平台支持多个并发RDP会话--通常最多支持两个会话--如果用户试图连接到已经达到最大值的服务器,则会发出警告。因此,您所描述的情况完全可以通过为每个人创建单独的用户帐户来避免--这是一种安全最佳实践。
如果没有单独的用户帐户,您当然会遇到这样的资源共享问题。但是,您也无法单独管理用户权限,也无法在事件日志中区分一个人和另一个人。
即使在非服务器平台上(例如: Windows 7、Windows8.1、Windows 10等),如果您有单独分配的用户帐户,您的场景也不会出现问题。这些平台一次只允许一个会话处于活动状态。当RDP用户连接,并且已经有一个活动会话时,将发生以下三种情况之一:
尽管如此,以下是对现有答案的一些评论以及我自己的建议:
TheJulyPlot和迈克尔·贝利在本质上提出了同样的观点。QWINSTA和QUSER都是QUERY实用程序的快捷方式,分别用于SESSION和USER函数。这些程序可以在带有/computer:参数的远程计算机上运行,因此在您实际连接之前,可以使用它们来检查系统。
贾斯-的建议本身对您并不有用,因为它要求您已经连接到远程系统,并且您希望在这样做之前检查它。但是,如果您使用PsExec运行它(由Michael建议),您可以完成您想要做的事情。不过,有更好的方法来满足您的需要,使用内置的工具以及Microsoft提供的其他实用程序。
如果您已经拥有了PsTools,我建议您尝试使用PsLoggedOn,而不是与PsExec和Netstat混为一谈。PsLoggedOn可以远程运行,并显示RDP会话和远程文件系统或注册表连接。远程运行PsLoggedOn的语法是:
PsLoggedOn \\servername其他有用资源:
SS64
PsLoggedOn
查询用户/ Quser
查询会话/ Qwinsta
PsExec
Netstat
TechNet
发布于 2015-08-26 03:55:07
从命令提示符。
注意,在已建立的状态下监听3306端口到外部地址192.168.2.205的TCP本地地址
C:\Users\foo>netstat -anp tcp
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:554 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
...
TCP 10.0.0.248:3306 192.168.2.205:48156 ESTABLISHED
...
TCP 192.168.130.1:139 0.0.0.0:0 LISTENING
TCP 192.168.233.1:139 0.0.0.0:0 LISTENINGhttps://serverfault.com/questions/717034
复制相似问题