Querying the user lists who interactively logged on to a computer. I want to do this from very long time using powershell so that I can use it in my other powershell scripts. Earlier I tried to do it via WMI but I was not very successful. After struggling for some time, I finally made a code which works for most windows platforms from which you can query interactively logged on users information.
This script is a wrapper which depends on most famous psloggedon utility. It parses the output of the psloggedon util and prepares a object with domain and user information.
function Get-LoggedOnUsers { [cmdletbinding()] param( [parameter(valuefrompipelinebypropertyname=$true)] [string]$ComputerName = $env:computername ) begin {} process { [object[]]$sessions = Invoke-Expression "PsLoggedon.exe -x -l \$ComputerName 2> null" | Where-Object {$_ -match '^s{2,}((?w+)\(?S+))'} | Select-Object @{ Name='Computer' Expression={$ComputerName} }, @{ Name='Domain' Expression={$matches.Domain} }, @{ Name='User' Expression={$Matches.User} } IF ($Sessions.count -ge 1) { return $sessions } Else { 'No user logins found' } } end {} }
I found this code originally at Scripting Guys blog. I had to make few modifications to make it parse the output properly and exclude the psloggedon util logo information.