I have always put this one in the "I'll get round to it" pile. Today, I have finally got round to it!
You can quite easily determine who is connected to a Windows Server by going to Computer Manager and choosing shared folders - sessions. You can also see how many people are connected to a share by going to Computer Manager and choosing shared folders - shares. What i want to know is WHO is connected to each share. I have had quite a big reason to do this recently and so I have finally got round to creating a powershell 2 function to do precicely that!
It will accept 2 parameters, a servername and an optional sharename to return only the connections from a particular share.
Regards
Adam
You can quite easily determine who is connected to a Windows Server by going to Computer Manager and choosing shared folders - sessions. You can also see how many people are connected to a share by going to Computer Manager and choosing shared folders - shares. What i want to know is WHO is connected to each share. I have had quite a big reason to do this recently and so I have finally got round to creating a powershell 2 function to do precicely that!
It will accept 2 parameters, a servername and an optional sharename to return only the connections from a particular share.
Regards
Adam
function get-shareConnection {
#generate the help file
<# .SYNOPSIS Get the current users that are connected to shares on a server .DESCRIPTION Get the current users that are connected to shares on a server. This can be filtered to a specific share. .NOTES Function Name : get-shareConnection Author : Adam Stone Requires : PowerShell V2 .LINK http://adadmin.blogspot.com .EXAMPLE Simple usage - get all connections for all shares on server1 PS C:\> get-shareConnection -server Server1
.EXAMPLE
Simple usage - get all connections for the users share on server1
PS C:\> get-shareConnection -server Server1 -sharename users
.EXAMPLE
Simple usage - get all connections for the users share on server1 (using positional parameters)
PS C:\>; get-shareConnection Server1 users
.PARAMETER server
The servername to connect to.
.PARAMETER sharename
optional sharename to return users connected to this share
#>
#parameter validataion
param (
[Parameter(Position=0, Mandatory=$true,HelpMessage="Please enter a server name")]
[string] $Server = ""
,
[Parameter(Position=1,Mandatory=$false)]
[alias("share")]
[string] $sharename = "all"
)
#the processes the function will complete
process {
$serverconnection = Get-WmiObject -ComputerName $Server -Class Win32_SessionConnection
$users = @()
foreach ($connection in $serverconnection){
$conn = "" | select "ip","user","share"
$split = $connection.Dependent.split(",")
$conn.ip = $split[0].replace("Win32_ServerConnection.computername=","").replace('"','')
$conn.user = $split[2].replace("UserName=","").replace('"','')
$conn.share = $split[1].replace("sharename=","").replace('"','')
if ($sharename -eq "all"){$users += $conn}
else{if ($conn.share -eq $sharename){$users += $conn}}
}
return $users
}
}#end function
Comments
Post a Comment