查找连接到网络共享的用户

Mar*_*ott 20 windows-server-2008 network-share

在我的 Windows 2008 服务器上,我有一个网络共享。我以完全管理员权限登录到服务器。我想知道哪些用户与该共享有活动连接。

我如何找到这些信息?

Wes*_*ley 26

我知道有两种方法可以解决这个问题。一种是不可靠的,但对于大多数情况可能已经足够了。一个是广泛的,但很难以超过少数用户连接的任何规模实施。

Kinda-Sorta方式:选择系统工具>>共享文件夹>>打开文件以查看文件服务器上打开了哪些文件。从那里您可以将具有打开文件的用户帐户与其连接的共享相关联。

但是,这可能还不够。不相信我?进入计算机管理并选择系统工具>>共享文件夹>>会话以查看谁已连接。然后看# open files列。某些会话应该有 0 个打开的文件。你怎么知道他们在技术上连接到什么份额?我很高兴你问...

广泛但难以扩展的方式:net share [sharename]对每个有问题的共享执行以获得连接到它的用户列表。在我的测试中,甚至列出了没有打开文件的用户。

您还可以使用 Server 2008 及更高版本中的共享和存储管理器管理工具代替计算机管理。在共享列表中找到共享,然后在右侧的操作窗格中单击“管理会话”。您将看到一个会话列表,包括那些打开文件为零的会话。

但是……但是……我想在不查询每个共享的情况下找到特定用户!如果您有想要追踪的特定用户,那么您查找该信息的唯一方法似乎是查询每个共享并观察它以找到您想要的用户。我所说的眼球是指管道输出到findstror select-string。可以将工作流推断为一个脚本,该脚本枚举所有可用共享、查询连接用户并搜索相关用户的输出,但这似乎是对读者的练习,而不是 Microsoft 作为本机功能包含的内容.


小智 5

这是一个非常古老的问题,但已接受的答案跳过了查找信息的最佳方法之一。GUI 可以显示有“已连接的客户端”,但不会在“打开的文件”下显示这些连接。在这种情况下,它需要使用 WMI 来查找连接到共享的人。

这是用于查看谁连接到特定共享和示例输出的 powershell 命令:

Get-WmiObject Win32_ServerConnection -ComputerName SERVER01 | Select-Object ShareName,UserName,ComputerName | Where-Object {$_.ShareName -eq "SHARENAME"}
Run Code Online (Sandbox Code Playgroud)

示例输出:

ShareName        UserName        ComputerName
---------        --------        ------------
SHARENAME        user1           10.0.0.20
SHARENAME        user2           10.0.0.30
SHARENAME        user3           10.0.0.40
Run Code Online (Sandbox Code Playgroud)