Pregunta

Necesito determinar los usuarios/sesiones que acceden a una carpeta compartida en una máquina Windows XP (SP2) utilizando un script PowerShell (V 1.0). Esta es la información que se muestra con la administración de computadora | Herramientas del sistema | Carpetas compartidas | Sesiones. ¿Alguien puede darme consejos sobre cómo hacer esto?

Supongo que requerirá una consulta WMI, pero mi búsqueda inicial en línea no reveló cuáles serán los detalles de la consulta.

Gracias, magia

¿Fue útil?

Solución

Se me ocurrió el siguiente guión:

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

Los siguientes artículos fueron útiles:

Como siempre, si no puede encontrar una manera de hacerlo en PowerShell, vea si alguien ha hecho algo similar en C#.

Otros consejos

Lo modificé un poco para mostrar el nombre de host en lugar de 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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top