Vérifier les réplications Active Directory

Envoyer

Sommaire

Active Directory Replication Status Tool

Depuis quelques semaines, Microsoft nous propose un nouvel outil pour la surveillance des réplications Active Directory. Un digne remplaçant au fameux outil REPLMON (replication monitor), un peu plus « user friendly » que la commande « repadmin /showrepl * /csv ». L’outil est Active Directory Replication Status Tool.

Pour pouvoir l’utiliser, il suffit simplement de disposer du Framework .Net 4 et d’un poste intégré à un domaine Active Directory (seul Windows 2000 n’est pas supporté).

Lorsque vous lancez l’outil, vous avez la possibilité de surveiller les réplications au niveau de la forêt (Forest), d’un domaine spécifique (Domain), par le biais d’une découverte automatique (Select Targets) ou par un import (Load Exported Data Set). Il suffit de cliquer sur « Refresh Replication status » pour lancer l’analyse.

 

 

 

 

 

 

 

 

 

Grâce à  Active Directory Replication Status Tool , vous avez la possibilité de vérifier rapidement que toutes les réplications sont opérationnelles  grâce à un code couleur clair et un filtrage rapide des résultats.

 

 

 

 

 

 

 

Vous avez également la possibilité de pouvoir consulter rapidement la documentation Technet relative à la moindre erreur remontée par l’outil depuis l’onglet « Replication Status Viewer ».

 

 

 

 

 

 

 

 

Autre point extrêmement intéressant est la possibilité de réaliser un export des données collectées dans le cadre d’une analyse hors-ligne ultérieure et de la réimporter à l’aide de l’option « Load Exported Data Set ».

 

 

 

 

 

 

 


Automatiser la notification avec Repadmin

La commande « Repadmin /showrepl * /csv » perd un peu de sa substance avec ce nouvel outil. Nous pouvons toutefois continuer à nous appuyer dessus pour utiliser un script d’automatisation d’envoi de rapports. Cela vous permet de pouvoir surveiller de manière automatique et régulière les réplications Active Directory.

Le script que nous vous proposons permet de formater l’export réalisé à l’aide de la commande « repadmin /showrepl * /csv » au format HTML, avec un classement des résultats par statut (« Error », « Warning » ou « Success ») et d’envoyer le tout par message électronique.

#========================================================================
# Created on:   24/08/2012
# Created by:   AUGAGNEUR Alexandre 
# Filename:     Repadmin-ShowRepl-HTMLReports.ps1
#
# Description:    Generate HTML reports based on 
#                "repadmin /showrepl * /csv" command return,
#                format it and send it by email
#========================================================================


###################################################
#        VARIABLES
###################################################

# Path of CSV/HTML exports
$ExportPath = "c:\temp"

# Path of Repadmin binary (only necessary if not found in $env:path)
$RepadminExec = $null

# Random name of CSV/HTML Export
$BaseFilename = "Repadmin-"+(Get-Date -Format yyMMdd)+"-"+(Get-Random)
$CSVFilename = $BaseFilename+".csv"
$HTMLFilename = $BaseFilename+".html"

