Usuwanie zduplikowanych aliasów pakietu administracyjnego
W przypadku programu System Center Operations Manager 2019 UR4 i 2022 RTM aliasy referencyjne pakietu administracyjnego programu System Center Operations Manager są uwzględniane wielkości liter i będą tworzyć tylko unikatowe aliasy. W związku z tym uaktualnienia zbiorcze aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zakończy się niepowodzeniem w środowisku, w którym są już obecne zduplikowane aliasy referencyjne pakietu administracyjnego.
Ten artykuł pomaga usunąć zduplikowane aliasy odwołania do pakietu administracyjnego (jeśli istnieje), aby uaktualnienia zbiorcze aktualizacji programu System Center Operations Manager lub uaktualnienia wersji zostały ukończone pomyślnie.
Przed uaktualnieniem do programu System Center Operations Manager 2019 UR4 upewnij się, że wszystkie zduplikowane aliasy pakietów administracyjnych zostaną usunięte.
Wykrywanie zduplikowanych aliasów pakietu administracyjnego
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 język T-SQL względem bazy danych operations 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 języka T-SQL nie zwracają żadnej wartości, nie ma zduplikowanych aliasów pakietu administracyjnego. Kontynuuj uaktualnianie ur4.
Scenariusz 2
Jeśli dane wyjściowe zwracają co najmniej jeden wiersz, wykonaj następujące czynności:
Jeśli pakiet administracyjny jest niezaużytowany
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 wszystkie inne miejsca, 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 programie System Center Operations Manager 2019 UR4.Aby wykryć, gdzie są używane aliasy, wyszukaj kod XML za pomocą 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 nazwy 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 wszystkie inne miejsca, 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 kod XML — uszczelniając pakiet administracyjny i ponownie importując pakiet administracyjny.
- Otwórz zapieczętowany pakiet administracyjny zgodnie z narzędziem preferencji.
Po zakończeniu ograniczania ryzyka dla wszystkich pakietów administracyjnych uruchom ponownie skrypt programu PowerShell lub skrypt języka 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.