# Le script fonctionne en deux parties.
# La première partie vise à l'installation des différents rôles nécessaires à notre serveur.
# En plus des "indispensables" pour avoir un Active Directory fonctionnel, on installe les rôles "Web-Server" et "DHCP"
# La seconde partie installe l'Active Directory sur notre seveur. 
# Les variables pour la configuration de l'Active Directory se situe plus bas, dans la variable ConfForet (lXX)


# 1 - Installation des rôles 

# On déclare les différents rôles dans la variable "ListeRoles"
# Puis on boucle en déclarant la variable $Role pour chaque membre de $ListeRoles
# On utilise un "Try"/"Catch" pour avertir d'une erreur dans l'installation d'un rôle.
# On boucle dans le "Try" sur la commande Add-WindowsFeature qui permet d'installer les rôles.
# On utilise les paramètres -IncludeManagementTools et -IncludeAllSubFeature pour une installation complète.

$ListeRoles = @("RSAT-AD-Tools","AD-Domain-Services","DNS","Web-Server","DHCP")

Foreach($Role in $ListeRoles){

     Try{
        Add-WindowsFeature -Name $Role -IncludeManagementTools -IncludeAllSubFeature
        Write-Output "$Role : Installation en cours ..."
      }
             
      Catch{
        Write-Output "$Role : a rencontré une erreur durant l'installation !"
     }
   } 

# 2 - Configuration de la forêt Active Directory

# Pour avoir un Active Directory fonctionnel, il faut maintenant qu'on configure une forêt
# On déclare différentes variables pour pouvoir modifier la configuration à la volée.
# Notamment sur les chemins d'installations et le nom de domaine.

$NTDS = "NTDS"
$SYSVOL = "SYSVOL"
$Log = "Log"
$Nom2domaine = "dad.ipi"
$Netbios = "DADIPI"

# Puis on appelle les variables ci-dessus dans notre $ConfForet

$ConfForet = @{
# Configuration des chemins dans C:\NTDS ; C:\SYSVOL ; et C:\Log
'-DatabasePath'= $NTDS;
'-LogPath' = $Log;
'-SysvolPath' = $SYSVOL;
# Configuration du niveau de domaine et de forêt à 7 (Windows Server 2016, niveau le plus récent)
'-DomainMode' = '7';
'-ForestMode' = '7';
# Configuration du NETBIOS et du nom de domaine
'-DomainName' = $Nom2domaine;
'-DomainNetbiosName' = $Netbios;
# Booléens sur le reboot, le "Force" et la délégation DNS (inutile dans notre cas).
'-NoRebootOnCompletion' = $true;
'-Force' = $true;
'-CreateDnsDelegation' = $false
}

# Enfin on importe le module ADDSDeployment
# Et on utilise "Install-ADDSForest" en appellant notre $ConfForet

Import-Module ADDSDeployment
Install-ADDSForest @ConfForet
