Rimuovere gli alias duplicati del Management Pack

Con System Center Operations Manager 2019 UR4 e 2022 RTM, gli alias di riferimento del Management Pack di System Center Operations Manager fanno distinzione tra maiuscole e minuscole e creeranno solo alias univoci. Di conseguenza, gli aggiornamenti cumulativi o gli aggiornamenti della versione di System Center Operations Manager avranno esito negativo in un ambiente in cui sono già presenti alias di riferimento duplicati del Management Pack.

Questo articolo consente di rimuovere gli alias di riferimento duplicati del Management Pack (se presenti) in modo che gli aggiornamenti cumulativi o gli aggiornamenti della versione di System Center Operations Manager vengano completati correttamente.

Assicurarsi di rimuovere tutti gli alias duplicati del Management Pack prima di eseguire l'aggiornamento a System Center Operations Manager 2019 UR4.

Rilevare alias di Management Pack duplicati

Per rilevare i Management Pack con alias di Management Pack duplicati, eseguire le operazioni seguenti:

Avviare PowerShell ISE in un server di gestione o eseguire T-SQL nel database operativo di System Center Operations Manager.

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

Scenario 1

Se l'output dello script PowerShell o T-SQL non restituisce alcun valore, non sono presenti alias del Management Pack duplicati. Procedere con l'aggiornamento ur4.

Scenario 2

Se l'output restituisce una o più righe, eseguire le operazioni seguenti:

  1. Se il Management Pack non è bloccato

    1. Esportare il Management Pack dalla console.

    2. Aprire il file XML del Management Pack usando un editor di testo.

    3. Identificare l'alias duplicato.

    4. Rinominare uno degli alias in Riferimento e tutte le altre posizioni in cui l'alias viene usato nel corpo XML.
      In questo esempio sono disponibili due alias, che verranno considerati duplicati in System Center Operations Manager 2019 UR4.

      Screenshot che mostra l'esempio di alias.

      Per rilevare dove vengono usati gli alias, cercare il codice XML con AliasName. In questo caso, si tratta di BADALIAS. Prendere nota delle posizioni in cui viene usato il riferimento.

      Rinominare uno di questi alias in un nome univoco in Riferimento e sostituire tutte le occorrenze del nome precedente con il nuovo nome rilevato nel passaggio precedente.

    5. Dopo aver rinominato gli alias duplicati, reimportare il Management Pack in System Center Operations Manager.

  2. Se il Management Pack è bloccato

    1. Aprire il Management Pack bloccato in base allo strumento di preferenza.
    2. Identificare l'alias duplicato.
    3. Rinominare uno degli alias in Riferimento e tutte le altre posizioni in cui l'alias viene usato nel corpo XML.
    4. Ricompilare il Management Pack e reimportare in System Center Operations Manager.
    5. La stessa procedura può essere eseguita modificando il file XML, sigillando il Management Pack e reimportando il Management Pack.

Dopo aver eseguito la mitigazione in tutti i Management Pack, eseguire nuovamente lo script di PowerShell o T-SQL per assicurarsi che non restituisca alcun output.

Seguire i passaggi precedenti per ogni Management Pack restituito come output.