Udostępnij za pośrednictwem


Usuwanie zduplikowanych aliasów pakietu administracyjnego

W przypadku programu System Center Operations Manager 2019 UR4 i 2022 RTM aliasy referencyjne pakietu administracyjnego programu System Center Operations Manager są uwzględniane wielkości liter i będą tworzyć tylko unikatowe aliasy. W związku z tym uaktualnienia zbiorcze aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zakończy się niepowodzeniem w środowisku, w którym są już obecne zduplikowane aliasy referencyjne pakietu administracyjnego.

Ten artykuł pomaga usunąć zduplikowane aliasy odwołania do pakietu administracyjnego (jeśli istnieje), aby uaktualnienia zbiorcze aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zostały ukończone pomyślnie.

Przed uaktualnieniem do programu System Center Operations Manager 2019 UR4 upewnij się, że wszystkie zduplikowane aliasy pakietów administracyjnych zostaną usunięte.

Wykrywanie zduplikowanych aliasów pakietu administracyjnego

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 język T-SQL względem bazy danych operations 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 języka T-SQL nie zwracają żadnej wartości, nie ma zduplikowanych aliasów pakietu administracyjnego. Kontynuuj uaktualnianie 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 niezaużytowany

    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 wszystkie inne miejsca, 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 programie System Center Operations Manager 2019 UR4.

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

      Aby wykryć, gdzie są używane aliasy, wyszukaj kod XML za pomocą 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 nazwy 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 wszystkie inne miejsca, 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 kod XML — uszczelniając pakiet administracyjny i ponownie importując pakiet administracyjny.

Po zakończeniu ograniczania ryzyka dla wszystkich pakietów administracyjnych uruchom ponownie skrypt programu PowerShell lub skrypt języka 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.