Erro “RPC server is unavailable” (0x800706BA) no Rename‑Computer: causas, portas e solução passo a passo

Ao renomear um computador de domínio com Rename-Computer, é comum surgir o erro “The RPC server is unavailable (0x800706BA)”. Este guia explica por que isso acontece (WMI/DCOM/RPC), mostra um passo a passo objetivo para corrigir e oferece alternativas seguras via WinRM.

Índice

Sintoma

Você executa, a partir de uma estação administrativa, algo como:

Rename-Computer -ComputerName "A" -NewName "A1" -DomainCredential (Get-Credential) -Force -Restart

E recebe uma mensagem nos moldes de:

Cannot establish the WMI connection...
The RPC server is unavailable (0x800706BA).

O que está acontecendo “por baixo do capô”

Quando você usa -ComputerName, o Rename-Computer conversa com o host remoto via WMI sobre DCOM/RPC:

  1. O cliente contata o RPC Endpoint Mapper na porta TCP 135.
  2. O mapeador informa uma porta dinâmica (>= 49152 em Windows Vista+), onde o serviço WMI (Winmgmt) atenderá.
  3. O cliente abre a sessão WMI nessa porta dinâmica para executar a renomeação e agendar o reinício.

Se a 135 ou as portas dinâmicas estiverem bloqueadas (firewall, NAT, roteamento), se o DNS apontar para o IP errado, se serviços necessários estiverem parados, ou se houver deriva de tempo (Kerberos), a conexão falhará com 0x800706BA.

Principais causas (resumo rápido)

CategoriaO que costuma falharComo detectar
Rede / FirewallPorta TCP 135 e/ou range dinâmico 49152–65535 bloqueados; NAT intermediando; IP incorreto.Test-NetConnection A -Port 135; tentativa de WMI remota falha; sem entrada no log do host.
DNSNome “A” resolve para IP antigo/errado; registros A/PTR órfãos; uso de nome NetBIOS ambíguo.nslookup A e nslookup A.dominio.local mostram IP divergente; ping -a revela inconsistência.
Serviços locaisServiços essenciais parados ou em Startup incorreto: RPCSS, Winmgmt, Remote Registry, TCP/IP NetBIOS Helper.sc query rpcss, Get-Service Winmgmt, Get-Service RemoteRegistry.
Tempo/KerberosDiferença > 5 min entre cliente e Controlador de Domínio invalida tickets (skew).w32tm /query /status; eventos Kerberos; w32tm /resync corrige na hora.

Checklist de solução passo a passo

Testar conectividade

Objetivo: validar que a 135 está acessível e há retorno da pilha TCP.

Test-NetConnection A -Port 135
Opcional: latência e rota
Test-Connection A -Count 2
tracert A

Se falhar: verifique roteadores/VPN, ACLs e, para teste controlado, desative temporariamente o firewall do host remoto (ambiente de laboratório). Em redes com NAT, DCOM/RPC é notoriamente instável por causa das portas dinâmicas: prefira usar WinRM/WS-Man (veja adiante) ou crie pinholes estáticos bem definidos.

Abrir as portas corretas no Firewall do Windows

Prefira habilitar grupos de regras incorporadas em vez de abrir range amplo “na unha”.

Grupo de Regras (Inbound)Para que serveObservações
Windows Management Instrumentation (WMI)Permite WMI/DCOM (usa 135 + porta dinâmica).Ative em Domain profile; restrinja por IP origem.
COM+ Network Access (DCOM-In)Habilita RPC/DCOM básico.Complementa WMI.
Remote Service ManagementPermite gerenciamento remoto via serviços.Útil para cenários de automação.
File and Printer Sharing (SMB-In)Nem sempre necessário para renomear, mas ajuda em diagnósticos.Restrinja com remoteip= quando possível.

Via PowerShell:

