重複する管理パックのエイリアスを削除する
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 つ以上の行が返される場合は、次の操作を行います。
管理パックが封印されていない場合
コンソールから管理パックをエクスポートします。
テキスト エディターを使用して管理パック XML を開きます。
重複するエイリアスを特定します。
Referenceおよび XML 本文でエイリアスが使用されている他のすべての場所のエイリアスの名前を変更します。
この例では、System Center Operations Manager 2019 UR4 で重複と見なされる 2 つのエイリアスがあります。エイリアスが使用されている場所を検出するには、 AliasName で XML を検索します。 この場合は、 BADALIASです。 参照が使用されている場所に注意してください。
これらのエイリアスの 1 つを Reference で一意の名前に変更し上記の手順で検出された新しい名前で古い名前のすべての出現箇所を置き換えます。
重複するエイリアスの名前が変更されたら、管理パックを System Center Operations Manager に再インポートします。
管理パックがシールされている場合
すべての管理パックで軽減策が完了したら、PowerShell スクリプトまたは T-SQL スクリプトを再実行して、出力が返されないようにします。
出力として返される各管理パックについて、上記の手順に従います。