Determine os usuários acessando uma pasta compartilhada usando PowerShell
-
22-09-2019 - |
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
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:
- http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/filesfolders/sharedfolders/
- http://www.computerperformance.co.uk/powershell/powershell_wmi_shares.htm
- http://www.codeproject.com/kb/cs/networkspy.aspx?msg=2384830
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