Dubbele management pack-aliassen verwijderen

Met System Center Operations Manager 2019 UR4 en 2022 RTM zijn referentiealiassen van System Center Operations Manager-management pack hoofdlettergevoelig en worden alleen unieke aliassen gemaakt. Als gevolg hiervan mislukken updates van System Center Operations Manager-updatepakketten of versie-upgrades in een omgeving waarin dubbele referentiealiassen voor management pack al aanwezig zijn.

Dit artikel helpt bij het verwijderen van de dubbele naslagaliassen voor management pack (indien aanwezig) zodat updatepakketten van System Center Operations Manager of versie-upgrades met succes worden voltooid.

Zorg ervoor dat u alle dubbele management pack-aliassen verwijdert voordat u een upgrade uitvoert naar System Center Operations Manager 2019 UR4.

Dubbele management pack-aliassen detecteren

Ga als volgt te werk om management packs met dubbele management pack-aliassen te detecteren:

Start PowerShell ISE op een beheerserver of voer de T-SQL uit op de Operations Database van System Center Operations Manager.

PowerShell-script

############################################
#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

Scenario 1

Als de uitvoer van het PowerShell- of T-SQL-script geen waarde retourneert, zijn er geen dubbele management pack-aliassen. Ga verder met de UR4-upgrade.

Scenario 2

Als de uitvoer een of meer rijen retourneert, gaat u als volgt te werk:

  1. Als het management pack niet is verzegeld

    1. Exporteer het management pack vanuit de console.

    2. Open het management pack XML met behulp van een teksteditor.

    3. Identificeer de dubbele alias.

    4. Wijzig de naam van een van de aliassen onder Verwijzing en alle andere plaatsen waar de alias wordt gebruikt in de XML-hoofdtekst.
      In dit voorbeeld hebben we twee aliassen, die worden beschouwd als duplicaten in System Center Operations Manager 2019 UR4.

      Schermopname van het voorbeeld van de aliassen.

      Als u wilt detecteren waar de aliassen worden gebruikt, zoekt u in de XML met AliasName. In dit geval is het BADALIAS. Noteer de plaatsen waar de verwijzing wordt gebruikt.

      Wijzig de naam van een van deze aliassen in een unieke naam onder Verwijzing en vervang alle exemplaren van de oude naam door de nieuwe naam, zoals is gedetecteerd in de bovenstaande stap.

    5. Zodra de naam van de dubbele aliassen is gewijzigd, moet u het management pack opnieuw importeren in System Center Operations Manager.

  2. Als het management pack is verzegeld

    1. Open het verzegelde management pack volgens het hulpprogramma van voorkeur.
    2. Identificeer de dubbele alias.
    3. Wijzig de naam van een van de aliassen onder Verwijzing en alle andere plaatsen waar de alias wordt gebruikt in de XML-hoofdtekst.
    4. Herbouw het management pack en import opnieuw in System Center Operations Manager.
    5. Dezelfde stappen kunnen worden uitgevoerd door het XML-bestand te bewerken: het management pack verzegelen en het management pack opnieuw importeren.

Zodra de beperking is voltooid voor alle management packs, voert u het PowerShell-script of het T-SQL-script opnieuw uit om ervoor te zorgen dat er geen uitvoer wordt geretourneerd.

Volg de bovenstaande stappen voor elk management pack dat als uitvoer wordt geretourneerd.