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 des 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 permet de supprimer les alias de référence du pack d’administration dupliqués (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 dupliqués avant de procéder à la mise à niveau vers System Center Operations Manager 2019 UR4.
Détecter les alias de pack d’administration en double
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.
Script 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
Scénario 1
Si la sortie du script PowerShell ou T-SQL ne retourne aucune valeur, il n’existe aucun 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 :
Si le pack d’administration n’est pas scellé
Exportez le pack d’administration à partir de la console.
Ouvrez le xml du pack d’administration à l’aide d’un éditeur de texte.
Identifiez l’alias dupliqué.
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.Pour détecter l’emplacement où les alias sont utilisés, recherchez le code XML avec AliasName. Dans ce cas, c’est BADALIAS. Notez les emplacements où la référence est utilisée.
Renommez l’un de ces alias en un 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.
Une fois les alias dupliqués renommés, réimportez le pack d’administration dans System Center Operations Manager.
Si le pack d’administration est scellé
- Ouvrez le pack d’administration scellé en fonction de l’outil de préférence.
- Identifiez l’alias dupliqué.
- Renommez l’un des alias sous Référence et tous les autres emplacements où l’alias est utilisé dans le corps XML.
- Regénérer le pack d’administration et réimporter dans System Center Operations Manager.
- 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.
- Ouvrez le pack d’administration scellé en fonction de l’outil de préférence.
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 sortie.