Entfernen doppelter Management Pack-Aliase

Bei System Center Operations Manager 2019 UR4 und 2022 RTM wird bei Referenzaliasen des System Center Operations Manager Management Packs die Groß-/Kleinschreibung beachtet und nur eindeutige Aliase erstellt. Daher schlagen Updaterollupups oder Versionsupgrades von System Center Operations Manager in einer Umgebung fehl, in der bereits doppelte Management Pack-Verweisaliase vorhanden sind.

In diesem Artikel werden die doppelten Management Pack-Referenzaliase (sofern vorhanden) entfernt, sodass Updaterollupups oder Versionsupgrades von System Center Operations Manager erfolgreich abgeschlossen werden.

Stellen Sie sicher, dass Sie alle doppelten Management Pack-Aliase entfernen, bevor Sie ein Upgrade auf System Center Operations Manager 2019 UR4 durchführen.

Erkennen doppelter Management Pack-Aliase

Gehen Sie wie folgt vor, um Management Packs mit doppelten Management Pack-Aliasen zu erkennen:

Starten Sie powerShell ISE auf einem Verwaltungsserver, oder führen Sie T-SQL für System Center Operations Manager Operations Database aus.

PowerShell-Skript

############################################
#Identify MPs imported with duplicate Aliases
Import-Module OperationsManager
$mps = Get-SCOMManagementPack
foreach ($mp in $mps)
{
  	$hashTable = @{}
 	 foreach ($ref in $mp.References)
  	{
   	 try {$hashTable.Add($ref.Key, $ref.Value)}
    	catch
    	{
     	 $MPName = $mp.Name
     	 $MPDisplayName = $mp.DisplayName
     	 $MPVersion = $mp.Version
        "MP contains duplicate aliases: Name=($MPName) DiplayName=($MPDisplayName) Version=($MPVersion)"
    	}
  	}
}
############################################ 

T-SQL

-- LIST ALL MPs that have a duplicate Alias reference
DECLARE @mpFriendlyName NVARCHAR(255),
        @mpName         NVARCHAR(255),
        @mpId           UNIQUEIDENTIFIER,
        @mpXml          AS XML

CREATE TABLE #badmptable
  (
     mpid           UNIQUEIDENTIFIER,
     mpname         NVARCHAR(255),
     mpfriendlyname NVARCHAR(255)
  )

DECLARE mp_cursor CURSOR local forward_only read_only FOR
  SELECT mpfriendlyname,
         mpname,
         managementpackid,
         CONVERT(XML, mpxml)
  FROM   managementpack

OPEN mp_cursor

FETCH next FROM mp_cursor INTO @mpFriendlyName, @mpName, @mpId, @mpXml

WHILE @@FETCH_STATUS = 0
  BEGIN
      SELECT n.value('@Alias', 'nvarchar(255)') AS mpRef
      INTO   #temprefs
      FROM   @mpXml.nodes('/ManagementPack/Manifest/References/Reference') AS a(
             n)

      IF EXISTS (SELECT Count(*)
                 FROM   #temprefs
                 GROUP  BY mpref
                 HAVING Count(*) > 1)
        BEGIN
            INSERT INTO #badmptable
                        (mpid,
                         mpname,
                         mpfriendlyname)
            VALUES      ( @mpId,
                          @mpName,
                          @mpFriendlyName )
        END

      DROP TABLE #temprefs

      FETCH next FROM mp_cursor INTO @mpFriendlyName, @mpName, @mpId, @mpXml
  END

CLOSE mp_cursor

DEALLOCATE mp_cursor

SELECT *
FROM   #badmptable

DROP TABLE #badmptable
--End

Szenario 1

Wenn die Ausgabe des PowerShell- oder T-SQL-Skripts keinen Wert zurückgibt, gibt es keine doppelten Management Pack-Aliase. Fahren Sie mit dem UR4-Upgrade fort.

Szenario 2

Wenn die Ausgabe eine oder mehrere Zeilen zurückgibt, gehen Sie wie folgt vor:

  1. Wenn das Management Pack entsiegelt ist

    1. Exportieren Sie das Management Pack aus der Konsole.

    2. Öffnen Sie das Management Pack-XML mithilfe eines Text-Editors.

    3. Identifizieren Sie den doppelten Alias.

    4. Benennen Sie einen der Aliase unter Verweis und alle anderen Stellen um, an denen der Alias im XML-Text verwendet wird.
      In diesem Beispiel haben wir zwei Aliase, die in System Center Operations Manager 2019 UR4 als Duplikate betrachtet werden.

      Screenshot: Beispiel für Aliase

      Um zu erkennen, wo die Aliase verwendet werden, durchsuchen Sie den XML-Code mit AliasName. In diesem Fall ist es BADALIAS. Beachten Sie die Stellen, an denen der Verweis verwendet wird.

      Benennen Sie einen dieser Aliase unter Verweis in einen eindeutigen Namen um, und ersetzen Sie alle Vorkommen des alten Namens durch den neuen Namen, wie im obigen Schritt erkannt.

    5. Nachdem die doppelten Aliase umbenannt wurden, importieren Sie das Management Pack erneut in System Center Operations Manager.

  2. Wenn das Management Pack versiegelt ist

    1. Öffnen Sie das versiegelte Management Pack gemäß dem bevorzugten Tool.
    2. Identifizieren Sie den doppelten Alias.
    3. Benennen Sie einen der Aliase unter Verweis und alle anderen Stellen um, an denen der Alias im XML-Text verwendet wird.
    4. Erstellen Sie das Management Pack neu, und importieren Sie es in System Center Operations Manager erneut.
    5. Die gleichen Schritte können durch Bearbeiten des XML-Codes – Versiegeln des Management Packs und erneutes Importieren des Management Packs ausgeführt werden.

Nachdem die Entschärfung für alle Management Packs durchgeführt wurde, führen Sie das PowerShell-Skript oder das T-SQL-Skript erneut aus, um sicherzustellen, dass keine Ausgabe zurückgegeben wird.

Führen Sie die oben genannten Schritte für jedes Management Pack aus, das als Ausgabe zurückgegeben wird.