# Habilitar grupos de regras integradas (perfil de Domínio)
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" -Enabled True
Set-NetFirewallRule -DisplayGroup "COM+ Network Access (DCOM-In)" -Enabled True
Set-NetFirewallRule -DisplayGroup "Remote Service Management" -Enabled True

Abrir manualmente (uso pontual/laboratório):

netsh advfirewall firewall add rule name="RPC-135" dir=in action=allow protocol=TCP localport=135 remoteip=10.0.0.0/24
netsh advfirewall firewall add rule name="RPC-Dynamic" dir=in action=allow protocol=TCP localport=49152-65535 remoteip=10.0.0.0/24

Dica: em versões antigas (pré‑Vista), o intervalo dinâmico é 1024–65535; ajuste as regras conforme necessário.

Checar DNS

O RPC precisa chegar ao host certo. Use sempre o FQDN.

nslookup A
nslookup A.dominio.local
ping -a A
ipconfig /displaydns
ipconfig /flushdns
  • Se A e A.dominio.local retornarem IPs diferentes, corrija os registros A/PTR no DNS.
  • Após o rename, rode ipconfig /registerdns no cliente para atualizar o registro.

Garantir que serviços estejam ativos

Os seguintes serviços devem estar com Startup “Automático” e Status “Em execução” no alvo:

  • Remote Procedure Call (RPC) (RpcSs)
  • DCOM Server Process Launcher (DcomLaunch)
  • Windows Management Instrumentation (Winmgmt)
  • Remote Registry (RemoteRegistry)
  • TCP/IP NetBIOS Helper (lmhosts)
sc query rpcss
sc query winmgmt
sc config RemoteRegistry start= auto
Start-Service RemoteRegistry

Sincronizar a hora (Kerberos)

Skew de tempo > 5 min quebra a autenticação Kerberos usada pelo cmdlet.

w32tm /query /status
w32tm /resync
Garantir hierarquia do domínio (em clientes de domínio)
w32tm /config /syncfromflags:DOMHIER /update
net stop w32time & net start w32time

Executar localmente quando possível

Se você já está logado na própria máquina alvo (console, RDP, PowerShell Remoting), evite RPC/DCOM e renomeie localmente:

Rename-Computer -NewName "A1" -Force -Restart

No Windows Server Core, também é possível usar sconfig (opção “Computer Name”).

Repetir com credenciais válidas de domínio

Garanta que a conta tenha permissão para renomear objetos de computador no AD (por exemplo, grupos Delegados, OU específica ou Domain Admins). Informe o domínio explicitamente no Get-Credential:

$cred = Get-Credential -UserName "DOMÍNIO\usuário.admin" -Message "Credenciais para renomear computador"
Rename-Computer -ComputerName "A" -NewName "A1" -DomainCredential $cred -Force -Restart

Testes rápidos de WMI e RPC antes do rename

Valide o canal WMI/DCOM e compare com WS-Man (WinRM):

# Teste WMI via DCOM (usa RPC)
$optDcom = New-CimSessionOption -Protocol DCOM
$sDcom   = New-CimSession -ComputerName 'A' -SessionOption $optDcom
Get-CimInstance -CimSession $sDcom -ClassName Win32_OperatingSystem

Teste WS-Man (WinRM) - alternativa que não depende de RPC dinâmico

Test-WSMan A
$sWs    = New-CimSession -ComputerName 'A'   # por padrão usa WS-Man
Get-CimInstance -CimSession $sWs -ClassName Win32_OperatingSystem 

Se WS-Man funcionar e DCOM não, o problema está no firewall/RPC. Use então um dos métodos a seguir.

Alternativas seguras sem DCOM/RPC (WS-Man/WinRM)

Em redes segmentadas ou com NAT, é comum manter apenas WinRM (HTTP 5985 / HTTPS 5986) exposto. Isso contorna o uso de 135 + portas dinâmicas.

Usar PowerShell Remoting

