Удаление псевдонимов повторяющихся пакетов управления
При использовании System Center Operations Manager 2019 UR4 и 2022 RTM ссылочные псевдонимы пакета управления System Center Operations Manager чувствительны к регистру и создают только уникальные псевдонимы. В результате накопительный пакет обновления System Center Operations Manager или обновления версий завершится сбоем в среде, в которой уже присутствуют повторяющиеся псевдонимы ссылочного пакета управления.
Эта статья помогает удалить псевдонимы ссылок на повторяющийся пакет управления (при наличии), чтобы накопительный пакет обновления System Center Operations Manager успешно завершил обновление или обновление версий.
Перед обновлением до System Center Operations Manager 2019 UR4 необходимо удалить все повторяющиеся псевдонимы пакета управления.
Обнаружение псевдонимов повторяющихся пакетов управления
Чтобы обнаружить пакеты управления с повторяющимися псевдонимами пакетов управления, сделайте следующее:
Запустите среду сценариев PowerShell на сервере управления или запустите T-SQL в Базе данных операций System Center Operations Manager.
Сценарий 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
Сценарий 1
Если выходные данные скрипта PowerShell или T-SQL не возвращают значения, то псевдонимы пакета управления не повторяются. Перейдите к обновлению UR4.
Сценарий 2
Если выходные данные возвращают одну или несколько строк, выполните следующие действия:
Если пакет управления не указан
Экспортируйте пакет управления из консоли.
Откройте XML-файл пакета управления с помощью текстового редактора.
Определите повторяющийся псевдоним.
Переименуйте один из псевдонимов в разделе "Справочник" и все остальные места, где псевдоним используется в xml-тексте.
В этом примере у нас есть два псевдонима, которые будут считаться дубликатами в System Center Operations Manager 2019 UR4.Чтобы определить, где используются псевдонимы, выполните поиск xml с помощью AliasName. В этом случае это BADALIAS. Обратите внимание на места, в которых используется ссылка.
Переименуйте один из этих псевдонимов в уникальное имя в разделе "Ссылка " и замените все вхождения старого имени новым именем, как было обнаружено на предыдущем шаге.
После переименования повторяющихся псевдонимов повторно присвойтие пакету управления в System Center Operations Manager.
Если пакет управления запечатан
- Откройте запечатанный пакет управления в качестве средства предпочтения.
- Определите повторяющийся псевдоним.
- Переименуйте один из псевдонимов в разделе "Справочник" и все остальные места, где псевдоним используется в xml-тексте.
- Перестройте пакет управления и повторно в System Center Operations Manager.
- Те же действия можно выполнить, изменив XML- запечатав пакет управления и повторно указав пакет управления.
- Откройте запечатанный пакет управления в качестве средства предпочтения.
После устранения рисков во всех пакетах управления повторно запустите скрипт PowerShell или скрипт T-SQL, чтобы убедиться, что он не возвращает выходные данные.
Выполните описанные выше действия для каждого пакета управления, возвращаемого в виде выходных данных.