Associar computadores a um domínio Active Directory é uma tarefa rotineira que se torna tediosa quando feita manualmente em dezenas ou centenas de máquinas. Automatizar o processo de associação ao domínio via scripting economiza tempo significativo e garante consistência. Este guia cobre múltiplas abordagens, desde o clássico comando netdom até os cmdlets modernos do PowerShell e a associação offline ao domínio para ambientes sem conectividade direta de rede.

Pré-requisitos

Antes de criar scripts para associação ao domínio, verifique estes requisitos:

  • Resolução DNS — O computador deve ser capaz de resolver o nome do domínio. Certifique-se de que as configurações DNS apontem para um controlador de domínio ou servidor DNS que hospede a zona DNS do AD.
  • Conectividade de rede — O computador deve alcançar um controlador de domínio nas portas necessárias (LDAP 389, Kerberos 88, SMB 445, DNS 53, RPC 135 + dinâmicas).
  • Credenciais de domínio — Você precisa de uma conta com permissão para associar computadores ao domínio. Por padrão, qualquer usuário autenticado do domínio pode associar até 10 computadores (controlado pelo atributo ms-DS-MachineAccountQuota).
  • Nome do computador — O computador deve ter seu nome de host pretendido definido antes de ser associado ao domínio.

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

A ferramenta de linha de comando netdom está disponível desde as ferramentas de suporte do Windows 2000 e está incluída no Windows Server e RSAT.

Associação básica ao domínio

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

Parâmetros:

  • %COMPUTERNAME% — O computador a ser associado (use o nome real ou %COMPUTERNAME% para a máquina local)
  • /domain — O FQDN do domínio de destino
  • /userd — Credenciais de domínio com permissão de associação
  • /passwordd — Senha (use * para ser solicitado com segurança)
  • /reboot — Segundos de espera antes da reinicialização automática

Associar e colocar em uma 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 em lote para múltiplos computadores

Crie um arquivo de texto (computers.txt) com um nome de computador por linha, depois:

@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)

O cmdlet Add-Computer é o método moderno e preferido para associação ao domínio.

Associar o computador local

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

Associar e colocar em uma OU específica

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

Associar um computador 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

Renomear e associar em uma única etapa

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

Associação em massa ao domínio a partir de CSV

Para implantações em grande escala, use um arquivo CSV com os detalhes do computador:

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: Associação offline ao domínio (djoin.exe)

A associação offline ao domínio permite associar um computador ao domínio sem conectividade direta de rede com um controlador de domínio no momento da associação. Isto é útil para:

  • Provisionar máquinas em uma fábrica ou área de preparação sem acesso à rede do domínio
  • Implantar VMs a partir de modelos
  • Associar computadores através de links WAN com conectividade pouco confiável

Etapa 1: Provisionar a conta do computador

Execute isto em qualquer computador associado ao domínio com as permissões apropriadas:

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

Opções:

  • /provision — Criar a conta do computador no AD
  • /domain — Nome do domínio de destino
  • /machine — Nome do computador a ser associado
  • /savefile — Caminho para salvar o blob de provisionamento
  • /machineou — (Opcional) Caminho da OU para a conta do computador

Com localização em OU:

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

Etapa 2: Aplicar o blob no computador de destino

Transfira o arquivo blob para o computador de destino (via unidade USB, compartilhamento de rede, etc.) e execute:

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

Etapa 3: Reiniciar

Reinicie o computador. Quando ele iniciar, estará associado ao domínio e poderá se autenticar com sua conta de máquina assim que tiver conectividade de rede com um DC.

Automatizando a associação offline ao domínio na implantação

Você pode integrar o djoin em uma sequência de tarefas de implantação do 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

Pré-criação de contas de computador

Para melhor organização e segurança, pré-crie as contas de computador no Active Directory antes da associação ao domínio:

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

Solução de problemas em falhas de associação ao domínio

Erros comuns e soluções

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

  • Verifique as configurações DNS: nslookup corp.example.com
  • Certifique-se de que o servidor DNS preferido seja um controlador de domínio ou encaminhe para um
  • Teste a conectividade: 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”

  • Verifique se os registros SRV do DNS existem: nslookup -type=srv _ldap._tcp.dc._msdcs.corp.example.com
  • Verifique o sufixo DNS principal do computador

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

  • Verifique se a conta tem permissões de associação ao domínio
  • Verifique o atributo ms-DS-MachineAccountQuota (padrão: 10)
  • Verifique se a conta de computador foi pré-criada e se o usuário que realiza a associação tem permissões de escrita nela

“The machine account already exists”

  • O nome do computador já está em uso no AD. Exclua a conta obsoleta ou use um nome diferente:
    # Reset the existing computer account
    Reset-ComputerMachinePassword -Server "dc01.corp.example.com" -Credential (Get-Credential)

Verificação após a associação ao domínio

# 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

Resumo

Automatizar a associação ao domínio via scripting elimina o processo manual e repetitivo de associar cada computador individualmente. Use Add-Computer no PowerShell para ambientes modernos — ele gerencia associações locais e remotas, localização em OU e renomeação em um único cmdlet. Para cenários sem conectividade de rede, djoin.exe fornece a capacidade de associação offline ao domínio. Para ambientes legados, netdom continua sendo uma opção confiável. Sempre verifique a resolução DNS e a conectividade com o domínio antes de tentar as associações, e pré-crie as contas de computador nas OUs corretas para consistência organizacional.