Eliminación de alias duplicados del módulo de administración

Con System Center Operations Manager 2019 UR4 y 2022 RTM, los alias de referencia del módulo de administración de System Center Operations Manager distinguen mayúsculas de minúsculas y solo crearán alias únicos. Como resultado, las actualizaciones del paquete acumulativo de actualizaciones de System Center Operations Manager o las actualizaciones de versiones producirán un error en un entorno en el que los alias de referencia del módulo de administración duplicados ya están presentes.

Este artículo ayuda a quitar los alias de referencia del módulo de administración duplicados (si están presentes) para que las actualizaciones del paquete acumulativo de actualizaciones de System Center Operations Manager o las actualizaciones de versiones se completen correctamente.

Asegúrese de quitar todos los alias del módulo de administración duplicados antes de actualizar a System Center Operations Manager 2019 UR4.

Detección de alias duplicados del módulo de administración

Para detectar módulos de administración con alias de módulo de administración duplicados, haga lo siguiente:

Inicie PowerShell ISE en un servidor de administración o ejecute T-SQL en 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

Escenario 1

Si la salida del script de PowerShell o T-SQL no devuelve ningún valor, no hay alias de módulo de administración duplicados. Continúe con la actualización de UR4.

Escenario 2

Si la salida devuelve una o varias filas, haga lo siguiente:

  1. Si el módulo de administración no está sealed

    1. Exporte el módulo de administración desde la consola.

    2. Abra el XML del módulo de administración mediante un editor de texto.

    3. Identifique el alias duplicado.

    4. Cambie el nombre de uno de los alias en Referencia y todos los demás lugares donde se usa el alias en el cuerpo XML.
      En este ejemplo, tenemos dos alias, que se considerarán duplicados en System Center Operations Manager 2019 UR4.

      Captura de pantalla que muestra el ejemplo de alias.

      Para detectar dónde se usan los alias, busque el XML con AliasName. En este caso, es BADALIAS. Tenga en cuenta los lugares donde se usa la referencia.

      Cambie el nombre de uno de esos alias por un nombre único en Referencia y reemplace todas las apariciones del nombre anterior por el nuevo nombre, tal como se detectó en el paso anterior.

    5. Una vez que se cambie el nombre de los alias duplicados, vuelva a importar el módulo de administración a System Center Operations Manager.

  2. Si el módulo de administración está sellado

    1. Abra el módulo de administración sellado según la herramienta de preferencia.
    2. Identifique el alias duplicado.
    3. Cambie el nombre de uno de los alias en Referencia y todos los demás lugares donde se usa el alias en el cuerpo XML.
    4. Recompile el módulo de administración y vuelva a importarlo en System Center Operations Manager.
    5. Los mismos pasos se pueden realizar editando el XML: sellar el módulo de administración y volver a importar el módulo de administración.

Una vez realizada la mitigación en todos los módulos de administración, vuelva a ejecutar el script de PowerShell o el script T-SQL para asegurarse de que no devuelve ninguna salida.

Siga los pasos anteriores para cada módulo de administración devuelto como salida.