Usuwanie zduplikowanych aliasów pakietów administracyjnych
W programach System Center Operations Manager 2019 UR4 i 2022 RTM aliasy referencyjne pakietów administracyjnych programu System Center Operations Manager uwzględniają wielkość liter i tworzą tylko unikatowe aliasy. W związku z tym uaktualnienia pakietu zbiorczego aktualizacji programu System Center Operations Manager lub uaktualnienia wersji nie powiodą się w środowisku, w którym znajdują się już zduplikowane aliasy referencyjne pakietów administracyjnych.
Ten artykuł pomaga usunąć zduplikowane aliasy referencyjne pakietu administracyjnego (jeśli są obecne), dzięki czemu uaktualnienia pakietu zbiorczego aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zostaną pomyślnie ukończone.
Przed uaktualnieniem do programu System Center Operations Manager 2019 UR4 należy usunąć wszystkie zduplikowane aliasy pakietów administracyjnych.
Wykrywanie zduplikowanych aliasów pakietów administracyjnych
Aby wykryć pakiety administracyjne z zduplikowanymi aliasami pakietów administracyjnych, wykonaj następujące czynności:
Uruchom program PowerShell ISE na serwerze zarządzania lub uruchom polecenie T-SQL w bazie danych operacji programu System Center Operations Manager.
Skrypt programu 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
Scenariusz 1
Jeśli dane wyjściowe skryptu programu PowerShell lub T-SQL nie zwracają żadnej wartości, nie ma zduplikowanych aliasów pakietów administracyjnych. Kontynuuj uaktualnianie usługi UR4.
Scenariusz 2
Jeśli dane wyjściowe zwracają co najmniej jeden wiersz, wykonaj następujące czynności:
Jeśli pakiet administracyjny jest niezapieczętowany
Wyeksportuj pakiet administracyjny z konsoli programu .
Otwórz plik XML pakietu administracyjnego przy użyciu edytora tekstów.
Zidentyfikuj zduplikowany alias.
Zmień nazwę jednego z aliasów w obszarze Odwołanie i wszystkich innych miejscach, w których alias jest używany w treści XML.
W tym przykładzie mamy dwa aliasy, które będą traktowane jako duplikaty w usłudze System Center Operations Manager 2019 UR4.Aby wykryć, gdzie są używane aliasy, wyszukaj kod XML przy użyciu aliasu AliasName. W tym przypadku jest to BADALIAS. Zwróć uwagę na miejsca, w których jest używane odwołanie.
Zmień nazwę jednego z tych aliasów na unikatową nazwę w obszarze Odwołanie i zastąp wszystkie wystąpienia starej nazwy nową nazwą wykrytą w powyższym kroku.
Po zmianie nazw zduplikowanych aliasów ponownie zaimportuj pakiet administracyjny do programu System Center Operations Manager.
Jeśli pakiet administracyjny jest zapieczętowany
- Otwórz zapieczętowany pakiet administracyjny zgodnie z narzędziem preferencji.
- Zidentyfikuj zduplikowany alias.
- Zmień nazwę jednego z aliasów w obszarze Odwołanie i wszystkich innych miejscach, w których alias jest używany w treści XML.
- Ponownie skompiluj pakiet administracyjny i ponownie zaimportuj go w programie System Center Operations Manager.
- Te same kroki można wykonać, edytując plik XML — uszczelniając pakiet administracyjny i ponownie zaimportując pakiet administracyjny.
- Otwórz zapieczętowany pakiet administracyjny zgodnie z narzędziem preferencji.
Po zakończeniu ograniczania ryzyka we wszystkich pakietach administracyjnych uruchom ponownie skrypt programu PowerShell lub skrypt T-SQL, aby upewnić się, że nie zwraca żadnych danych wyjściowych.
Wykonaj powyższe kroki dla każdego pakietu administracyjnego zwróconego jako dane wyjściowe.