Freigeben über


Entfernen doppelter Management Pack-Aliase

Mit System Center Operations Manager 2019 UR4 und 2022 RTM wird bei System Center Operations Manager Management Pack-Referenzaliasen die Groß-/Kleinschreibung beachtet und nur eindeutige Aliase erstellt. Daher schlägt system Center Operations Manager Updaterollupups oder Versionsupgrades in einer Umgebung fehl, in der doppelte Management Pack-Referenzalias bereits vorhanden sind.

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

Stellen Sie sicher, dass alle doppelten Management Pack-Aliase entfernt werden, 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 Entweder PowerShell ISE auf einem Verwaltungsserver, oder führen Sie die 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 nicht gesiegelt ist

    1. Exportieren Sie das Management Pack aus der Konsole.

    2. Öffnen Sie das Management Pack-XML mit einem Text-Editor.

    3. Identifizieren Sie den doppelten Alias.

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

      Screenshot des Beispiels 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 Tool der Voreinstellung.
    2. Identifizieren Sie den doppelten Alias.
    3. Benennen Sie einen der Aliase unter "Referenz " und alle anderen Stellen um, an denen der Alias im XML-Textkörper 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 sie ausführen, indem Sie das XML bearbeiten – Versiegeln des Management Packs und erneutes Importieren des Management Packs.

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 obigen Schritte für jedes Als Ausgabe zurückgegebene Management Pack aus.