17/11/2024

Active DirectoryPowerShell

Active Directory : Déployer ADDS avec PowerShell

I. Présentation

Pour mettre en place les services de domaine Active Directory, il est bien entendu possible de le faire par l'interface graphique mais aussi en ligne de commande par PowerShell. Ceci sera utile notamment sur un serveur en mode core, mais également pour automatiser la création d'un domaine, que ce soit pour votre lab perso ou pour une mise en oeuvre.

Des outils d'automatisation, comme PowerShell DSC pourrons vous permettre de déployer ADDS ou un contrôleur de domaine rapidement en s'appuyant sur PowerShell. Pour cet exemple, on utilisera simplement des commandes PowerShell qu'il est tout à fait possible de mettre dans un script.

Voyons ensemble comment déployer Active Directory avec PowerShell.

Besoin d'aide ? Retrouvez notre cours sur les bases Active Directory

Pour réaliser cette installation en interface graphique, vous pouvez suivre mon tutoriel vidéo en français :

II. Nom d'hôte

Commençons par renommer le serveur, dans cet exemple "FB-ADDS01" puis redémarrons le serveur. Ce qui nous donne ces deux commandes :

Rename-Computer -NewName FB-ADDS01 -Force
Restart-Computer

Lorsque le serveur aura redémarré, il aura son joli petit nom !

III. Configuration réseau

Maintenant, on va définir la configuration réseau du serveur, toujours via PowerShell. Dans cet exemple, j'attribue l'adresse IP 192.168.1.10 en IP, avec un masque 255.255.255.0 (/24) et une passerelle par défaut 192.168.1.1.

New-NetIPAddress -IPAddress "192.168.1.10" -PrefixLength "24" -InterfaceIndex (Get-NetAdapter).ifIndex -DefaultGateway "192.168.1.1"
Pour définir le serveur DNS, il faut utiliser un autre cmdlet, ce qui nous donne :
Set-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter).ifIndex -ServerAddresses ("127.0.0.1")
Pour terminer la configuration réseau, on va renommer notre carte réseau. Le nom actuel est "Ethernet0" que l'on va renommer en "LAN".
Rename-NetAdapter -Name Ethernet0 -NewName LAN

Si tout va bien, votre serveur a un nom définitif et une configuration réseau adéquate. Nous pouvons passer à la phase la plus intéressante : la mise en place du domaine Active Directory.

IV. Installation des rôles

Pour cette installation, nous aurons besoin de trois fonctionnalités : les services de domaine Active Directory (AD-Domain-Services), le DNS (DNS) et les outils d'administration graphique (RSAT-AD-Tools) mais ceci est facultatif.

$FeatureList = @("RSAT-AD-Tools","AD-Domain-Services","DNS")

Foreach($Feature in $FeatureList){

   if(((Get-WindowsFeature-Name $Feature).InstallState)-eq"Available"){

     Write-Output"Feature $Feature will be installed now !"

     Try{

        Add-WindowsFeature-Name $Feature -IncludeManagementTools -IncludeAllSubFeature

        Write-Output"$Feature : Installation is a success !"

     }Catch{

        Write-Output"$Feature : Error during installation !"
     }
   } # if(((Get-WindowsFeature -Name $Feature).InstallState) -eq "Available")
} # Foreach($Feature in $FeatureList)

Vous pourrez réutiliser le bloc de code ci-dessus, il va installer les trois fonctionnalités une à une, et vous indiquer le résultat à chaque fois. Si vous ne rencontrez pas d'erreur, vous pouvez passer à la suite.

V. Créer le domaine Active Directory

Ce qui va suivre correspond à la création du domaine, ce qui est l'équivalent du - célèbre - processus dcpromo.  En fait, nous allons définir notre nom de domaine DNS dans la variable $DomainNameDNS et le nom Netbios de ce domaine dans $DomainNameNetbios.

Pour le reste, on va stocker tous les paramètres de configuration dans la variable $ForestConfiguration. Les paramètres par défaut peuvent être conservés, sauf si vous avez des besoins spécifiques. Le répertoire SYSVOL sera à son chemin habituel, tout comme la base de données ntfs.dit.

Lorsque vous êtes prêt, vous pouvez lancer la création du domaine avec la commande Install-ADDSForest qui créera un nouveau domaine dans une nouvelle forêt.

$DomainNameDNS = "it-connect.fr"
$DomainNameNetbios = "IT-CONNECT"

$ForestConfiguration = @{
'-DatabasePath'= 'C:\Windows\NTDS';
'-DomainMode' = 'Default';
'-DomainName' = $DomainNameDNS;
'-DomainNetbiosName' = $DomainNameNetbios;
'-ForestMode' = 'Default';
'-InstallDns' = $true;
'-LogPath' = 'C:\Windows\NTDS';
'-NoRebootOnCompletion' = $false;
'-SysvolPath' = 'C:\Windows\SYSVOL';
'-Force' = $true;
'-CreateDnsDelegation' = $false }

Import-Module ADDSDeployment
Install-ADDSForest @ForestConfiguration

Si tout va bien, je vous invite à redémarrer votre serveur pour finaliser le processus d'installation. Une fois redémarré, votre domaine Active Directory doit être opérationnel. Différents cmdlets comme Get-ADForest et Get-ADDomain vous permettront d'obtenir des infos sur votre domaine et vérifier qu'il correspond à vos souhaits !

Finalement, c'est plutôt simple et pratique de pouvoir déployer un domaine directement en ligne de commande !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

6 commentaires sur “Active Directory : Déployer ADDS avec PowerShell

  • Merci Florian pour tous tes articles clairs et précis.

    C’est toujours dommageable que Microsoft oblige toujours autant de redémarrages de machine afin de prendre en compte des modifications !
    Il devrait prendre exemple sur le Pingoin…

    Thierry

    Répondre
    • $FeatureList = @(« RSAT-AD-Tools », »AD-Domain-Services », »DNS »)

      Foreach($Feature in $FeatureList){

      if(((Get-WindowsFeature -Name $Feature).InstallState)-eq »Available »){

      Write-Output « Feature $Feature will be installed now ! »

      Try{

      Add-WindowsFeature -Name $Feature-IncludeManagementTools -IncludeAllSubFeature

      Write-Output « $Feature : Installation is a success ! »

      }Catch{

      Write-Output « $Feature : Error during installation ! »
      }
      } # if(((Get-WindowsFeature -Name $Feature).InstallState) -eq « Available »)
      } # Foreach($Feature in $FeatureList)

      Répondre
    • Normalement cela devrait fonctionner avec les modifs.

      Répondre
  • comment nommer la carte réseau où on va attribuer les adresse IP

    Get-NetAdapter
    $NetAdapterifIndex = Read-Host « Sélectionner la carte réseau (ifIndex) »

    # on donne un mon a la carte réseau
    Rename-NetAdapter -Name (Get-NetAdapter -InterfaceIndex $NetAdapterifIndex).Name -NewName $($ConfigFile.NetAdapter.Name)

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.