Удаление повторяющихся псевдонимов пакета управления

В System Center Operations Manager 2019 UR4 и RTM 2022 эталонные псевдонимы пакета управления 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

Если выходные данные возвращают одну или несколько строк, выполните следующие действия:

  1. Если пакет управления незамечен

    1. Экспортируйте пакет управления из консоли.

    2. Откройте XML-файл пакета управления с помощью текстового редактора.

    3. Определите повторяющийся псевдоним.

    4. Переименуйте один из псевдонимов в разделе Ссылка и все остальные места, где псевдоним используется в тексте XML.
      В этом примере у нас есть два псевдонима, которые будут рассматриваться как дубликаты в System Center Operations Manager 2019 UR4.

      Снимок экрана: пример псевдонимов.

      Чтобы определить, где используются псевдонимы, выполните поиск в XML-файле по псевдониму AliasName. В данном случае это BADALIAS. Обратите внимание на места, где используется ссылка.

      Переименуйте один из этих псевдонимов на уникальное имя в разделе Ссылка и замените все вхождения старого имени новым именем, как было обнаружено на предыдущем шаге.

    5. После переименования повторяющихся псевдонимов повторно добавьте пакет управления в System Center Operations Manager.

  2. Если пакет управления запечатан

    1. Откройте запечатанный пакет управления в качестве предпочтительного средства.
    2. Определите повторяющийся псевдоним.
    3. Переименуйте один из псевдонимов в разделе Ссылка и все остальные места, где псевдоним используется в тексте XML.
    4. Перестройте пакет управления и повторно введите его в System Center Operations Manager.
    5. Те же действия можно выполнить, изменив XML- запечатывание пакета управления и повторное использование пакета управления.

После того как устранение рисков будет выполнено во всех пакетах управления, повторно запустите сценарий PowerShell или скрипт T-SQL, чтобы убедиться, что он не возвращает выходные данные.

Выполните описанные выше действия для каждого пакета управления, возвращенного в качестве выходных данных.