Unir equipos a un dominio de Active Directory es una tarea rutinaria que se vuelve tediosa cuando se realiza manualmente en docenas o cientos de máquinas. Automatizar el proceso de unión al dominio mediante scripting ahorra tiempo significativo y garantiza consistencia. Esta guía cubre múltiples enfoques, desde el clásico comando netdom hasta los cmdlets modernos de PowerShell y la unión a dominio sin conexión para entornos sin conectividad directa de red.

Requisitos previos

Antes de crear scripts para la unión al dominio, verifique estos requisitos:

  • Resolución DNS — El equipo debe poder resolver el nombre de dominio. Asegúrese de que la configuración DNS apunte a un controlador de dominio o servidor DNS que aloje la zona DNS de AD.
  • Conectividad de red — El equipo debe poder alcanzar un controlador de dominio en los puertos requeridos (LDAP 389, Kerberos 88, SMB 445, DNS 53, RPC 135 + dinámicos).
  • Credenciales de dominio — Necesita una cuenta con permisos para unir equipos al dominio. Por defecto, cualquier usuario autenticado del dominio puede unir hasta 10 equipos (controlado por el atributo ms-DS-MachineAccountQuota).
  • Nombre del equipo — El equipo debe tener su nombre de host previsto configurado antes de unirse al dominio.

Método 1: Usando netdom (Clásico)

La herramienta de línea de comandos netdom ha estado disponible desde las herramientas de soporte de Windows 2000 y está incluida en Windows Server y RSAT.

Unión básica al dominio

netdom join %COMPUTERNAME% /domain:corp.example.com /userd:CORP\admin /passwordd:P@ssw0rd /reboot:5

Parámetros:

  • %COMPUTERNAME% — El equipo a unir (use el nombre real o %COMPUTERNAME% para la máquina local)
  • /domain — El FQDN del dominio de destino
  • /userd — Credenciales de dominio con permisos de unión
  • /passwordd — Contraseña (use * para que se solicite de forma segura)
  • /reboot — Segundos de espera antes del reinicio automático

Unir y colocar en una OU específica

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 por lotes para múltiples equipos

Cree un archivo de texto (computers.txt) con un nombre de equipo por línea, luego:

@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étodo 2: PowerShell Add-Computer (Recomendado)

El cmdlet Add-Computer es el método moderno y preferido para unir al dominio.

Unir el equipo local

# Join the local computer to the domain and restart
Add-Computer -DomainName "corp.example.com" -Credential (Get-Credential) -Restart

Unir y colocar en una OU específica

Add-Computer -DomainName "corp.example.com" `
    -OUPath "OU=Workstations,OU=IT,DC=corp,DC=example,DC=com" `
    -Credential (Get-Credential) `
    -Restart

Unir un equipo remoto

# 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

Renombrar y unir en un solo paso

Add-Computer -DomainName "corp.example.com" `
    -NewName "WS-FINANCE-01" `
    -Credential (Get-Credential) `
    -Restart

Unión masiva al dominio desde CSV

Para despliegues a gran escala, use un archivo CSV con los detalles del equipo:

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étodo 3: Unión a dominio sin conexión (djoin.exe)

La unión a dominio sin conexión le permite unir un equipo al dominio sin conectividad directa de red a un controlador de dominio en el momento de la unión. Esto es útil para:

  • Aprovisionar máquinas en una fábrica o área de preparación sin acceso a la red del dominio
  • Desplegar máquinas virtuales desde plantillas
  • Unir equipos a través de enlaces WAN con conectividad poco confiable

Paso 1: Aprovisionar la cuenta del equipo

Ejecute esto en cualquier equipo unido al dominio con los permisos apropiados:

djoin /provision /domain corp.example.com /machine NEWPC01 /savefile C:\odjblob.txt

Opciones:

  • /provision — Crear la cuenta del equipo en AD
  • /domain — Nombre del dominio de destino
  • /machine — Nombre del equipo a unir
  • /savefile — Ruta para guardar el blob de aprovisionamiento
  • /machineou — (Opcional) Ruta de la OU para la cuenta del equipo

Con ubicación en OU:

djoin /provision /domain corp.example.com /machine NEWPC01 /machineou "OU=Workstations,DC=corp,DC=example,DC=com" /savefile C:\odjblob.txt

Paso 2: Aplicar el blob en el equipo de destino

Transfiera el archivo blob al equipo de destino (mediante unidad USB, recurso compartido de red, etc.) y ejecute:

djoin /requestODJ /loadfile C:\odjblob.txt /windowspath %SystemRoot% /localos

Paso 3: Reiniciar

Reinicie el equipo. Cuando arranque, estará unido al dominio y podrá autenticarse con su cuenta de máquina una vez que tenga conectividad de red a un DC.

Automatizar la unión a dominio sin conexión en el despliegue

Puede integrar djoin en una secuencia de tareas de despliegue del SO (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

Pre-creación de cuentas de equipo

Para una mejor organización y seguridad, pre-cree las cuentas de equipo en Active Directory antes de la unión al dominio:

Usando 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"
}

Solución de problemas en fallos de unión al dominio

Errores comunes y soluciones

“The specified domain either does not exist or could not be contacted”

  • Verifique la configuración DNS: nslookup corp.example.com
  • Asegúrese de que el servidor DNS preferido sea un controlador de dominio o reenvíe a uno
  • Pruebe la conectividad: 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”

  • Compruebe que existen registros SRV de DNS: nslookup -type=srv _ldap._tcp.dc._msdcs.corp.example.com
  • Verifique el sufijo DNS principal del equipo

“Access is denied” o “The user does not have permission”

  • Verifique que la cuenta tiene permisos de unión al dominio
  • Compruebe el atributo ms-DS-MachineAccountQuota (por defecto: 10)
  • Compruebe si la cuenta de equipo fue pre-creada y si el usuario que realiza la unión tiene permisos de escritura sobre ella

“The machine account already exists”

  • El nombre del equipo ya está en uso en AD. Elimine la cuenta obsoleta o use un nombre diferente:
    # Reset the existing computer account
    Reset-ComputerMachinePassword -Server "dc01.corp.example.com" -Credential (Get-Credential)

Verificación después de la unión al dominio

# 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

Resumen

Automatizar la unión al dominio mediante scripting elimina el proceso manual y repetitivo de unir cada equipo individualmente. Use Add-Computer en PowerShell para entornos modernos — maneja uniones locales y remotas, ubicación en OU y cambio de nombre en un solo cmdlet. Para escenarios sin conectividad de red, djoin.exe proporciona la capacidad de unión a dominio sin conexión. Para entornos heredados, netdom sigue siendo una opción confiable. Siempre verifique la resolución DNS y la conectividad con el dominio antes de intentar las uniones, y pre-cree las cuentas de equipo en las OUs correctas para mantener la consistencia organizativa.