중복 관리 팩 별칭 제거
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
출력이 하나 이상의 행을 반환하는 경우 다음을 수행합니다.
관리 팩이 봉인되지 않은 경우
콘솔에서 관리 팩을 내보냅니다.
텍스트 편집기를 사용하여 관리 팩 XML을 엽니다.
중복 별칭을 식별합니다.
참조 아래의 별칭 중 하나와 XML 본문에서 별칭이 사용되는 다른 모든 위치의 이름을 바꿉니다.
이 예제에는 System Center Operations Manager 2019 UR4에서 중복으로 간주되는 두 개의 별칭이 있습니다.별칭이 사용되는 위치를 검색하려면 AliasName을 사용하여 XML을 검색합니다. 이 경우 BADALIAS입니다. 참조가 사용되는 위치를 확인합니다.
이러한 별칭 중 하나의 이름을 참조 아래의 고유한 이름으로 바꾸고 이전 이름의 모든 항목을 위 단계에서 검색된 새 이름으로 바꿉니다.
중복 별칭의 이름이 바뀌면 관리 팩을 System Center Operations Manager에 다시 가져옵니다.
관리 팩이 봉인된 경우
- 기본 설정 도구에 따라 봉인된 관리 팩을 엽니다.
- 중복 별칭을 식별합니다.
- 참조 아래의 별칭 중 하나와 XML 본문에서 별칭이 사용되는 다른 모든 위치의 이름을 바꿉니다.
- 관리 팩을 다시 빌드하고 System Center Operations Manager에서 다시 가져옵니다.
- XML을 편집하고 관리 팩을 봉인하고 관리 팩을 다시 설치하여 동일한 단계를 수행할 수 있습니다.
- 기본 설정 도구에 따라 봉인된 관리 팩을 엽니다.
모든 관리 팩에서 완화가 완료되면 PowerShell 스크립트 또는 T-SQL 스크립트를 다시 실행하여 출력을 반환하지 않도록 합니다.
출력으로 반환되는 각 관리 팩에 대해 위의 단계를 수행합니다.