How to remove old product connectors from Operations Manager

This article describes how to remove an old product connector from System Center Operations Manager by using a PowerShell script.

Original product version:   System Center Operations Manager
Original KB number:   2626670

Summary

Removing an old product connector from System Center Operations Manager may be necessary if the product connector is no longer used in the environment. There is no Delete option in the admin console UI for product connectors so the script can be used to achieve the desired results.

PowerShell script

Use the following PowerShell script to remove the product connector:

Note

Internal connectors should not be removed, also be sure to backup both the Operational database and the data warehouse database before running this. Also save the following scripts as DeleteConnector.ps1.

param(
    [String] $connectorName,
    [String] $mgName="localhost"
)

add-pssnapin Microsoft.EnterpriseManagement.OperationsManager.Client
$installDirPS = (get-itemproperty -path 'hklm:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup' -name InstallDirectory).InstallDirectory
set-location $installDirPS
Microsoft.EnterpriseManagement.OperationsManager.ClientShell.Startup.ps1

$mg = new-object Microsoft.EnterpriseManagement.ManagementGroup $mgName
$admin = $mg.GetConnectorFrameworkAdministration()

##########################################################################################
# Configures a connector with the specified name.
##########################################################################################
function New-Connector([String] $name)
{
    $connectorForTest = $null;
    foreach($connector in $admin.GetMonitoringConnectors())
    {
     if($connector.Name -eq ${name})
     {
      $connectorForTest = Get-Connector -id $connector.id
     }
    }

    if ($connectorForTest -eq $null)
    {
        $testConnector = New-Object Microsoft.EnterpriseManagement.ConnectorFramework.ConnectorInfo
        $testConnector.Name = $name
        $testConnector.Description = "${name} Description"
        $testConnector.DiscoveryDataIsManaged = $false
        $connectorForTest = $admin.Setup($testConnector)
        $connectorForTest.Initialize();
    }
    return $connectorForTest
}


##########################################################################################
# Removes a connector with the specified name.
##########################################################################################
function Remove-Connector([String] $name)
{
    $testConnector = $null
    foreach($connector in $admin.GetMonitoringConnectors())
    {
     if($connector.Name -eq ${name})
     {
      $testConnector = Get-Connector -id $connector.id
     }
    }
    if ($testConnector -ne $null)
    {
    if($testConnector.Initialized)
    {
    foreach($alert in $testConnector.GetMonitoringAlerts())
    {
     $alert.ConnectorId = $null;
     $alert.Update("Delete Connector");
    }
    $testConnector.Uninitialize()
    }
    $connectorIdForTest = $admin.Cleanup($testConnector)
    }
}

##########################################################################################
# Delete a connector's Subscription
##########################################################################################
function Delete-Subscription([String] $name)
{
 foreach($testconnector in $admin.GetMonitoringConnectors())
 {
   if($testconnector.Name -eq $name)
   {
     $connector = Get-Connector -id $testconnector.id
   }
 }
 $subs = $admin.GetConnectorSubscriptions()
 foreach($sub in $subs)
 {
  if($sub.MonitoringConnectorId -eq $connector.id)
  {
   $admin.DeleteConnectorSubscription($admin.GetConnectorSubscription($sub.Id))
  }
 }
}

#New-Connector $connectorName
write-host "Delete-Subscription"
Delete-Subscription $connectorName
write-host "Remove-Connector"
Remove-Connector $connectorName

More information

Usage: DeleteConnector.ps1 para1 para2

para1: Connector name

para2: Management server name, Optional, default value: localhost

If you attempt to delete the Operations Manager internal connector from the database, it will generate the following error:

Exception content:

Exception calling "Setup" with "1" argument(s): "Discovery data generated by invalid connector:7431E155-3D9E-4724-895E-C03BA951A352."