powershellwmipowershell-1.0wmi-query

Determine Users Accessing a Shared Folder Using PowerShell


I need to determine the users/sessions accessing a shared folder on a Windows XP (SP2) machine using a PowerShell script (v 1.0). This is the information displayed using Computer Management | System Tools | Shared Folders | Sessions. Can anyone give me pointers on how to go about this?

I'm guessing it will require a WMI query, but my initial search online didn't reveal what the query details will be.

Thanks, MagicAndi


Solution

  • I came up with the following script:

    $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
    }
    

    The following articles were useful:

    As always, if you can't find a way to do it in PowerShell, see if someone has done something similar in C#.