Dela via


Ta bort dubblettalias för hanteringspaket

Med System Center Operations Manager 2019 UR4 och 2022 RTM är referensalias för System Center Operations Manager-hanteringspaket skiftlägeskänsliga och skapar endast unika alias. Därför misslyckas uppgraderingar av samlade System Center Operations Manager-uppdateringar eller versionsuppgraderingar i en miljö där dubbletter av referensalias för hanteringspaket redan finns.

Den här artikeln hjälper dig att ta bort de dubbla referensaliasen för hanteringspaket (om de finns) så att uppgraderingar av samlade System Center Operations Manager-uppdateringar eller versionsuppgraderingar slutförs.

Se till att ta bort alla dubbletter av hanteringspaketalias innan du uppgraderar till System Center Operations Manager 2019 UR4.

Identifiera dubblettalias för hanteringspaket

Gör följande för att identifiera hanteringspaket med dubbletter av hanteringspaketalias:

Starta Antingen PowerShell ISE på en hanteringsserver eller kör T-SQL mot System Center Operations Manager Operations Database.

PowerShell-skript

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

Om utdata från PowerShell- eller T-SQL-skriptet inte returnerar något värde finns det inga dubbletter av hanteringspaketalias. Fortsätt med UR4-uppgraderingen.

Scenario 2

Om utdata returnerar en eller flera rader gör du följande:

  1. Om hanteringspaketet inte är oförseglat

    1. Exportera hanteringspaketet från konsolen.

    2. Öppna XML-filen för hanteringspaketet med hjälp av en textredigerare.

    3. Identifiera dubblettaliaset.

    4. Byt namn på ett av aliasen under Referens och alla andra platser där aliaset används i XML-brödtexten.
      I det här exemplet har vi två alias, som kommer att betraktas som dubbletter i System Center Operations Manager 2019 UR4.

      Skärmbild som visar aliasexemplet.

      För att identifiera var aliasen används söker du i XML-filen med AliasName. I det här fallet är det BADALIAS. Observera de platser där referensen används.

      Byt namn på ett av dessa alias till ett unikt namn under Referens och ersätt alla förekomster av det gamla namnet med det nya namnet som identifierades i ovanstående steg.

    5. När dubblettaliasen har bytt namn importerar du hanteringspaketet till System Center Operations Manager igen.

  2. Om hanteringspaketet är förseglat

    1. Öppna det förseglade hanteringspaketet enligt önskat verktyg.
    2. Identifiera dubblettaliaset.
    3. Byt namn på ett av aliasen under Referens och alla andra platser där aliaset används i XML-brödtexten.
    4. Återskapa hanteringspaketet och importera igen i System Center Operations Manager.
    5. Samma steg kan utföras genom att redigera XML – Försegla hanteringspaketet och importera hanteringspaketet igen.

När du har åtgärdat alla hanteringspaket kör du PowerShell-skriptet eller T-SQL-skriptet igen för att säkerställa att det inte returnerar några utdata.

Följ stegen ovan för varje hanteringspaket som returneras som utdata.