
Avant :
Depuis Windows Server 2012, le célèbre assistant d’installation d’Active Directory “DCPROMO” n’est plus !… (Paix à son âme ). En effet, cet outil graphique permettait de promouvoir (ou rétrograder) un contrôleur de domaine au travers une simple interface graphique ou en mode silencieux via un fichier de réponse passé en paramètre “/unattend:fichier.txt”. (Avec Win2008R2, vous aviez même la possibilité de générer ce fichier de réponse juste avant de lancer l’opération).
Maintenant :
Les choses changent, aujourd’hui, avec Windows Server 2012 la promotion d’un contrôleur de domaine se fait par l’interface graphique du gestionnaire de serveur, ou en Powershell. (Depuis le temps que je vous le dis : PShell est un incontournable …). Il y a donc maintenant un module dédié “ADDSDeployment“, (Pour le néophytes) – Le principe reste toujours le même, on charge le module par :
import-module ADDSDeployment
Puis , on interroge la liste des nouvelles commandes disponibles via :
get-command –module ADDSDeployment | ft Name
Cette commande vous retourne quelque chose du genre :
Name
—-
Add-ADDSReadOnlyDomainControllerAccount
Install-ADDSDomain
Install-ADDSDomainController
Install-ADDSForest
Test-ADDSDomainControllerInstallation
Test-ADDSDomainControllerUninstallation
Test-ADDSDomainInstallation
Test-ADDSForestInstallation
Test-ADDSReadOnlyDomainControllerAccountCreation
Uninstall-ADDSDomainController
J’ajouterais qu’il vous faudra également recourir au module “ServerManager” afin d’installer les binaires nécessaires via l’applet de commande “Install-WindowsFeature”. (En effet, l’outil DCPROMO ce chargeait également de cette action)
Exemple d’implémentation
Préparer les identifiants nécessaires à la réalisation de l’opération (Dans cet exemple, Adminis du domaine devrait suffire)
$cred = Get-Credential LABO\Admin
Enumérer les contrôleurs de domaine existants avant d’en installer un nouveau
Get-ADDomainController -Filter * | Format-Table Name, Site, IPv4Address -AutoSize
Importer le module d’ajout de rôles et de fonctionnalités
Import-Module ServerManager
Installer le rôle AD-Domain-Services
Install-WindowsFeature –Name AD-Domain-Services `
–ComputerName Srvr1.labo.local `
-IncludeManagementTools
Vous pouvez vérifier que le rôle est bien installé
Get-WindowsFeature -ComputerName Srvr1.labo.local |
Where-Object { $_.Installed -eq $true } | Format-Table Name
Bien maintenant que les binaires sont installés, il faut procéder à la promotion. Pour cela, il y a plusieurs approches possibles. Ici, on va privilégier l’écriture d’un bloc de code qui peut ensuite être exécuté localement ou à distance via l’applet “Invoke-Command”.
Invoke-Command –ComputerName Srvr1.labo.local –ScriptBlock {
Import-Module ADDSDeployment;
Install-ADDSDomainController `
-NoGlobalCatalog:$false `
-CreateDnsDelegation:$false `
-CriticalReplicationOnly:$false `
-DatabasePath “C:\Windows\NTDS” `
-DomainName “labo.local” `
-InstallDns:$true `
-LogPath “C:\Windows\NTDS” `
-NoRebootOnCompletion:$true `
-SiteName “Nantes” `
-SysvolPath “C:\Windows\SYSVOL” `
-Force:$true `
-Credential $using:cred `
-Confirm:$false `
-SafeModeAdministratorPassword (ConvertTo-SecureString ‘Pa$$w0rd’ -AsPlainText -Force)}
Cet exemple ne reprend que les principaux paramètres courants d’une installation d’un nouveau contrôleur de domaine AD. Utilisez l’aide sur la commande “Install-ADDSDomainController“ pour obtenir des compléments d’information, tels que le contrôleur à partir duquel la réplication initiale est effectuée. Vous pouvez également utiliser la commande “Install-ADDSDomain“ pour implémenter un nouveau domaine dans une forêt existante ou bien encore “Install-ADDSForest“ pour créer une nouvelle forêt. Dans ces 2 autres cas, vous devrez recourir à un compte d’Administrateurs de l’entreprise.
Note : Vous remarquerez l’usage d’une nouvelle portée pour la variable “$using:cred” faisant partie des simplifications syntaxiques apparues en Powershell v3. Cette précision est particulièrement importante lors des appels à distance. En fait, en Powershell v2, le passage de paramètres à un bloc de script était “un peu moins évident” et il aurait fallu écrire un code du genre …
$cred = Get-Credential LABO\Admin
Invoke-Command –ComputerName Srvr1.labo.local –Command {
Param ( $name )
…
-Credential $name
…
}
-Arg $cred
Pour la rétrogradation, c’est sensiblement le même principe avec la commande “Uninstall-ADDSDomainController”. A l’occasion, je vous invite à exploiter les applets “Test-ADDS…” afin de vérifier le bon état d’installation d’Active Directory.
Voici donc un petit exemple de promotion d’un nouveau contrôleur de domaine Active Directory en Powershell sans recourir à l’outil DCPROMO (qu’il m’arrive régulièrement d’appeler par erreur sur W2012). Mais comme disait Mark Twain : “on ne se débarrasse pas d’une habitude en la flanquant par la fenêtre ; il faut lui faire descendre l’escalier marche par marche.”
Bien à vous.
Christophe