Rimuovere gli alias del Management Pack duplicati
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 degli aggiornamenti cumulativi o delle versioni di System Center Operations Manager avranno esito negativo in un ambiente in cui sono già presenti alias di riferimento del Management Pack duplicati.
Questo articolo consente di rimuovere gli alias di riferimento del Management Pack duplicati (se presente) in modo che gli aggiornamenti cumulativi o gli aggiornamenti della versione di System Center Operations Manager siano stati completati correttamente.
Assicurarsi di rimuovere tutti gli alias del Management Pack duplicati prima di eseguire l'aggiornamento a System Center Operations Manager 2019 UR4.
Rilevare gli alias del Management Pack duplicati
Per rilevare i Management Pack con alias del 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.
Script di 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
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 di UR4.
Scenario 2
Se l'output restituisce una o più righe, eseguire le operazioni seguenti:
Se il Management Pack non è bloccato
Esportare il Management Pack dalla console.
Aprire il codice XML del Management Pack usando un editor di testo.
Identificare l'alias duplicato.
Rinominare uno degli alias in Riferimento e in tutte le altre posizioni in cui viene usato l'alias nel corpo XML.
In questo esempio sono disponibili due alias, che verranno considerati duplicati in System Center Operations Manager 2019 UR4.Per rilevare dove vengono usati gli alias, cercare il codice XML con AliasName. In questo caso, è BADALIAS. Si notino le 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 come rilevato nel passaggio precedente.
Dopo aver rinominato gli alias duplicati, reimportare il Management Pack in System Center Operations Manager.
Se il Management Pack è bloccato
- Aprire il Management Pack bloccato in base allo strumento di preferenza.
- Identificare l'alias duplicato.
- Rinominare uno degli alias in Riferimento e in tutte le altre posizioni in cui viene usato l'alias nel corpo XML.
- Ricompilare il Management Pack e reimportare in System Center Operations Manager.
- Gli stessi passaggi possono essere eseguiti modificando il codice XML - Sealeding del Management Pack e reimportando il Management Pack.
- Aprire il Management Pack bloccato in base allo strumento di preferenza.
Una volta eseguita la mitigazione in tutti i Management Pack, eseguire di nuovo lo script di PowerShell o lo script T-SQL per assicurarsi che non restituisca alcun output.
Seguire i passaggi precedenti per ogni Management Pack restituito come output.