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.Domai n}
},
@{
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'
}
}
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+)\\(
Select-Object @{
Name='Computer'
Expression={$Computer}
},
@{
Name='Domain'
Expression={$matches.Domai
},
@{
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
$Computers = (get-adcomputer -filter * -searchbase 'OU=Computers,DC=xytras,DC
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
}