Compartilhar via


Remover aliases duplicados do pacote de gerenciamento

Com o System Center Operations Manager 2019 UR4 e o 2022 RTM, os aliases de referência do pacote de gerenciamento do System Center Operations Manager diferenciam maiúsculas de minúsculas e criarão apenas aliases exclusivos. Como resultado, as atualizações cumulativas de atualizações ou atualizações de versão do System Center Operations Manager falharão em um ambiente em que aliases de referência de pacote de gerenciamento duplicados já estão presentes.

Este artigo ajuda a remover os aliases de referência do pacote de gerenciamento duplicados (se houver) para que as atualizações cumulativas de atualizações do System Center Operations Manager ou as atualizações de versão sejam concluídas com êxito.

Certifique-se de remover todos os aliases duplicados do pacote de gerenciamento antes de atualizar para o System Center Operations Manager 2019 UR4.

Detectar aliases de pacote de gerenciamento duplicados

Para detectar pacotes de gerenciamento com aliases de pacote de gerenciamento duplicados, faça o seguinte:

Inicie o ISE do PowerShell em um servidor de gerenciamento ou execute o T-SQL no banco de dados de operações do System Center Operations Manager.

Script do 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

Cenário 1

Se a saída do script do PowerShell ou T-SQL não retornar nenhum valor, não haverá aliases de pacote de gerenciamento duplicados. Prossiga com a atualização do UR4.

Cenário 2

Se a saída retornar uma ou mais linhas, faça o seguinte:

  1. Se o pacote de gerenciamento não estiver lacrado

    1. Exporte o pacote de gerenciamento do console.

    2. Abra o XML do pacote de gerenciamento usando um editor de texto.

    3. Identifique o alias duplicado.

    4. Renomeie um dos aliases em Referência e todos os outros locais onde o alias é usado no corpo XML.
      Neste exemplo, temos dois aliases, que serão considerados como duplicatas no System Center Operations Manager 2019 UR4.

      Captura de tela mostrando o exemplo de aliases.

      Para detectar onde os aliases são usados, pesquise o XML com AliasName. Neste caso, é BADALIAS. Observe os locais onde a referência é usada.

      Renomeie um desses aliases para um nome exclusivo em Referência e substitua todas as ocorrências do nome antigo pelo novo nome, conforme detectado na etapa acima.

    5. Depois que os aliases duplicados forem renomeados, importe novamente o pacote de gerenciamento para o System Center Operations Manager.

  2. Se o pacote de gerenciamento estiver lacrado

    1. Abra o pacote de gerenciamento lacrado de acordo com a ferramenta de sua preferência.
    2. Identifique o alias duplicado.
    3. Renomeie um dos aliases em Referência e todos os outros locais onde o alias é usado no corpo XML.
    4. Recompile o pacote de gerenciamento e importe-o novamente no System Center Operations Manager.
    5. As mesmas etapas podem ser executadas editando o XML – Lacrando o pacote de gerenciamento e reimportando o pacote de gerenciamento.

Depois que a mitigação for concluída em todos os pacotes de gerenciamento, execute novamente o script do PowerShell ou o script T-SQL para garantir que ele não retorne nenhuma saída.

Siga as etapas acima para cada pacote de gerenciamento retornado como saída.