在我的 Windows 2008 服务器上,我有一个网络共享。我以完全管理员权限登录到服务器。我想知道哪些用户与该共享有活动连接。
我如何找到该信息?
答案1
据我所知,有两种方法可以解决这个问题。一种方法不太可靠,但可能对大多数情况来说已经足够好了。另一种方法很广泛,但在超过少数用户连接的规模下很难实施。
有点类似的方式:选择系统工具 >> 共享文件夹 >> 打开文件,查看文件服务器上打开了哪些文件。从那里,您可以将打开文件的用户帐户与他们所连接的共享相关联。
但是,这可能还不够。不相信我?进入计算机管理并选择系统工具 >> 共享文件夹 >> 会话以查看谁已连接。然后查看该# open files
列。某些会话应该有 0 个打开的文件。您如何知道它们在技术上连接到哪个共享?我很高兴您问到这个问题...
广泛但难以扩展的方法:对每个相关共享执行net share [sharename]
此操作以获取与其连接的用户列表。在我的测试中,甚至没有打开文件的用户也会被列出。
您还可以使用 Server 2008 及更高版本中的共享和存储管理器管理工具来代替计算机管理。在共享列表中找到共享,然后在右侧的操作窗格中单击“管理会话”。您将看到一个会话列表,其中包括没有打开文件的会话。
但是...但是...我想在不查询每个共享的情况下找到特定用户!如果您想要追踪某个特定用户,那么找到该信息的唯一方法似乎是查询每个共享并目测以找到您想要的用户。目测是指将输出传输到findstr
或select-string
。可以将工作流推断为一个脚本,该脚本枚举所有可用共享、查询已连接的用户并在输出中搜索相关用户,但这似乎是读者的练习,而不是 Microsoft 已包含的本机功能。
答案2
这是一个非常老的问题,但接受的答案跳过了查找信息的最佳方法之一。GUI 可以显示有“连接的客户端”,但不会在“打开的文件”下显示这些连接。在这种情况下,需要使用 WMI 来查找谁连接到了共享。
以下是 powershell 命令,用于查看谁连接到了特定共享以及示例输出:
Get-WmiObject Win32_ServerConnection -ComputerName SERVER01 | Select-Object ShareName,UserName,ComputerName | Where-Object {$_.ShareName -eq "SHARENAME"}
示例输出:
ShareName UserName ComputerName
--------- -------- ------------
SHARENAME user1 10.0.0.20
SHARENAME user2 10.0.0.30
SHARENAME user3 10.0.0.40
答案3
计算机管理器的访问方式与以前版本不同。右键单击计算机并选择“管理”,即可看到“服务器管理器”。因此,只需在“开始”下的“搜索程序和文件”字段中输入 compmgmt.msc 即可。
答案4
我认为提供的答案实际上并没有回答问题。如果您使用的是 Windows Server 2008(不是 R2),并且右键单击计算机并选择管理,然后确认 UAC 消息,则服务器管理器 MMC 将启动。服务器管理器下有以下项目:角色、功能、诊断、配置和存储。这五个项目中似乎都没有可用的共享名称连接选项,这正是原始问题所要求的。答案的 EDIT 补充更有用,提到了共享和存储管理器,但似乎仍然没有提供答案。它提供了共享名称和属性的完整列表,但活动连接也没有显示在这里。对于 Windows Server 2003,曾经有一个显示服务器、共享和连接的操作系统实用程序,但我还没有在 WS2008 上找到它。我曾经使用过一个名为 Hyena 的第三方实用程序,来自 Adkins Resource,我相信它仍在销售中,它出色地显示了有关服务器状况的几乎所有方面的所有信息。