Joindre des ordinateurs à un domaine Active Directory est une tâche routinière qui devient fastidieuse lorsqu’elle est effectuée manuellement sur des dizaines ou des centaines de machines. Automatiser le processus de jonction au domaine par le scripting permet de gagner un temps considérable et assure la cohérence. Ce guide couvre plusieurs approches, de la commande classique netdom aux cmdlets PowerShell modernes et à la jonction hors ligne au domaine pour les environnements sans connectivité réseau directe.
Prérequis
Avant de scripter les jonctions au domaine, vérifiez ces exigences :
- Résolution DNS — L’ordinateur doit pouvoir résoudre le nom de domaine. Assurez-vous que les paramètres DNS pointent vers un contrôleur de domaine ou un serveur DNS hébergeant la zone DNS AD.
- Connectivité réseau — L’ordinateur doit pouvoir atteindre un contrôleur de domaine sur les ports requis (LDAP 389, Kerberos 88, SMB 445, DNS 53, RPC 135 + dynamiques).
- Identifiants de domaine — Vous avez besoin d’un compte avec la permission de joindre des ordinateurs au domaine. Par défaut, tout utilisateur authentifié du domaine peut joindre jusqu’à 10 ordinateurs (contrôlé par l’attribut
ms-DS-MachineAccountQuota). - Nom de l’ordinateur — L’ordinateur doit avoir son nom d’hôte prévu défini avant la jonction au domaine.
Méthode 1 : Utiliser netdom (Classique)
L’outil en ligne de commande netdom est disponible depuis les outils de support de Windows 2000 et est inclus dans Windows Server et RSAT.
Jonction de base au domaine
netdom join %COMPUTERNAME% /domain:corp.example.com /userd:CORP\admin /passwordd:P@ssw0rd /reboot:5
Paramètres :
%COMPUTERNAME%— L’ordinateur à joindre (utilisez le nom réel ou%COMPUTERNAME%pour la machine locale)/domain— Le FQDN du domaine cible/userd— Identifiants de domaine avec permission de jonction/passwordd— Mot de passe (utilisez*pour être invité de manière sécurisée)/reboot— Secondes d’attente avant le redémarrage automatique
Joindre et placer dans une OU spécifique
netdom join WORKSTATION01 /domain:corp.example.com /userd:CORP\admin /passwordd:* /ou:"OU=Workstations,OU=IT,DC=corp,DC=example,DC=com" /reboot:5
Script batch pour plusieurs ordinateurs
Créez un fichier texte (computers.txt) avec un nom d’ordinateur par ligne, puis :
@echo off
for /f %%i in (computers.txt) do (
echo Joining %%i to domain...
netdom join %%i /domain:corp.example.com /userd:CORP\admin /passwordd:* /reboot:30
)
echo Done.
pause
Méthode 2 : PowerShell Add-Computer (Recommandé)
Le cmdlet Add-Computer est la méthode moderne et préférée pour la jonction au domaine.
Joindre l’ordinateur local
# Join the local computer to the domain and restart
Add-Computer -DomainName "corp.example.com" -Credential (Get-Credential) -Restart
Joindre et placer dans une OU spécifique
Add-Computer -DomainName "corp.example.com" `
-OUPath "OU=Workstations,OU=IT,DC=corp,DC=example,DC=com" `
-Credential (Get-Credential) `
-Restart
Joindre un ordinateur distant
# Join a single remote computer
Add-Computer -ComputerName "WORKSTATION01" `
-DomainName "corp.example.com" `
-Credential (Get-Credential) `
-Restart
# Join multiple remote computers
$computers = @("WS01", "WS02", "WS03", "WS04", "WS05")
Add-Computer -ComputerName $computers `
-DomainName "corp.example.com" `
-OUPath "OU=Workstations,DC=corp,DC=example,DC=com" `
-Credential (Get-Credential) `
-Restart -Force
Renommer et joindre en une seule étape
Add-Computer -DomainName "corp.example.com" `
-NewName "WS-FINANCE-01" `
-Credential (Get-Credential) `
-Restart
Jonction en masse au domaine depuis un CSV
Pour les déploiements à grande échelle, utilisez un fichier CSV avec les détails des ordinateurs :
ComputerName,OU
WS01,OU=Sales,DC=corp,DC=example,DC=com
WS02,OU=Engineering,DC=corp,DC=example,DC=com
WS03,OU=HR,DC=corp,DC=example,DC=com
$cred = Get-Credential -Message "Enter domain admin credentials"
$computers = Import-Csv -Path "C:\domain-join-list.csv"
foreach ($computer in $computers) {
try {
Add-Computer -ComputerName $computer.ComputerName `
-DomainName "corp.example.com" `
-OUPath $computer.OU `
-Credential $cred `
-Restart -Force `
-ErrorAction Stop
Write-Host "Successfully joined $($computer.ComputerName)" -ForegroundColor Green
}
catch {
Write-Host "Failed to join $($computer.ComputerName): $_" -ForegroundColor Red
}
}
Méthode 3 : Jonction hors ligne au domaine (djoin.exe)
La jonction hors ligne au domaine permet de joindre un ordinateur au domaine sans connectivité réseau directe avec un contrôleur de domaine au moment de la jonction. C’est utile pour :
- Le provisionnement de machines dans une usine ou une zone de préparation sans accès au réseau du domaine
- Le déploiement de VMs à partir de modèles
- La jonction d’ordinateurs via des liens WAN avec une connectivité peu fiable
Étape 1 : Provisionner le compte d’ordinateur
Exécutez ceci sur tout ordinateur joint au domaine avec les permissions appropriées :
djoin /provision /domain corp.example.com /machine NEWPC01 /savefile C:\odjblob.txt
Options :
/provision— Créer le compte d’ordinateur dans AD/domain— Nom du domaine cible/machine— Nom de l’ordinateur à joindre/savefile— Chemin pour sauvegarder le blob de provisionnement/machineou— (Optionnel) Chemin de l’OU pour le compte d’ordinateur
Avec placement dans une OU :
djoin /provision /domain corp.example.com /machine NEWPC01 /machineou "OU=Workstations,DC=corp,DC=example,DC=com" /savefile C:\odjblob.txt
Étape 2 : Appliquer le blob sur l’ordinateur cible
Transférez le fichier blob vers l’ordinateur cible (via clé USB, partage réseau, etc.) et exécutez :
djoin /requestODJ /loadfile C:\odjblob.txt /windowspath %SystemRoot% /localos
Étape 3 : Redémarrer
Redémarrez l’ordinateur. Lorsqu’il démarre, il sera joint au domaine et pourra s’authentifier avec son compte machine dès qu’il aura une connectivité réseau avec un DC.
Automatiser la jonction hors ligne au domaine dans le déploiement
Vous pouvez intégrer djoin dans une séquence de tâches de déploiement du SE (MDT, SCCM/MECM) :
# Generate blob during imaging task sequence
$computerName = $env:COMPUTERNAME
djoin /provision /domain corp.example.com /machine $computerName /reuse /savefile "C:\Windows\odjblob.txt"
# Apply during OOBE or first-boot script
djoin /requestODJ /loadfile "C:\Windows\odjblob.txt" /windowspath %SystemRoot% /localos
Pré-création de comptes d’ordinateur
Pour une meilleure organisation et sécurité, pré-créez les comptes d’ordinateur dans Active Directory avant la jonction au domaine :
Avec PowerShell
# Pre-stage a single computer account
New-ADComputer -Name "WS01" `
-Path "OU=Workstations,DC=corp,DC=example,DC=com" `
-Enabled $true
# Pre-stage from a list
$computers = @("WS01", "WS02", "WS03", "WS04", "WS05")
foreach ($pc in $computers) {
New-ADComputer -Name $pc `
-Path "OU=Workstations,DC=corp,DC=example,DC=com" `
-Enabled $true
Write-Host "Pre-staged $pc"
}
Dépannage des échecs de jonction au domaine
Erreurs courantes et solutions
“The specified domain either does not exist or could not be contacted”
- Vérifiez les paramètres DNS :
nslookup corp.example.com - Assurez-vous que le serveur DNS préféré est un contrôleur de domaine ou redirige vers un
- Testez la connectivité :
Test-NetConnection -ComputerName corp.example.com -Port 389
“An attempt to resolve the DNS name of a DC in the domain being joined has failed”
- Vérifiez que les enregistrements SRV DNS existent :
nslookup -type=srv _ldap._tcp.dc._msdcs.corp.example.com - Vérifiez le suffixe DNS principal de l’ordinateur
“Access is denied” ou “The user does not have permission”
- Vérifiez que le compte a les permissions de jonction au domaine
- Vérifiez l’attribut
ms-DS-MachineAccountQuota(par défaut : 10) - Vérifiez si le compte d’ordinateur a été pré-créé et si l’utilisateur effectuant la jonction a les permissions d’écriture dessus
“The machine account already exists”
- Le nom de l’ordinateur est déjà utilisé dans AD. Supprimez le compte obsolète ou utilisez un nom différent :
# Reset the existing computer account Reset-ComputerMachinePassword -Server "dc01.corp.example.com" -Credential (Get-Credential)
Vérification après la jonction au domaine
# Verify domain membership
(Get-WmiObject Win32_ComputerSystem).Domain
# Test secure channel to DC
Test-ComputerSecureChannel -Verbose
# Verify the computer account in AD
Get-ADComputer -Identity $env:COMPUTERNAME
Résumé
Automatiser la jonction au domaine par le scripting élimine le processus manuel et répétitif de joindre chaque ordinateur individuellement. Utilisez Add-Computer dans PowerShell pour les environnements modernes — il gère les jonctions locales et distantes, le placement dans les OU et le renommage en un seul cmdlet. Pour les scénarios sans connectivité réseau, djoin.exe fournit la capacité de jonction hors ligne au domaine. Pour les environnements hérités, netdom reste une option fiable. Vérifiez toujours la résolution DNS et la connectivité au domaine avant de tenter les jonctions, et pré-créez les comptes d’ordinateur dans les bonnes OU pour la cohérence organisationnelle.