Active Directory : installer ADDS et configurer un domaine avec PowerShell


Windows Server 2016 Windows Server 2019

Dans ce tutoriel, je vais vous expliquer comment installer le rôle AD-Domain-Service sur un serveur Windows et configurer celui-ci pour créer une nouvelle foret ( et domaine) Active Directory.

Si vous préférez utiliser l’interface graphique de Windows Server : Active Directory : installation et configuration d’un contrôleur de domaine

On va principalement utiliser PowerShell pour installer ADDS sur les serveurs mode Core, c’est à dire les serveurs sans interface graphique. L’utilisation de PowerShell permet aussi de gagner du temps car il y a moins d’interaction utilisateur et pour finir, on peut automatiser avec un script.

Avant de commencer penser à :

  • Nommer correctement le serveur
  • Mettre une adresse IP fixe

Comme pour l’installation en mode graphique, cela va se passer en deux étapes :

  • Installation de la fonctionnalité AD-Domain-Service (ADDS)
  • Promotion du serveur en tant que contrôleur de domaine

Installation du rôle AD Domain Service – ADDS

Pour installer le rôle, on va utiliser la Cmdlet Install-WindowsFeature.

Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools

Patienter pendant l’installation …

L’installation des composants du rôle ADDS est terminée.

On va maintenant passer à promotion de notre serveur comme contrôleur de domaine

Promotion du serveur en tant que contrôleur de domaine

Pour effectuer cette opération on va utiliser la Cmdlet Install-ADDSForest, lors de la promotion du premier contrôleur de domaine dans les fait on va aussi créer la forêt Active Directory, c’est pour cela que l’on utiliser la Cmdlet Install-ADDSForest.

Pour la création du domaine on va passer 4 paramètres :

  • -DomainName : 247-it.local qui va être le nom DNS du domaine
  • -DomainNetBIOSName : 247-IT qui est le nom NETBIOS du domaine
  • -InstallDNS : $true qui va permettre l’installation du rôle DNS sur le contrôleur de domaine
  • -SafeModeAdministratorPassword : c’est le mot de passe du mode restauration du contrôleur de domaine

Pour créer le domaine voici la commande :

Install-ADDSForest -DomainName 247-it.local -DomainNetBIOSName 247-IT -InstallDNS:$true -SafeModeAdministratorPassword (ConvertTo-SecureString "Passw0rd4DSRM" -AsPlainText -Force)

Comme vous pouvez le voir, une confirmation est demandée

Patienter durant la création du domaine …

Quand l’installation est terminée, une fenêtre s’affiche indiquant que l’ordinateur va redémarrer.

Une fois le serveur redémarré, celui ci est contrôleur de domaine :

Pour rendre plus lisible la commande du scripts on peut séparer les paramètres dans un tableau et ensuite passer les paramètres :

Le tableau des paramètres :

$ParamsADDSForest = @{
    DomainName                      = "247-it.local"
    DomainNetbiosName               = "247-IT"
    SafeModeAdministratorPassword   = (ConvertTo-SecureString "Passw0rd4DSRM" -AsPlainText -Force)
    InstallDns                      = $true
}

La commande pour installer la forêt :

Install-ADDSForest @ParamsADDSForest

Script PowerShell pour déployer ADDS et créer le domaine

Si vous souhaitez automatisé le déploiement d’un contrôleur de domaine et la création de la forêt, voici le script que j’utilise (principalement pour les labs) ;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
<#
    Author : 247-it
    Version : 1.0.0
    Web : https://247-it.io
    Git : https://git.rdr-it.io

    Changelog : 
        - 1.0.0 
            Inital script

    How to use : 
        1. call script and answer the question
        2. call with parameters
            sample : .\ADDS-install-forest.ps1 -DomainName example.com -DomainNetBIOSName EXAMPLE -DSRMPassword P@sswOrd
            You can overide all param with this method

    More details for Install-ADDSForest : https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/deploy/install-active-directory-domain-services--level-100-
