MEN IN CLOUD
22Mar/15Off

SCOM 2012 R2 : comment exporter les overrides dans un fichier CSV, XML ou HTML

Nous avons tous besoin de trouver un moyen de documenter de quelle manière notre environnement System Center Operations Manager est configuré. Il peut être aisé d’exporter les managements packs dans Excel avec MPViewer, mais une des premières questions que l’on se pose lorsqu’on doit faire évoluer une plate-forme (il en reste encore un bon nombre en version 2007 R2), ou lorsqu’on souhaite identifier les changements effectués ces derniers mois, est : quels sont les overrides qui ont été configurés ?

Le script ci-dessous, permet de collecter ces informations et de les rendre accessibles via un fichier csv, xml ou html. Seul pré-requis : que les règles de bonnes pratique aient été respectées, à savoir créer un MP dédié pour les overrides de chaque MP et les suffixer de la même manière (par exemple avec le nom de l’entreprise).

Pour que le script ci-dessous fonctionne, il suffit de modifier les variables :

  • « Path » pour indiquer le chemin du fichier qui sera généré
  • « Suffix » pour préciser le suffixe des MPs contenant les overrides
  • « Yes » ou « No » pour les formats d’export

 

#===================================================================================

# AUTHOR:    Dieter Wijckmans (Dieter - Wijckmans - inovativ - be)

# DATE:             03/08/2012

# Name:             Export-Overrides2012.PS1

# Version:   1.2

#

# MODIFIED BY: Martin Ehrnst (m a r t i n - e h r n s t - n o)

# MODIFY DATE: 18/03/2015

#

# COMMENT:   Export all your overrides to a CSV, XML & HTML files to keep for your reference.

#                   Based on script of Daniele Muscetta and Pete Zerger

#                   http://www.systemcentercentral.com/BlogDetails/tabid/143/IndexID/78323/Default.aspx

#

#

# Usage:     Change your Management pack suffix, export location and Export types YES/NO.

#           Run script manually or with you favorite automation tool

#

#=======================================================================================

 

#############################################################

################# CONFIGURATION AREA ########################

#Set export location

$locationroot = "PATH"

#Define your Overrides suffix

$MPSuffix = "SUFFIX"

#export methods

$CSV = "NO" #CSV export to use in excel etc.

$HTML = "YES" #HTML for easier readability

$XML = "YES" #enable if you want to import back to OpsMgr

################ END CONFIGURATION AREA ######################

##############################################################

 

#HTML OUTPUT STYLING

$Header = @"

<style>

TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}

TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}

TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}

