Lister les rôles FSMO en PowerShell

I. Présentation

Il est possible de vérifier les rôles FSMO directement depuis l'interface graphique ou en utilisant l'utilitaire ntdsutil en ligne de commande, cependant pour faire une telle vérification dans un script ce n'est pas pratique, et, en plus l'heure est au PowerShell !

Le module Active Directory de PowerShell 4.0 intègre plusieurs commandlets intéressants dont deux qui nous permettent de récupérer facilement le maître d'opération pour chacun des rôles FSMO.

Pour rappel, il existe 5 rôles FSMO différents ayant chacun un maître d'opération unique, deux d'entre eux (Maître de schéma - Maître d'attribution des noms de domaine) au niveau de la forêt, les trois autres au niveau du domaine (Émulateur PDC - Maître RID - Maître d'infrastructure).

II. Lister les maîtres d'opérations

Passons à la manipulation de PowerShell, commencez par ouvrir une console. Pour lister les maîtres d'opérations définit au niveau de la forêt, on utilisera la commande Get-ADForest où l'on indiquera uniquement deux propriétés à afficher :

- Maître de schéma = SchemaMaster

- Maître d'attribution des noms de domaine = DomainNamingMaster

Ce qui donnera la commande suivante (exemple avec le domaine "it-connect.fr") :

Get-ADForest it-connect.fr | Format-Table SchemaMaster,DomainNamingMaster

Concernant les 3 derniers rôles FSMO, on passera par l'utilisation de Get-ADDomain à la place de Get-ADForest, le principe de la commande reste le même.

- Émulateur PDC = PDCEmulator

- Maître RID = RIDMaster

- Maître d'infrastructure = InfrastructureMaster

Get-ADDomain it-connect.fr | Format-Table PDCEmulator,RIDMaster,InfrastructureMaster

Voici un aperçu du résultat de mon côté :

fsmops2

Vous me direz cela n'est pas très exploitable dans un script... Je suis d'accord, voyons une méthode plus précise pour obtenir uniquement le nom du contrôleur de domaine qui est le FSMO master du rôle concerné. Le principe pour sélectionner la propriété est le suivant :

(Get-ADDomain <domaine>).<nom-rôle-forêt>
(Get-ADDomain <domaine>).<nom-rôle-domaine>

Ce qui donnera :

(Get-ADForest it-connect.fr).SchemaMaster
(Get-ADForest it-connect.fr).DomainNamingMaster
(Get-ADDomain it-connect.fr).PDCEmulator
(Get-ADDomain it-connect.fr).RIDMaster
(Get-ADDomain it-connect.fr).InfrastructureMaster

fsmops1

On peut facilement imaginer un script où l'on définit la valeur que doit avoir chaque maître d'opération, et, qu'on la compare à la valeur récupérée en production via Get-ADDomain et Get-ADForest, afin de savoir si la configuration au niveau des rôles FSMO n'est pas modifiée. Il faut également prévoir un envoi de mail dans le script ou pourquoi pas remonter une alerte sur l'application de supervision.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Co-Fondateur d’IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno’ est importante je partage aussi des actus.

florian a publié 1610 articles sur IT-Connect.See all posts by florian

4 réactions sur “Lister les rôles FSMO en PowerShell

  • 22/07/2014 à 14:01
    Permalink

    Je ne suis pas vraiment fan du PowerShell : il faut vraiment se taper les commandes à rallonge !

    Cependant, c’est toujours bon à prendre. Pour info, l’équivalent de la commande en cmd : netdom query fsmo.

    Répondre
    • 22/07/2014 à 14:07
      Permalink

      Salut hwasink,

      C’est sur que certaines commandes sont à rallonges, mais, c’est puissant et flexible ! Et pour le scripting il sera plus facile de s’en sortir avec la manipulation d’une commande PowerShell qu’avec des utilitaires comme netdom. Mais je suis d’accord sur un point avec toi : Les deux sont bons à prendre !

      Bonne journée.
      Florian

      Répondre
      • 22/07/2014 à 15:13
        Permalink

        Je suis aussi d’accord avec toi sur le PS : puissant et flexible !

        Répondre
  • 23/09/2016 à 12:05
    Permalink

    Bonjour Florian.

    Je suis à la recherche d’un moyen via powershell de faire une vérification de notre KDC.

    Aurais-tu cela sous la main ?

    Excellente journée.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *