Ausgetauschte Clients und abgebaute Server bleiben als graue Agenten in Operations Manager stehen. Ein PowerShell-Skript findet Agenten, die seit 30 Tagen nicht erreichbar sind, und entfernt sie kontrolliert.
Wer mit Operations Manager nicht nur Server, sondern auch Clients überwacht, kennt das Problem: Geräte werden ausgetauscht oder entsorgt, ohne dass jemand den Agenten in SCOM entfernt. Übrig bleiben graue Agenten, die Ansichten verstopfen, Berichte verfälschen und Heartbeat-Alarme erzeugen. Der Wunsch aus der Community: eine Routine, die Agenten nach 30 Tagen ohne Kontakt automatisch entfernt.
Die Idee
Jeder Agent ist in SCOM als Objekt der Klasse Health Service vertreten. Dieses Objekt kennt seine Verfügbarkeit (IsAvailable) und den Zeitpunkt der letzten Änderung der Verfügbarkeit (AvailabilityLastModified). Ist ein Agent seit mehr als 30 Tagen nicht verfügbar, ist er ein Kandidat zum Entfernen.
Das Skript
param(
[int]$Days = 30,
[switch]$Delete
)
Import-Module OperationsManager
New-SCOMManagementGroupConnection -ComputerName localhost
$limit = (Get-Date).ToUniversalTime().AddDays(-$Days)
$hsClass = Get-SCOMClass -Name 'Microsoft.SystemCenter.HealthService'
$stale = Get-SCOMClassInstance -Class $hsClass | Where-Object {
-not $_.IsAvailable -and $_.AvailabilityLastModified -lt $limit
}
$agents = foreach ($hs in $stale) {
Get-SCOMAgent -DNSHostName $hs.DisplayName -ErrorAction SilentlyContinue
}
$agents | Select-Object DisplayName, @{n='Nicht erreichbar seit';e={
($stale | Where-Object DisplayName -eq $_.DisplayName).AvailabilityLastModified.ToLocalTime()
}} | Format-Table -AutoSize
if ($Delete -and $agents) {
$admin = (Get-SCOMManagementGroup).GetAdministration()
$col = New-Object 'System.Collections.ObjectModel.Collection[Microsoft.EnterpriseManagement.Administration.AgentManagedComputer]'
$agents | ForEach-Object { $col.Add($_) }
$admin.DeleteAgentManagedComputers($col)
Write-Host "$($col.Count) Agent(en) entfernt."
}
Ohne -Delete zeigt das Skript nur an, welche Agenten betroffen wären – ideal für einen ersten Probelauf.
In den Betrieb übernehmen
- Wöchentlich per Aufgabenplanung auf einem Management Server ausführen und das Ergebnis protokollieren.
- Server ausnehmen: Für Server ist ein automatisches Löschen riskant – ein länger ausgeschalteter Server würde sonst stillschweigend aus der Überwachung fallen. Beschränken Sie das automatische Löschen auf Clients, etwa über eine Namenskonvention oder eine Gruppe.
- Mit Active Directory abgleichen: Zusätzlich prüfen, ob das Computerkonto im AD noch existiert oder deaktiviert ist.
Heute
Das Skript nutzt die Cmdlets und die Administrationsschnittstelle von Operations Manager 2012 und neuer und funktioniert in 2019, 2022 und 2025. Für Clients setzen viele Unternehmen inzwischen auf Intune und Endpoint Analytics statt SCOM – für Server bleibt die regelmäßige Bereinigung ein wichtiger Hygieneschritt.