dantpro icon

SCCM Client Agent Status Query (AD)

dantpro | PRO | 10/16/14 12:40:22 PM UTC | 0 ⭐ | 462 👁️ | Never ⏰ | []
PowerShell |

1.55 KB

|

None

|

0 👍

/

0 👎

$dc = 'domain.controller.FQDN'
$wsou = 'OU=Workstations_OU,DC=domain,DC=local'
$outfile = 'c:\path\to\ccmstatus.csv'
 
$Session = New-PSSession -ComputerName $dc
Invoke-Command -Session $Session -ScriptBlock {Import-Module ActiveDirectory -DisableNameChecking}
Import-PSSession -Session $Session -Module ActiveDirectory | Out-Null
$workstations = Get-ADComputer -Filter * -SearchBase $wsou | Select DNSHostName
Remove-PSSession $Session
$statuses = @()
$Count = 0
$SkippedCount = 0
$ActiveCount = 0
$InactiveCount = 0
$NotFoundCount = 0
$Total=$workstations.Count
foreach ($workstation in $workstations) 
{
if (Test-Connection -ComputerName $workstation.DNSHostName -Quiet -Count 1) 
 {
  $status = Get-Service -ComputerName $workstation.DNSHostName -Name 'CcmExec' -ErrorAction:SilentlyContinue | Select Status, @{Name='Workstation';Expression={$workstation.DNSHostName}}
  if ($status) 
  {
   if ($Status.Status -eq 'Running') {$ActiveCount++} else {$InactiveCount++}
  } else
  {
   $NotFoundCount++
   $status = New-Object PsObject -Property @{Workstation=($workstation.DNSHostName);Status='Not found'}
  }
  $statuses += $status
 } else 
 {
  $SkippedCount++
 }
 $Count++
 $CurrentOperation = 'checked: '+$Count+'/'+$Total+', skipped: '+$SkippedCount+', active: '+$ActiveCount+', inactive: '+$InactiveCount+', not found: '+$NotFoundCount
 Write-Progress -Activity 'Checking SCCM client status' -CurrentOperation $CurrentOperation -PercentComplete ($Count/$Total*100)
}
$statuses | Export-Csv -Delimiter ';' -NoTypeInformation -Path $outfile

Comments