다음을 통해 공유


중복 관리 팩 별칭 제거

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 ISE를 시작하거나 System Center Operations Manager Operations Database에 대해 T-SQL을 실행합니다.

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에서 중복으로 간주되는 두 개의 별칭이 있습니다.

      별칭 예제를 보여 주는 스크린샷

      별칭이 사용되는 위치를 검색하려면 AliasName사용하여 XML을 검색합니다. 이 경우 BADALIAS입니다. 참조가 사용되는 위치를 확인합니다.

      이러한 별칭 중 하나의 이름을 참조 아래의 고유한 이름으로 바꾸고 이전 이름의 모든 항목을 위 단계에서 검색된 새 이름으로 바꿉니다.

    5. 중복 별칭의 이름이 바뀌면 관리 팩을 System Center Operations Manager에 다시 가져옵니다.

  2. 관리 팩이 봉인된 경우

    1. 기본 설정 도구에 따라 봉인된 관리 팩을 엽니다.
    2. 중복 별칭을 식별합니다.
    3. 참조 아래의 별칭 중 하나와 XML 본문에서 별칭이 사용되는 다른 모든 위치의 이름을 바꿉니다.
    4. 관리 팩을 다시 빌드하고 System Center Operations Manager에서 다시 가져옵니다.
    5. XML을 편집하고 관리 팩을 봉인하고 관리 팩을 다시 설치하여 동일한 단계를 수행할 수 있습니다.

모든 관리 팩에서 완화가 완료되면 PowerShell 스크립트 또는 T-SQL 스크립트를 다시 실행하여 출력을 반환하지 않도록 합니다.

출력으로 반환되는 각 관리 팩에 대해 위의 단계를 수행합니다.