确定使用PowerShell访问共享文件夹的用户

确定使用PowerShell访问共享文件夹的用户,powershell,wmi,powershell-1.0,wmi-query,Powershell,Wmi,Powershell 1.0,Wmi Query,我需要使用PowerShell脚本(V1.0)确定访问Windows XP(SP2)计算机上共享文件夹的用户/会话。这是使用计算机管理|系统工具|共享文件夹|会话显示的信息。有人能给我指点怎么做吗 我猜这将需要一个WMI查询,但我最初的在线搜索没有透露查询的详细信息 谢谢,MagicAndi我想出了以下脚本: $computer = "LocalHost" $namespace = "root\CIMV2" $userSessions = Get-WmiObject -class Win32_S

我需要使用PowerShell脚本(V1.0)确定访问Windows XP(SP2)计算机上共享文件夹的用户/会话。这是使用计算机管理|系统工具|共享文件夹|会话显示的信息。有人能给我指点怎么做吗

我猜这将需要一个WMI查询,但我最初的在线搜索没有透露查询的详细信息


谢谢,MagicAndi我想出了以下脚本:

$computer = "LocalHost"
$namespace = "root\CIMV2"
$userSessions = Get-WmiObject -class Win32_ServerConnection -computername $computer -namespace $namespace

if($userSessions -ne $null)
{
    Write-Host "The following users are connected to your PC: "

    foreach ($userSession in $userSessions)
    {
        $userDetails = [string]::Format("User {0} from machine {1} on share: {2}", $userSession.UserName, $userSession.ComputerName, $userSession.ShareName)
        Write-Host $userDetails
    }    

    Read-Host
}
以下文章很有用:


和往常一样,如果你在PowerShell中找不到这样做的方法,请查看是否有人在C#中做过类似的事情。

我对其进行了一些修改,以显示主机名而不是IP:

$computer = "LocalHost"
$namespace = "root\CIMV2"
$userSessions = Get-WmiObject -class Win32_ServerConnection -computername $computer -namespace $namespace

if($userSessions -ne $null)
{
    Write-Host "The following users are connected to your PC: "

    foreach ($userSession in $userSessions)
    {
        $ComputerName = [system.net.dns]::resolve($usersession.computername).hostname
        $userDetails = [string]::Format("User {0} from machine {1} on share: {2}", $userSession.UserName, $ComputerName, $userSession.ShareName)
        Write-Host $userDetails
    }    

    Read-Host
}

我喜欢这个解决方案-请记住,对于“交互式”使用,
net会话
更快。@MagicAndi:Read Host的存在导致脚本停止。这一行你的计划是什么?Rob,回答你的问题…最后的read主机阻止控制台窗口在脚本运行时自动关闭,这样你就可以看到输出了。只有在通过双击从资源管理器窗口运行脚本时,才需要执行此操作。希望到现在为止,你已经明白了这一点,但对于任何可能遇到这个问题的人来说……就这样吧。