TR:Nth-Child(Even) {Background-Color: #dddddd;}

TR:Hover TD {Background-Color: #C1D5F8;}

</style>

"@

 

##This will read out your server name. Run from a management server.

$objCompSys = Get-WmiObject win32_computersystem

$inputScomMS = $objCompSys.name

 

 

#Initializing the Ops Mgr 2012 Powershell provider#

Import-Module -Name "OperationsManager"

New-SCManagementGroupConnection -ComputerName $inputScomMS

 

#Error handling setup

$error.clear()

$erroractionpreference = "SilentlyContinue"

$thisScript = $myInvocation.MyCommand.Path

$scriptRoot = Split-Path(Resolve-Path $thisScript)

$errorLogFile = Join-Path $scriptRoot "error.log"

if (Test-Path $errorLogFile) {Remove-Item $errorLogFile -Force}

 

#Define the backup location

 

#Get date

$Backupdatetemp = Get-Date

$Backupdatetemplocal = ($Backupdatetemp).tolocaltime()

$Backupdate = $Backupdatetemplocal.ToShortDateString()

$strBackupdate = $Backupdate.ToString()

 

#Define backup location

if((test-path $locationroot) -eq $false) { mkdir $locationroot }

$locationfolder = $strbackupdate -Replace "/","-"

$location = $locationroot + $locationfolder + "\"

new-item "$location" -type directory -force

 

#Delete backup location older than 15 days

#To make sure our disk will not be cluttered with old backups we'll keep 15 days of backup locations.

$Retentionperiod = "15"

$folders = dir $locationroot

echo $folders

$now = [System.DateTime]::Now

$old = $now.AddDays("-$Retentionperiod")

 

foreach($folder in $folders)

{

if($folder.CreationTime -lt $old) { Remove-Item $folder.FullName -recurse }

}

 

#gets all UNSEALED MAnagement Packs with your defined suffix

$mps = get-SCOMmanagementpack | where {$_.Sealed -eq $false -and $_.DisplayName -like "*$MPsuffix"}

 

#loops thru them

foreach ($mp in $mps)

{

$mpname = $mp.name

Write-Host "Exporting Overrides info for Management Pack: $mpname"

 

#array to hold all overrides for this MP

$MPRows = @()

 

#Gets the actual override objects

$overrides = $mp.GetOverrides()

 

#loops thru those overrides in order to extract information from them

foreach ($override in $overrides)

{

 

#Prepares an object to hold the result

$obj = new-object System.Management.Automation.PSObject

 

#clear up variables from previous cycles.

$overrideName = $null

$overrideProperty = $null

$overrideValue = $null

$overrideContext = $null

$overrideContextInstance = $null

$overrideRuleMonitor = $null

 

# give proper values to variables for this cycle. this is what we can then output.

$overrideName = $override.Name

$overrideProperty = $override.Property

$overrideValue = $override.Value

trap { $overrideContext = ""; continue } $overrideContext = $override.Context.GetElement().DisplayName

trap { $overrideContextInstance = ""; continue } $overrideContextInstance = (Get-SCOMMonitoringObject -Id $override.ContextInstance).DisplayName

 

if ($override.Monitor -ne $null){

$overrideRuleMonitor = $override.Monitor.GetElement().DisplayName

} elseif ($override.Discovery -ne $null){

$overrideRuleMonitor = $override.Discovery.GetElement().DisplayName

} else {

$overrideRuleMonitor = $override.Rule.GetElement().DisplayName

}

 

#fills the current object with those properties

$obj = $obj | add-member -membertype NoteProperty -name overrideName -value $overrideName -passthru

$obj = $obj | add-member -membertype NoteProperty -name overrideProperty -value $overrideProperty -passthru

$obj = $obj | add-member -membertype NoteProperty -name overrideValue -value $overrideValue -passthru

$obj = $obj | add-member -membertype NoteProperty -name overrideContext -value $overrideContext -passthru

$obj = $obj | add-member -membertype NoteProperty -name overrideContextInstance -value $overrideContextInstance -passthru

$obj = $obj | add-member -membertype NoteProperty -name overrideRuleMonitor -value $overrideRuleMonitor -passthru

 

 

#adds this current override to the array

$MPRows = $MPRows + $obj

}

 

#FILE EXPORT - SEE CONFIGURATION AREA

#CSV

if ($csv -eq "YES"){

$filename = $location + $mp.name + ".csv"

$MPRows | Export-Csv $filename

}

#XML see configuration

if ($XML -eq "YES"){

Export-SCOMManagementPack -ManagementPack $mps -Path $location

}

#HTML see configuration

$filename = $location + $mp.name + ".html"

if ($HTML -eq "YES"){

$MPRows | ConvertTo-Html -Title "Overrides For $mp" -Head $Header | Out-File $filename

}

}

 

 

Ce script a été initialement publié par Daniele Muscetta et Pete Zerger, puis par Dieter Wijckmans. I s’agit ici d’une dernière version de Martin Ehrnst, publiée sur System Center Central :

http://www.systemcentercentral.com/export-opsmgr-2012-overrides-html-csv-xml/

 

The following two tabs change content below.

JF BERENGUER

Directeur des Services au sein de SCALA (Entreprise de services du numérique). Nos missions consistent à accompagner nos clients dans leur transformation digitale via une offre intégrée de conseils et de services pour l'infrastructure informatique et le cloud, les applications logicielles métier et la communication globale Membre du Comité de Direction, j'ai en charge le management et le pilotage de l'ensemble des activités de service (PS,MS et régie) du groupe sur nos trois métiers : Infrastructure, Développement et Communication Digitale, soit une équipe d'environ 100 personnes. Ma mission consiste à : -Décliner la stratégie de l'entreprise aux niveaux des opérations de production -Gérer la productivité et la rentabilité des équipes et dégager un résultat opérationnel conforme aux objectifs -Manager et animer les équipes et entretenir les compétences des ressources en m'appuyant sur du management intermédiaire -Mettre en place en place et faire faire appliquer les processus et méthodes J'interviens aussi en accompagnement auprès des DSI pour des missions d’élaboration et de suivi de schéma directeur, de mise en œuvre de processus et d’indicateurs de pilotage ainsi que de plans de transition vers une organisation digitale. J'anime régulièrement des séminaires et conférences sur ces mêmes sujets.

Posted by JF BERENGUER

Commentaires (0) Trackbacks (0)

Désolé, le formulaire de commentaire est fermé pour le moment

Aucun trackbacks pour l'instant