@@ -103,7 +103,7 @@ PROCESS
103103 }
104104 Write-Output " $ ( Time- Stamp) Backing Up the following: $ ( $ManagementPack.DisplayName ) "
105105 $ManagementPack | Export-SCOMManagementPack - Path $ExportPath - ErrorAction Stop | Out-Null
106- Write-Output " $ ( Time- Stamp) Saved to: $ExportPath \$ ( $ManagementPack.Name ) .xml"
106+ Write-Output " $ ( Time- Stamp) Saved to: $ExportPath \$ ( $ManagementPack.Name ) .backup. xml"
107107 if ($Unsealed )
108108 {
109109 Write-Output " $ ( Time- Stamp) Attempting to remove related data in the Unsealed Management Pack: $ExportPath \$ ( $ManagementPack.Name ) .xml"
@@ -128,6 +128,20 @@ PROCESS
128128 $nodes += $Override | Select-Object - ExpandProperty Node
129129 }
130130
131+ # Find all unitmonitors
132+ $Monitors = $xmlData.ChildNodes | Select-Xml - Xpath " //Monitors"
133+ foreach ($Monitor in $Monitors )
134+ {
135+ $nodes += $Monitor | Select-Object - ExpandProperty Node
136+ }
137+
138+ # Find all assemblies
139+ $Managed = $xmlData.ChildNodes | Select-Xml - Xpath " //Managed"
140+ foreach ($Item in $Managed )
141+ {
142+ $nodes += $Item | Select-Object - ExpandProperty Node
143+ }
144+
131145 foreach ($node in $nodes )
132146 {
133147 $aliasFound = $node.ChildNodes.Where { $_.Context -match " $ ( $reference.Alias ) " }
@@ -140,29 +154,30 @@ PROCESS
140154 }
141155 [void ]$reference.ParentNode.RemoveChild ($reference )
142156 $languagePacks = $xmlData.ManagementPack.LanguagePacks.LanguagePack.DisplayStrings.DisplayString | Where { $_.ElementID -like $referencingId }
143- [void ]$languagePacks.ParentNode.RemoveChild ($languagePacks )
157+ try { [void ]$languagePacks.ParentNode.RemoveChild ($languagePacks ) }
158+ catch { Write-Verbose " Nothing found in Language Packs inside XML." }
144159
145160 }
146161 $xmlData.Save (" $ExportPath \$ ( $ManagementPack.Name ) .xml" )
147162 Write-Output " $ ( Time- Stamp) Importing the modified Unsealed Management Pack: $ExportPath \$ ( $ManagementPack.Name ) .xml"
148- Import-SCOMManagementPack - FullName " $ExportPath \$ ( $ManagementPack.Name ) .xml" | Out-Null
149- <#
150-
151- foreach ($alias in $aliases)
163+ Import-SCManagementPack - FullName " $ExportPath \$ ( $ManagementPack.Name ) .xml" - ErrorAction SilentlyContinue
164+ if ($ManagementPack.Name -in $unsealedMPs )
152165 {
153- $xmlData.ChildNodes.Monitoring.Overrides.MonitorPropertyOverride | Where { $($_.Context -split '!')[0] -eq $alias } | ForEach-Object { $removed += $_.ParentNode.InnerXML; $id = $_.Id; [void]$_.ParentNode.RemoveChild($_) }
154- $xmlData.ChildNodes.Monitoring.Overrides.DiscoveryConfigurationOverride | Where { $($_.Context -split '!')[0] -eq $alias } | ForEach-Object { $removed += $_.ParentNode.InnerXML; $id += $_.Id; [void]$_.ParentNode.RemoveChild($_) }
155- $xmlData.ChildNodes.Monitoring.Overrides.RulePropertyOverride | Where { $($_.Context -split '!')[0] -eq $alias } | ForEach-Object { $removed += $_.ParentNode.InnerXML; $id += $_.Id; [void]$_.ParentNode.RemoveChild($_) }
166+ # Remove from master list
167+ $unsealedMPs.Remove ($ManagementPack.Name )
156168 }
157- #>
158-
159169 }
160170 if ($Sealed )
161171 {
162172 # Start of Inner Remove MP Function
163173 Write-Output " $ ( Time- Stamp) Removing the Sealed Management Pack: $ ( $ManagementPack.DisplayName ) "
174+ Remove-SCManagementPack - ManagementPack $ManagementPack - Confirm:$false - ErrorAction Stop
175+ if ($ManagementPack.Name -in $sealedMPs )
176+ {
177+ # Remove from master list
178+ $sealedMPs.Remove ($ManagementPack.Name )
179+ }
164180 }
165- # Remove-SCManagementPack -ManagementPack $ManagementPack -Confirm:$false -ErrorAction Stop
166181 sleep 10
167182 }
168183 function Inner-GetMPRecurse
@@ -212,18 +227,32 @@ PROCESS
212227 try
213228 {
214229
215- foreach ($MP in $sealedMPs )
230+ foreach ($sealedMP in $sealedMPs )
231+ {
232+ Write-Output @"
233+ ===========================================================================================
234+ $sealedMP
235+ ===========================================================================================
236+ "@
237+ Inner- GetMPRecurse - ManagementPack $sealedMP
238+ <#
239+ Write-Output "$(Time-Stamp)Removing the following Sealed Management Pack: $($sealedMP.DisplayName)"
240+ Remove-SCManagementPack -ManagementPack $sealedMP -ErrorAction Stop
241+ Write-Output "$(Time-Stamp)Removed the following Sealed Management Pack: $($sealedMP.DisplayName)"
242+ #>
243+ }
244+ foreach ($unsealedMP in $unsealedMPs )
216245 {
217246 Write-Output @"
218247 ===========================================================================================
219- $MP
248+ $unsealedMP
220249 ===========================================================================================
221250"@
222- Inner- GetMPRecurse - ManagementPack $MP
251+ Inner- GetMPRecurse - ManagementPack $unsealedMP
223252 <#
224- Write-Output "$(Time-Stamp)Removing the following Sealed Management Pack: $($MP .DisplayName)"
225- Remove-SCManagementPack -ManagementPack $MP -ErrorAction Stop
226- Write-Output "$(Time-Stamp)Removed the following Sealed Management Pack: $($MP .DisplayName)"
253+ Write-Output "$(Time-Stamp)Removing the following Sealed Management Pack: $($unsealedMP .DisplayName)"
254+ Remove-SCManagementPack -ManagementPack $unsealedMP -ErrorAction Stop
255+ Write-Output "$(Time-Stamp)Removed the following Sealed Management Pack: $($unsealedMP .DisplayName)"
227256#>
228257 }
229258 }
0 commit comments