There has been a WMI way to get info about the Sync service, MAs and connector space objects since the MIIS days. There used to be a bunch of vbscript samples on TechNet but I’ve never seen them updated for PowerShell. The other day I wanted to produce a report of MA stats and thought I’d be able to find an example to use – but I couldn’t so did it myself. Here’s my example script showing some of the useful info you can query with WMI.
PARAM ($LogFile) $FIMServer = get-wmiobject -Namespace "root\MicrosoftIdentityIntegrationServer" -class "MIIS_Server" $FIMMAs = get-wmiobject -Namespace "root\MicrosoftIdentityIntegrationServer" -class "MIIS_ManagementAgent" $FIMRunHistory = get-wmiobject -Namespace "root\MicrosoftIdentityIntegrationServer" -class "MIIS_RunHistory" Function WriteLog { PARAM($Message) END { write-host $Message $Message | Add-Content $LogFile } } Out-File -FilePath $LogFile -Encoding "Default" foreach ($MA in $FIMMAs) { WriteLog ($MA.Name) WriteLog ("Type: " + $MA.Type) WriteLog ("Connector Space:") WriteLog ("`tCSObjects: " + $MA.NumCSObjects().ReturnValue) WriteLog ("`t`tConnectors: " + $MA.NumTotalConnectors().ReturnValue) WriteLog ("`t`t`tManual Joins: " + $MA.NumExplicitConnectors().ReturnValue) WriteLog ("`t`tDisconnectors: " + $MA.NumTotalDisconnectors().ReturnValue) WriteLog ("`t`t`tExplicit Disconnectors: " + $MA.NumExplicitDisconnectors().ReturnValue) WriteLog ("`t`t`tFiltered Disconnectors: " + $MA.NumFilteredDisconnectors().ReturnValue) WriteLog ("`t`tPlaceholders: " + $MA.NumPlaceholders().ReturnValue) WriteLog ("`tPendingExports:") WriteLog ("`t`tAdds: " + $MA.NumExportAdd().ReturnValue) WriteLog ("`t`tDeletes: " + $MA.NumExportDelete().ReturnValue) WriteLog ("`t`tUpdates: " + $MA.NumExportUpdate().ReturnValue) WriteLog ("`n") WriteLog ("Run History:") $rh = $FIMRunHistory | where {$_.MaName -eq $MA.Name} foreach ($run in $rh) { WriteLog ("`t" + $run.RunProfile + " " + $run.RunStartTime + " " + $run.RunStatus) } WriteLog ("`n") WriteLog ("`tLast Run Errors:") [xml]$rd = $MA.RunDetails().ReturnValue $ImportErrors = $rd."run-history"."run-details"."step-details"."synchronization-errors"."import-error" WriteLog ("`tError`tDN`tSince") foreach ($importErr in $ImportErrors) { WriteLog ("`t" + $importErr."error-type" + " " + $importErr."dn" + " " + $importErr."first-occurred") } WriteLog ("`n") WriteLog ("`n") }
Carol this is an awesome script !!! Thanks for sharing 🙂
Great, thank you!
Awesome!