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.
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:
- O cliente contata o RPC Endpoint Mapper na porta TCP 135.
- O mapeador informa uma porta dinâmica (>= 49152 em Windows Vista+), onde o serviço WMI (Winmgmt) atenderá.
- 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)
Categoria | O que costuma falhar | Como detectar |
---|---|---|
Rede / Firewall | Porta 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. |
DNS | Nome “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 locais | Serviç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/Kerberos | Diferenç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 serve | Observaçõ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 Management | Permite 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
eA.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/Erro | Interpretação | Correçã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 skew | Diferenç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)
- Conectividade:
Test-NetConnection A -Port 135
. Se falhar, ajuste firewall/rota. - Portas: ative “WMI (DCOM-In)” e “COM+ Network Access”.
- DNS:
nslookup A.dominio.local
; corrija registros; use FQDN. - Serviços:
sc query rpcss
,Get-Service Winmgmt
,Start-Service RemoteRegistry
. - Hora:
w32tm /resync
. - Local/WinRM: execute localmente ou via
Invoke-Command
(WS‑Man). - 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 }