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:
Si el módulo de administración no está sealed
Exporte el módulo de administración desde la consola.
Abra el XML del módulo de administración mediante un editor de texto.
Identifique el alias duplicado.
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.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.
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.
Si el módulo de administración está sellado
- Abra el módulo de administración sellado según la herramienta de preferencia.
- Identifique el alias duplicado.
- 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.
- Recompile el módulo de administración y vuelva a importarlo en System Center Operations Manager.
- 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.
- Abra el módulo de administración sellado según la herramienta de preferencia.
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.