我正在测试一个在远程服务器上运行多个命令的 powershell 脚本。其中一个命令是 net session。当我在测试服务器上运行命令 a 时,列出了一个不寻常的连接/会话。经过一番调查,我无法确定为什么只出现这个特定的连接/会话,而没有出现其他内容。
这让我思考根据网络会话究竟如何定义连接或会话。
据我所知,其定义是:net session 命令用于列出或断开计算机与网络上其他计算机之间的会话。
这很模糊,任何更具体的信息都会有帮助。
答案1
Windows 有一个长期存在的错误,即实际上很久以前就断开的会话有时会在服务器端无限期地保持活动状态,就像僵尸会话一样。这通常不是问题,除非它们保持文件或目录打开,在这种情况下可能需要管理员手动断开它们。(如果服务器重新启动,它们也会被清理。)
因此,有可能有人错误地打开了与相关服务器的连接,例如,双击网络视图中的错误图标,并且该会话可能仍出现在服务器上的会话列表中。另一方面,如果会话在断开连接后重新出现,则表明相关客户端确实连接到了服务器 - 当然,这仍然可能是错误的。您需要查看客户端,而不是服务器,以弄清楚那里发生了什么。请注意,连接的会话不一定是连接的到任何特定的事情,即使只是net view
针对远程服务器运行命令也会建立会话以枚举可用的共享。
报告的信息不太可能net session
是错误的,但如果有疑问,您可以通过控制台或远程桌面登录服务器,并使用计算机管理检查连接的会话。您还可以交叉引用显示netstat
底层网络连接的命令的输出,如果会话是僵尸会话,它可能不会出现在 中netstat
。
我原本希望net session
还显示用于运行远程命令的连接,但这取决于远程访问的实现方式。由于net session
仅显示 SMB 会话,因此不会显示任何直接使用 TCP/IP 的机制。从运行命令的系统到请求命令的系统反向建立 SMB 会话的系统也不会显示。