#>

param(
    $DomainName = "",
    $DomainNetBIOSName = "",
    $DSRMPassword = "",

    $DomainMode = 'Default',
    $ForestMode = 'Default',
    $InstallDNS = $true,
    $DatabasePath = 'C:\Windows\NTDS',
    $SysvolPath = 'C:\Windows\SYSVOL',
    $LogPath = 'C:\Windows\NTDS',
    
    $Force = $true,
    $NoRebootOnCompletion = $true,
    $SkipPreChecks = $true,

    $TestBefore = $true,
    $TranscriptEnable = $true
)

if( $TranscriptEnable -eq $true ){
    Start-Transcript
}

if( $DomainName -eq "" ){
    $DomainName = Read-Host "Domaine name (ex : example.com)"
}

if( $DomainNetBIOSName -eq "" ){
    $DomainNetBIOSName = Read-Host "Domaine NETBIOS name (ex : EXAMPLE)"
}

if( $DSRMPassword -eq "" ){
    $DSRMPassword = Read-Host "DSRM Password :"
}

# Convert $DSRMPassword to secure string
$DSRMPassword = ConvertTo-SecureString $DSRMPassword -AsPlainText -Force

# Install ADDS Role
$WFADDS = Get-WindowsFeature -Name AD-Domain-Services
if( $WFADDS.Installed -eq $false){
    Try{
        Write-Host "Install ADDS Role"
        Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools
    }Catch{
        Write-Host "Cannot install AD-Domain-Services ! "
        exit 1
    }    
}

if( $TestBefore -eq $true){

    $ParamsTest = @{
        DomainName                      = $DomainName
        DomainNetbiosName               = $DomainNetBIOSName
        SafeModeAdministratorPassword   = $DSRMPassword
        DomainMode                      = $DomainMode
        ForestMode                      = $ForestMode
        InstallDns                      = $InstallDNS
        DatabasePath                    = $DatabasePath
        SysvolPath                      = $SysvolPath
        LogPath                         = $LogPath
        Force                           = $Force
        NoRebootOnCompletion            = $true
    }

    Write-Host = "Start Test ADDS Forest" -ForegroundColor Green

    Try{
        $Result = Test-ADDSForestInstallation @ParamsTest
    }Catch{
        Write-Host "An error occurred during cmdlet Test-ADDSForestInstallation !"
        exit 2
    }

    if( $Result.Status -eq "Error" ){
        Write-Host "An error occurred during testing !" -ForegroundColor Red 
        $Result.Message
        exit 3
    }
} # /$TestBefore -eq $true

# Promot Domain Controller
$ParamsADDSForest = @{
    DomainName                      = $DomainName
    DomainNetbiosName               = $DomainNetBIOSName
    SafeModeAdministratorPassword   = $DSRMPassword
    DomainMode                      = $DomainMode
    ForestMode                      = $ForestMode
    InstallDns                      = $InstallDNS
    DatabasePath                    = $DatabasePath
    SysvolPath                      = $SysvolPath
    LogPath                         = $LogPath
    Force                           = $Force
    NoRebootOnCompletion            = $NoRebootOnCompletion
    SkipPreChecks                   = $SkipPreChecks
}

Write-Host = "Start Install ADDS Forest" -ForegroundColor Green

Install-ADDSForest @ParamsADDSForest

if( $TranscriptEnable -eq $true ){
    Stop-Transcript
}

Write-Host "Installation completed, please restart the computer !" -ForegroundColor Green

Dépôt : https://git.rdr-it.com/root/scripts/-/blob/master/PowerShell/Active%20Directory/ADDS-install-forest.ps1


Vous pouvez maintenant déployer des domaines Active Directory avec PowerShell, ce qui permet de gagner pas mal de temps sur ce type d’opération.




Laisser un commentaire