¿Cómo puedo enumerar las conexiones compartidas abiertas con nombre compartido y acceso de cliente en un servidor Windows?

¿Cómo puedo enumerar las conexiones compartidas abiertas con nombre compartido y acceso de cliente en un servidor Windows?

net sessionmuestra sesiones abiertas para compartir.
net sharemuestra las acciones disponibles.

Pero, ¿cómo puedo obtener la lista de sesiones abiertas para cada recurso compartido específico? Sé que la GUI puede enumerar recursos compartidos, sesiones y archivos abiertos, pero una GUI no es adecuada para la automatización de procesos.

Respuesta1

Necesitas usarClase Win32_ServerConnectionpara esto.

En Powershell puedes obtener la lista de sesiones ordenadas por recursos compartidos con:

Get-WmiObject win32_serverconnection -computername $computername  | Select username, computername, sharename | sort sharename

Función lista para usted:

Function Get-ServerConnection {
Param (
$ComputerName = 'localhost',
$account = '') # if empty, it means all accounts

# Now get the connections from that account
if ($account = '' )
   {
   Get-WmiObject win32_serverconnection -computername $computername  | Select username, computername, sharename | ft -a
   }
else
   {Get-WmiObject win32_serverconnection -computername $computername | where username -match $account | select username,computername,sharename | sort username
   }
}

Get-ServerConnection

información relacionada