Pergunta

Preciso determinar os usuários/sessões acessando uma pasta compartilhada em uma máquina Windows XP (SP2) usando um script PowerShell (v 1.0). Esta é a informação exibida usando gerenciamento de computadores | Ferramentas do sistema | Pastas compartilhadas | Sessões. Alguém pode me dar dicas sobre como fazer isso?

Acho que exigirá uma consulta WMI, mas minha pesquisa inicial online não revelou quais serão os detalhes da consulta.

Obrigado, Magicaandi

Foi útil?

Solução

Eu criei o seguinte 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
}

Os seguintes artigos foram úteis:

Como sempre, se você não consegue encontrar uma maneira de fazê -lo no PowerShell, veja se alguém fez algo semelhante em C#.

Outras dicas

Eu modifiquei um pouco para mostrar o nome do host em vez 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top