Link to home
Start Free TrialLog in
Avatar of Xytras1
Xytras1

asked on

Powershell PSLoggedon Active Directory

Trying to create a powershell script that will use the 5 results via get-adcomputer than use psloggedon to check if any users are logged on..

Is there a way to only display computers that do not have any one logged on? Been using link below but I don't think its what I want..



http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/17/use-powershell-to-detect-if-a-workstation-is-in-use.aspx


$Computers = (get-adcomputer -filter * -searchbase 'OU=Computers, DC=xytras,DC=com' -ResultSetSize 5 | select-object -ExpandProperty name)
Foreach ($Computer in $Computers)
{
    [object[]]$sessions = Invoke-Expression "c:\temp\PsLoggedon.exe -x -l \\$Computer" |
        Where-Object {$_ -match '^\s{2,}((?<domain>\w+)\\(?<user>\S+))|(?<user>\S+)'} |
        Select-Object @{
            Name='Computer'
            Expression={$Computer}
        },
        @{
            Name='Domain'
            Expression={$matches.Domain}
        },
        @{
            Name='User'
            Expression={$Matches.User}
        }
    IF ($Sessions.count -ge 1)
    {
        Write-Host ("{0} Users Logged into {1}" –f $Sessions.count,    
            $Computer) -ForegroundColor 'Green'
    }
    Else
    {
        Write-Host ("{0} can be rebooted!" -f $Computer), -Foreground 'Red'
           
    }
 }
ASKER CERTIFIED SOLUTION
Avatar of footech
footech
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Xytras1
Xytras1

ASKER

Thanks for the response. Went with this instead. Know to open Multiple sessions of psloggedon.....

$Computers = (get-adcomputer -filter * -searchbase 'OU=Computers,DC=xytras,DC=com' -ResultSetSize 3 | select-object -ExpandProperty name)
Foreach ($Computer in $Computers)
    {
        Invoke-Expression "c:\temp\PsLoggedon.exe -x -l \\$Computer" | Where-Object {$_ -contains 'No one is logged on locally.'}  | Select-Object $Computer | out-file -Append C:\temp\comzp.txt
    }