≡ Menu

PowerShell: Script to get local loggedon user information

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 {            


[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 @{             

    IF ($Sessions.count -ge 1)             
        return $sessions            
        '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.