Usuwanie zduplikowanych aliasów pakietów administracyjnych

W programach System Center Operations Manager 2019 UR4 i 2022 RTM aliasy referencyjne pakietów administracyjnych programu System Center Operations Manager uwzględniają wielkość liter i tworzą tylko unikatowe aliasy. W związku z tym uaktualnienia pakietu zbiorczego aktualizacji programu System Center Operations Manager lub uaktualnienia wersji nie powiodą się w środowisku, w którym znajdują się już zduplikowane aliasy referencyjne pakietów administracyjnych.

Ten artykuł pomaga usunąć zduplikowane aliasy referencyjne pakietu administracyjnego (jeśli są obecne), dzięki czemu uaktualnienia pakietu zbiorczego aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zostaną pomyślnie ukończone.

Przed uaktualnieniem do programu System Center Operations Manager 2019 UR4 należy usunąć wszystkie zduplikowane aliasy pakietów administracyjnych.

Wykrywanie zduplikowanych aliasów pakietów administracyjnych

Aby wykryć pakiety administracyjne z zduplikowanymi aliasami pakietów administracyjnych, wykonaj następujące czynności:

Uruchom program PowerShell ISE na serwerze zarządzania lub uruchom polecenie T-SQL w bazie danych operacji programu System Center Operations Manager.

Skrypt programu PowerShell

############################################
#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

Scenariusz 1

Jeśli dane wyjściowe skryptu programu PowerShell lub T-SQL nie zwracają żadnej wartości, nie ma zduplikowanych aliasów pakietów administracyjnych. Kontynuuj uaktualnianie usługi UR4.

Scenariusz 2

Jeśli dane wyjściowe zwracają co najmniej jeden wiersz, wykonaj następujące czynności:

  1. Jeśli pakiet administracyjny jest niezapieczętowany

    1. Wyeksportuj pakiet administracyjny z konsoli programu .

    2. Otwórz plik XML pakietu administracyjnego przy użyciu edytora tekstów.

    3. Zidentyfikuj zduplikowany alias.

    4. Zmień nazwę jednego z aliasów w obszarze Odwołanie i wszystkich innych miejscach, w których alias jest używany w treści XML.
      W tym przykładzie mamy dwa aliasy, które będą traktowane jako duplikaty w usłudze System Center Operations Manager 2019 UR4.

      Zrzut ekranu przedstawiający przykład aliasów.

      Aby wykryć, gdzie są używane aliasy, wyszukaj kod XML przy użyciu aliasu AliasName. W tym przypadku jest to BADALIAS. Zwróć uwagę na miejsca, w których jest używane odwołanie.

      Zmień nazwę jednego z tych aliasów na unikatową nazwę w obszarze Odwołanie i zastąp wszystkie wystąpienia starej nazwy nową nazwą wykrytą w powyższym kroku.

    5. Po zmianie nazw zduplikowanych aliasów ponownie zaimportuj pakiet administracyjny do programu System Center Operations Manager.

  2. Jeśli pakiet administracyjny jest zapieczętowany

    1. Otwórz zapieczętowany pakiet administracyjny zgodnie z narzędziem preferencji.
    2. Zidentyfikuj zduplikowany alias.
    3. Zmień nazwę jednego z aliasów w obszarze Odwołanie i wszystkich innych miejscach, w których alias jest używany w treści XML.
    4. Ponownie skompiluj pakiet administracyjny i ponownie zaimportuj go w programie System Center Operations Manager.
    5. Te same kroki można wykonać, edytując plik XML — uszczelniając pakiet administracyjny i ponownie zaimportując pakiet administracyjny.

Po zakończeniu ograniczania ryzyka we wszystkich pakietach administracyjnych uruchom ponownie skrypt programu PowerShell lub skrypt T-SQL, aby upewnić się, że nie zwraca żadnych danych wyjściowych.

Wykonaj powyższe kroki dla każdego pakietu administracyjnego zwróconego jako dane wyjściowe.