次の方法で共有


重複する管理パックのエイリアスを削除する

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. 管理パックが封印されていない場合

    1. コンソールから管理パックをエクスポートします。

    2. テキスト エディターを使用して管理パック XML を開きます。

    3. 重複するエイリアスを特定します。

    4. Referenceおよび XML 本文でエイリアスが使用されている他のすべての場所のエイリアスの名前を変更します。
      この例では、System Center Operations Manager 2019 UR4 で重複と見なされる 2 つのエイリアスがあります。

      エイリアスの例を示すスクリーンショット。

      エイリアスが使用されている場所を検出するには、 AliasName で XML を検索します。 この場合は、 BADALIASです。 参照が使用されている場所に注意してください。

      これらのエイリアスの 1 つを Reference で一意の名前に変更し上記の手順で検出された新しい名前で古い名前のすべての出現箇所を置き換えます。

    5. 重複するエイリアスの名前が変更されたら、管理パックを System Center Operations Manager に再インポートします。

  2. 管理パックがシールされている場合

    1. 好みのツールに従って、封印された管理パックを開きます。
    2. 重複するエイリアスを特定します。
    3. Referenceおよび XML 本文でエイリアスが使用されている他のすべての場所のエイリアスの名前を変更します。
    4. System Center Operations Manager で管理パックを再構築し、再インポートします。
    5. 同じ手順を実行するには、XML 管理パックを封印し 管理パックを 再インポートします

すべての管理パックで軽減策が完了したら、PowerShell スクリプトまたは T-SQL スクリプトを再実行して、出力が返されないようにします。

出力として返される各管理パックについて、上記の手順に従います。