# Pré-requisito no alvo (uma vez):
Enable-PSRemoting -Force

A partir da estação administrativa:

Invoke-Command -ComputerName 'A' -ScriptBlock {
Rename-Computer -NewName 'A1' -Force -Restart
} 

Usar CIM/WS-Man diretamente

# Autenticação de domínio informada
$cred = Get-Credential "DOMÍNIO\usuário.admin"

Rename via WMI (classe Win32_ComputerSystem) usando WS-Man

$sess = New-CimSession -ComputerName 'A' -Credential $cred   # WS-Man por padrão
Invoke-CimMethod -CimSession $sess `                 -ClassName Win32_ComputerSystem`
-MethodName Rename `
-Arguments @{ Name='A1'; Password=$cred.GetNetworkCredential().Password; UserName=$cred.UserName }

Em seguida, reinicie:

Invoke-CimMethod -CimSession $sess -ClassName Win32_OperatingSystem -MethodName Reboot 

Dica: padronize a habilitação do WinRM via GPO: Computer Configuration > Administrative Templates > Windows Components > Windows Remote Management (WinRM) > WinRM Service > Allow remote server management through WinRM. Crie também regras de firewall de inbound para 5985/5986 restritas às sub-redes de administração.

Roteiro de diagnóstico “tudo‑em‑um”

O script abaixo avalia rapidamente os pré‑requisitos em um ou mais computadores e compila um relatório objetivo:

$targets = @('A')  # adicione outros hosts aqui
$result  = foreach($t in $targets){
  $dnsFqdnOk = ($null -ne ([System.Net.Dns]::GetHostAddresses("$t") | Select-Object -First 1))
  $t135      = Test-NetConnection $t -Port 135 -WarningAction SilentlyContinue
  $wsmanOk   = $false; try { Test-WSMan $t -ErrorAction Stop | Out-Null; $wsmanOk = $true } catch {}
  $rpcSvc    = $null;  try { $rpcSvc = Invoke-Command -ComputerName $t -ScriptBlock { (Get-Service -Name rpcss).Status } -ErrorAction Stop } catch { $rpcSvc = 'Desconhecido' }
  $status    = if($t135.TcpTestSucceeded){'OK'} else {'FALHA'}
  [PSCustomObject]@{
    Host                = $t
    DNSFQDNResolve    = $dnsFqdnOk
    TCP_135             = $t135.TcpTestSucceeded
    WinRM_WSMan         = $wsmanOk
    RPC_Service         = $rpcSvc
    RecomendaUsarWinRM= ($wsmanOk -and -not $t135.TcpTestSucceeded)
    Observacao          = if(-not $t135.TcpTestSucceeded) {'Verificar firewall/rota/NAT'} elseif(-not $dnsFqdnOk){'Ajustar DNS'} else {'OK'}
  }
}
$result | Format-Table -Auto

Erros correlatos e como diferenciar

Mensagem/ErroInterpretaçãoCorreção típica
0x800706BA (RPC server is unavailable)Bloqueio/queda de RPC/DCOM (135 + dinâmicas) ou DNS incorreto.Abrir portas, corrigir DNS, serviços de RPC/WMI.
0x80070005 (Access is denied)Credenciais insuficientes ou políticas DCOM/WMI negando.Usar conta com permissão; revisar delegações no AD; checar UAC remoto.
Kerberos: clock skewDiferença de tempo > 5 min entre cliente e DC.w32tm /resync; garantir NTP/domínio.

Boas práticas para evitar o erro no futuro

  • Padronize WinRM: habilite e restrinja por IP/segmento administrativo; prefira WS‑Man para automação diária.
  • GPO de Firewall: habilite grupos WMI/DCOM apenas em perfis de Domínio e restrinja origens.
  • DNS saudável: limpe registros órfãos, use DHCP com atualização dinâmica, priorize FQDN.
  • Tempo consistente: garanta NTP interno; monitore skew com alertas.
  • Permissões delegadas: crie um grupo “Renomear-Computadores” com direitos limitados à OU alvo.

Procedimento enxuto (cola)

  1. Conectividade: Test-NetConnection A -Port 135. Se falhar, ajuste firewall/rota.
  2. Portas: ative “WMI (DCOM-In)” e “COM+ Network Access”.
  3. DNS: nslookup A.dominio.local; corrija registros; use FQDN.
  4. Serviços: sc query rpcss, Get-Service Winmgmt, Start-Service RemoteRegistry.
  5. Hora: w32tm /resync.
  6. Local/WinRM: execute localmente ou via Invoke-Command (WS‑Man).
  7. Credenciais: use conta com permissão no AD; repita o Rename-Computer.

Exemplos prontos

1) Abrir portas e renomear (WMI/DCOM):

# No alvo (como GPO ou manual)
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" -Enabled True
Set-NetFirewallRule -DisplayGroup "COM+ Network Access (DCOM-In)" -Enabled True

A partir da estação admin

$cred = Get-Credential "DOMÍNIO\admin"
Rename-Computer -ComputerName "A" -NewName "A1" -DomainCredential $cred -Force -Restart 

2) Alternativa via WinRM (recomendada em redes segmentadas):

# Pré: WinRM habilitado e portas 5985/5986 liberadas
Invoke-Command -ComputerName "A" -ScriptBlock {
  Rename-Computer -NewName "A1" -Force -Restart
}

3) Verificar WMI rapidamente antes:

# WMI legado (PowerShell 5.1)
Get-WmiObject Win32_OperatingSystem -ComputerName A

CIM moderno (WS-Man)

Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName A 

Perguntas frequentes

Preciso reiniciar? Sim. O rename muda o nome NetBIOS, SPNs e registro; o reinício aplica tudo corretamente. Use -Restart para automatizar.

Funciona em máquinas fora do domínio? Sim, com -LocalCredential, mas o erro 0x800706BA continuará indicando bloqueio RPC/DCOM se usar -ComputerName.

Posso renomear muitas máquinas de uma vez? Sim, mas não dispare centenas de reinícios simultâneos. Faça lotes e monitore:

Get-ADComputer -Filter * -SearchBase "OU=Alvo,DC=dominio,DC=local" |
  ForEach-Object {
    $novo = "$($_.Name)-A1"
    Invoke-Command -ComputerName $_.DNSHostName -ScriptBlock { param($n) Rename-Computer -NewName $n -Force -Restart } -ArgumentList $novo
  }

Conclusão

O erro “RPC server is unavailable (0x800706BA)” ao renomear com Rename-Computer quase sempre se resume a quatro itens: rede/portas, DNS, serviços e hora. Seguindo o checklist acima — liberar 135 + dinâmicas ou adotar WinRM, corrigir DNS, garantir serviços e sincronizar a hora — o rename tende a concluir sem incidentes. Em ambientes com segmentação avançada, padronize WinRM/WS‑Man para evitar as armadilhas do DCOM/RPC.


Apêndice: comandos essenciais (cola rápida)

# Conectividade
Test-NetConnection A -Port 135

DNS

nslookup A
nslookup A.dominio.local
ipconfig /flushdns
ipconfig /registerdns

Serviços

sc query rpcss
sc config RemoteRegistry start= auto
Start-Service RemoteRegistry

Tempo

w32tm /query /status
w32tm /resync

Rename local

Rename-Computer -NewName "A1" -Force -Restart

Rename remoto (credencial de domínio)

$cred = Get-Credential "DOMÍNIO\admin"
Rename-Computer -ComputerName "A" -NewName "A1" -DomainCredential $cred -Force -Restart

Alternativa via WinRM

Invoke-Command -ComputerName "A" -ScriptBlock { Rename-Computer -NewName "A1" -Force -Restart } 
Índice