# CSV Headers
$Header = "showrepl_COLUMNS","Destination DSA Site","Destination DSA","Naming Context","Source DSA Site","Source DSA", `
 "Transport Type","Number of Failures","Last Failure Time","Last Success Time","Last Failure Status"

# HTML Style
$style = @"
 <style>
 BODY{font-family:"Segoe UI"}
 P{text-decoration:underline;text-indent:40px;font-size:20px;color:DarkSlateGray;font-weight:bold}
 TABLE{border-width: 2px;border-style: solid;border-color: Black;border-collapse: collapse;}
 TABLE.error{border-color:red}
 TABLE.warning{border-color:darkorange}
 TABLE.success{border-color:green}
 TH{border-width: 2px;padding: 0px;border-style: solid;padding:5px}
 TD{border-width: 1px;padding: 0px;border-style: solid;text-align:center}
 TH.error{border-color:red;background-color:salmon}
 TH.warning{border-color:darkorange;background-color:orange}
 TH.success{border-color:green;background-color:limegreen}
 TD.error{border-color: red}
 TD.warning{border-color:darkorange}
 TD.success{border-color:green}
 </style>
"@

# Email notification parameters
$Sender = "sender.at.corpnet.net"
$Recipient = "recipient.at.corpnet.net" # You can specify an array if needed 
$Server = "smtp.corpnet.net"


###################################################
#        FUNCTIONS
###################################################

function EmailNotification($Sender, $Recipient, $Server, $Subject, $Body)
{
 $SMTPclient = new-object System.Net.Mail.SmtpClient $Server

 # SMTP Port (if needed)
 # $SMTPClient.port = 587

 # Enabling SSL (if needed)
 # $SMTPclient.EnableSsl = $true

 # Specify authentication parameters (if needed)
 # $SMTPAuthUsername = "login"
 # $SMTPAuthPassword = "password"
 # $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword)

 $Message = new-object System.Net.Mail.MailMessage
 $Message.From = $Sender
 $Recipient | %{ $Message.To.Add($_) }
 $Message.Subject = $Subject
 $Message.Body = $Body
 $Message.IsBodyHtml = $true
 
 $SMTPclient.Send($Message)
}


###################################################
#        MAIN
###################################################

# Construct CSV file full path
$CSVExport = Join-Path $ExportPath $CSVFilename

# Find repadmin binary if not defined
if ( !($RepadminExec) )
{
 foreach ( $path in ($env:path).split(";") ) 
 { 
 if (Test-Path $path\repadmin.exe)
 {
 $RepadminExec = "$path\repadmin.exe"
 }
 }
}

if ( $RepadminExec )
{
 # Command to generate replications status
 $StrCmd = "$RepadminExec /showrepl * /csv"
 
 # Generate CSV output
 Invoke-Expression $StrCmd | Out-File $CSVExport
 
 if ( Test-Path $CSVExport )
 {
 $ReplicationsState = Import-Csv -Path $CSVExport -Header $Header -Delimiter ","

 $ServersInError = @()
 $ErrorContent = @()

 # Filtering error messages
 $ReplicationsState | Where-Object { $_."showrepl_COLUMNS" -match "showrepl_ERROR" } | %{
 if ($_.showrepl_COLUMNS -match "showrepl_ERROR") {
 $ServersInError += $_."Destination DSA"
 $ErrorContent += $_
 } 
 }

 # Format errors content
 if ( $ErrorContent )
 {
 $MailObject="AD REPLICATIONS STATUS - $(Get-Date -Format yy/MM/dd) - error(s) found"

 $MailBody += $ErrorContent | Select-Object -Property "Destination DSA",@{ Name="Error Message"; Expression={ $_."Naming Context" } } | ConvertTo-Html -As table -Fragment -PreContent "<p>AD Replications status with errors</p>" -PostContent "<br><br>" | Out-String
 $MailBody = $MailBody.Replace("<th>","<therror"">")
 $MailBody = $MailBody.Replace("<td>","<tderror"">")
 $MailBody = $MailBody.Replace("<table>","<tableerror"">")
 }
 
 # Filtering warning messages
 $WarningContent = $ReplicationsState | Where-Object {  @("showrepl_ERROR","showrepl_COLUMNS") -notcontains $_."showrepl_COLUMNS" -and $_."Last Failure Status" -ne 0 }  
 
 # Format warning content
 if ( $WarningContent )
 {
 if (!$MailObject)
 {
 $MailObject="AD REPLICATIONS STATUS - $(Get-Date -Format yy/MM/dd) - warning(s) found"
 }
 
 $MailBody += $WarningContent | Select-Object -ExcludeProperty "showrepl_COLUMNS","Transport Type" -Property * | ConvertTo-Html -As table -Fragment -PreContent "<p>AD Replications status with warning</p>" -PostContent "<br><br>" | Out-String
 $MailBody = $MailBody.Replace("<th>","<thwarning"">")
 $MailBody = $MailBody.Replace("<td>","<tdwarning"">")
 $MailBody = $MailBody.Replace("<table>","<tablewarning"">")
 }

 # Filtering success messages (uncomment the line if you want to see them in the email report)
 # $SuccessContent = $ReplicationsState | Where-Object { @("showrepl_ERROR","showrepl_COLUMNS") -notcontains $_."showrepl_COLUMNS" -and $_."Last Failure Status" -eq 0} 

 # Format success content
 if ( $SuccessContent )
 {
 if (!$MailObject)
 {
 $MailObject="AD REPLICATIONS STATUS - $(Get-Date -Format yy/MM/dd) - OK"
 }
 
 $MailBody += $SuccessContent | select-object -ExcludeProperty "showrepl_COLUMNS","Transport Type" -Property * | ConvertTo-Html -As table -body "<p>AD Replications status with success</p>" -PreContent $style | Out-String
 $MailBody = $MailBody.Replace("<th>","<thsuccess"">")
 $MailBody = $MailBody.Replace("<td>","<tdsuccess"">")
 $MailBody = $MailBody.Replace("<table>","<tablesuccess"">")
 }

 # Generate HTML file (if wanted)
 # $HTMLExport = Join-Path $ExportPath $HTMLFilename
 # ConvertTo-Html -Head $style -body $MailBody -Title $MailObject | Out-File $HTMLExport
 
 if ( $MailBody )
 {
 EmailNotification $Sender $Recipient $Server $MailObject (ConvertTo-Html -Head $style -Body $MailBody -Title $MailObject | Out-String)
 }
 }
 }

L’avantage avec ce type de solution est que vous pouvez être rapidement informé d’un problème de réplication de manière automatique. Ci-dessous, vous avez des exemples de rapports envoyés par message électronique.

Mise à jour le Dimanche, 02 Septembre 2012 17:26  

Commentaires 

 
0 #1 31-01-2013 10:35
Bonjour,
Merci pour la fonction de message à plusieurs destinataires. C'est génial !
 
 
0 #2 13-10-2015 15:51
Hello, I desire to subscribe for this weblog
to get hottest updates, therefore where can i do it
please help.

Look into my blog ihatewritingessays.net: http://www.ihatewritingessays.net/
 
 
0 #3 Alexandra 10-11-2015 11:41
But as you aare scanning this, you must know that. Just take into account use from people they like.
Some ones alredy could have hundreds of websites.

Also visit my weblog; Patrice: http://marketing.rapidcrushreview.xyz/index.php/2015/09/20/the-internet-girl-ft-kaytranada/
 
 
0 #4 Tuyet 11-11-2015 18:15
I am truly grateful to the holder of this web page who has shared this fantastic paragraph at here.


My weblog :: annuaire banque: http://www.top-liens.fr/choisir-une-banque-s-1267.html
 
 
0 #5 Jessika 27-01-2016 03:29
Peculiar article, exactly what I needed.

my site ... BHPH
Note Buyers: https://www.youtube.com/watch?v=Iagsq1Tz6TE
 
 
0 #6 Jayme 16-03-2016 03:20
One of the goals in advertising is to furnish the potential buyer with information. Social
Media Marketing is one of the hottest markets for Web Advertising: https://youtube.com/embed/gBT70G_lE70 on the internet today, and it is important to
grab the interest of prospective customers through this modality, videos are the way to attract this attention. With a low product
price point and the type of studies and publicity behind Protandim, I think they are suited
to thrive in the networking business.
 
 
0 #7 Jonelle 29-05-2016 17:48
My Singing Monsters is is one of the the best Simulation games that has been created on iOS.


Here is my web-site: my singing monsters
hack tool online no survey: http://community.limelance.com/members/theresekitterm/activity/466/
 
 
0 #8 Lane 11-06-2016 18:51
Excellent blog right here! Additionally your website so much up very
fast! What host are you the usage of? Can I am getting your affiliate link
on your host? I want my web site loaded up as fast as yours lol

Here is my website :: mp3juice: http://www.mp3juice.co.uk
 
 
0 #9 Luz 23-06-2016 18:15
Undeniably believe that which you said. Your favorikte justification appeared to be on the internet the easiest thing to be aware of.
I say to you, I certfainly get annoyed while people consider worries that
they plainly do noot know about. You managed to hhit
the nail upon the top as well as defined out the whole thing witout
having side-effects , people can take a signal. Will likely be
back to get more. Thanks

Feell free to visiit my web site :: giadinhnazarethvietnam.com (Syreeta: http://giadinhnazarethvietnam.com/video/profile.php?u=GGWRichelle)
 

Ajouter un Commentaire

Code de sécurité
Rafraîchir