Supprimer les alias du pack d’administration en double

Avec System Center Operations Manager 2019 UR4 et 2022 RTM, les alias de référence du pack d’administration System Center Operations Manager respectent la casse et créent uniquement des alias uniques. Par conséquent, les mises à niveau des correctifs cumulatifs ou les mises à niveau de version de System Center Operations Manager échouent dans un environnement où des alias de référence de pack d’administration en double sont déjà présents.

Cet article vous aide à supprimer les alias de référence du pack d’administration en double (le cas échéant) afin que les mises à jour cumulatives de System Center Operations Manager ou les mises à niveau de version se terminent correctement.

Veillez à supprimer tous les alias de pack d’administration en double avant de procéder à la mise à niveau vers System Center Operations Manager 2019 UR4.

Détecter les alias du pack d’administration dupliqués

Pour détecter les packs d’administration avec des alias de pack d’administration en double, procédez comme suit :

Lancez PowerShell ISE sur un serveur d’administration ou exécutez T-SQL sur System Center Operations Manager Operations Database.

PowerShell Script

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

Scénario 1

Si la sortie du script PowerShell ou T-SQL ne retourne aucune valeur, il n’y a pas d’alias de pack d’administration en double. Passez à la mise à niveau d’UR4.

Scénario 2

Si la sortie retourne une ou plusieurs lignes, procédez comme suit :

  1. Si le pack d’administration est non scellé

    1. Exportez le pack d’administration à partir de la console.

    2. Ouvrez le fichier XML du pack d’administration à l’aide d’un éditeur de texte.

    3. Identifiez l’alias dupliqué.

    4. Renommez l’un des alias sous Référence et tous les autres emplacements où l’alias est utilisé dans le corps XML.
      Dans cet exemple, nous avons deux alias, qui seront considérés comme des doublons dans System Center Operations Manager 2019 UR4.

      Capture d’écran montrant l’exemple d’alias.

      Pour détecter où les alias sont utilisés, recherchez le code XML avec AliasName. Dans ce cas, il s’agit de BADALIAS. Notez les emplacements où la référence est utilisée.

      Renommez l’un de ces alias en nom unique sous Référence et remplacez toutes les occurrences de l’ancien nom par le nouveau nom détecté à l’étape ci-dessus.

    5. Une fois les alias dupliqués renommés, réimportez le pack d’administration dans System Center Operations Manager.

  2. Si le pack d’administration est scellé

    1. Ouvrez le pack d’administration scellé conformément à l’outil de préférence.
    2. Identifiez l’alias dupliqué.
    3. Renommez l’un des alias sous Référence et tous les autres emplacements où l’alias est utilisé dans le corps XML.
    4. Régénérez le pack d’administration et réimportez-le dans System Center Operations Manager.
    5. Les mêmes étapes peuvent être effectuées en modifiant le code XML - Sceller le pack d’administration et réimporter le pack d’administration.

Une fois l’atténuation effectuée sur tous les packs d’administration, réexécutez le script PowerShell ou le script T-SQL pour vous assurer qu’il ne retourne aucune sortie.

Suivez les étapes ci-dessus pour chaque pack d’administration retourné en tant que sortie.