Todo técnico de suporte já viveu esta cena. A impressora de rede responde ao ping. A interface web abre no navegador. O driver instalou sem erro. O Windows mostra a fila como "Pronta". Você manda a página de teste, ela entra na fila com status Imprimindo, e fica ali. Para sempre. Sem erro, sem mensagem, sem papel.
O instinto manda reinstalar o driver. Depois trocar a porta. Depois reiniciar o spooler. Depois reinstalar de novo, agora com o utilitário do fabricante. Três horas depois você está no mesmo lugar, com quatro portas órfãs e duas filas fantasma que não removem.
O problema não é técnico. É de método. Impressão em rede é uma pilha de camadas, e quase todo mundo diagnostica pelo meio dela, pelo driver, que é justamente a camada mais visível e menos provável.
Este artigo apresenta um roteiro que testa cada camada isoladamente, na ordem certa, com PowerShell. Ele não depende de conhecer o modelo da impressora nem o fabricante do driver. E ele te diz, em poucos comandos, exatamente onde a coisa quebra.
Nos exemplos, considere o IP
192.168.1.50e a filaImpressora Rede. Substitua pelos valores do seu ambiente.
Antes dos comandos, o mapa mental. Quando um documento sai da tela e chega ao papel, ele percorre:
spoolsv.exe sair?Cada camada tem um teste isolado. A regra é simples: teste de baixo para cima e pare na primeira que falhar. Não adianta reinstalar driver, que é camada 4, se a camada 6 está bloqueando.
Test-NetConnection 192.168.1.50 -Port 9100 # RAW / JetDirect
Test-NetConnection 192.168.1.50 -Port 631 # IPP
Test-NetConnection 192.168.1.50 -Port 515 # LPR / LPD
TcpTestSucceeded : True na 9100 significa que rede, VLAN, roteamento e firewall de perímetro estão fora da conta.
Test-NetConnection só testa TCP
Test-NetConnection 192.168.1.50 -Port 161 # SNMP, SEMPRE vai falhar
SNMP roda em UDP. Esse teste retorna False mesmo com o SNMP perfeitamente funcional. É um falso negativo que já mandou muito técnico caçar problema onde não havia. Se precisar validar SNMP de verdade, use snmpwalk ou o módulo SNMP do Windows, nunca o Test-NetConnection.
Este é o comando mais valioso do artigo. Ele abre um socket direto na porta 9100 e escreve texto puro, ignorando completamente o spooler, o driver e a porta do Windows:
$c = New-Object System.Net.Sockets.TcpClient('192.168.1.50',9100)
$s = $c.GetStream()
$b = [Text.Encoding]::ASCII.GetBytes("Teste RAW 9100`r`n`f")
$s.Write($b,0,$b.Length); $s.Flush(); Start-Sleep 2; $c.Close()
O `f no final é o form feed. Sem ele a impressora segura a página esperando mais dados.
Saiu papel? Rede, impressora e cabo ou Wi-Fi estão provados. Tudo que falhar daqui pra frente está dentro do Windows. Você acabou de eliminar metade das hipóteses em dez segundos.
Não saiu papel? O problema é a impressora ou a sessão TCP. Desligue-a da tomada por 30 segundos, porque o botão liga/desliga não derruba sessões TCP presas. A maioria das impressoras aceita apenas uma conexão RAW por vez, e uma sessão meio-aberta trava todas as seguintes.
Teste trivial e decisivo: abra o Bloco de Notas, digite qualquer coisa e imprima em Microsoft Print to PDF.
Gerou o arquivo? O spooler renderiza, processa e conclui jobs normalmente. Note que essa fila usa o monitor PORTPROMPT:, não o monitor TCP/IP. Ou seja, ela prova o spooler sem provar a rede. É exatamente essa separação que a torna útil.
Se o PDF também travar, o subsistema de impressão está corrompido e o reset é obrigatório:
net stop spooler
Remove-Item "C:\Windows\System32\spool\PRINTERS\*" -Recurse -Force
net start spooler
Instale uma fila temporária com o driver Generic / Text Only, apontando para a mesma porta da impressora problemática:
Configurações → Impressoras → Adicionar dispositivo → "A impressora que eu quero não está listada" → Adicionar uma impressora local ou de rede usando configurações manuais → Usar uma porta existente → selecione a porta → Fabricante Generic → Generic / Text Only.
Imprima uma linha do Bloco de Notas.
Aviso importante:
Generic / Text Onlyenvia apenas texto ASCII. É ferramenta de diagnóstico, não solução. Se você deixá-la em produção, o cliente vai imprimir Bloco de Notas normalmente e reclamar dois dias depois que "PDF não imprime". Remova assim que terminar o teste.
Não use "Adicionar uma impressora usando endereço TCP/IP" para esse teste. Esse assistente faz descoberta por SNMP e falha com "O dispositivo não foi encontrado na rede" em qualquer ambiente com SNMP desabilitado, perdendo seu tempo com um erro que não tem relação com o problema.
Aqui está o núcleo do método. Mande um único job, deixe-o travar, e rode os três blocos abaixo em sequência.
Get-PrintJob -PrinterName "Impressora Rede" |
Format-List Id,JobStatus,Size,SubmittedTime
Como interpretar o JobStatus:
| JobStatus | Significado |
|---|---|
Normal |
na fila, aguardando a vez |
Printing |
entregue ao monitor de porta |
Printing, Retained |
entregue e preso, não avançou |
Error, Printing, Retained |
falhou e está em loop de retry |
Spooling |
ainda sendo renderizado pelo driver |
Get-NetTCPConnection -RemoteAddress 192.168.1.50 -ErrorAction SilentlyContinue |
Format-Table LocalPort,RemotePort,State,OwningProcess -AutoSize
Este é o comando decisivo, e a leitura é binária:
Ignore conexões em TimeWait nas portas 80, 443 e 631. São resíduo do serviço de descoberta de rede conversando com a interface web da impressora e não têm relação com o job.
O log operacional do serviço de impressão vem desabilitado por padrão no Windows. Ligue-o:
wevtutil sl Microsoft-Windows-PrintService/Operational /e:true
Reproduza a falha, depois leia:
Get-WinEvent -LogName Microsoft-Windows-PrintService/Operational -MaxEvents 20 |
Format-Table TimeCreated,Id,LevelDisplayName,Message -Wrap
Os IDs que importam:
| ID | O que significa |
|---|---|
| 800 | job entrou no spool |
| 801 | job iniciado |
| 805 | processador de impressão assumiu |
| 842 | job entregue ao processador, traz o código de erro Win32 |
| 307 | documento impresso com sucesso, mostra porta, bytes e páginas |
| 310 | documento excluído |
| 372 | falha na renderização |
O evento 307 é a confirmação definitiva de sucesso. Ele nomeia a porta usada e a quantidade de bytes:
O documento 3 ... foi impresso em Impressora Rede pela porta PRN_RAW.
Tamanho em bytes: 16092. Páginas impressas: 1.
O evento 842 traz o retorno do processador. 0x0 é sucesso. Alguns códigos comuns:
| Código | Decimal | Significado |
|---|---|---|
0x0 |
0 | sucesso |
0xBBB |
3003 | ERROR_SPL_NO_STARTDOC, spool abortado, tipicamente job cancelado |
0xBBA |
3002 | arquivo de spool não encontrado |
0xBC0 |
3008 | monitor de porta em uso |
Cuidado com o 0xBBB. Ele aparece toda vez que alguém cancela um job, então é frequentemente uma consequência dos seus próprios testes, não a causa da falha. Verifique se há um evento 310 no mesmo horário antes de investigar.
A sequência 800, depois 801, depois silêncio é o padrão da falha silenciosa: spoolou, iniciou, e nunca entregou. Combinada com ausência de conexão TCP, aponta direto para bloqueio de segurança.
Se a camada 5 mostrou job em Printing sem nenhuma conexão TCP, este é o suspeito principal.
Soluções de EDR corporativo trazem módulos de firewall com regras específicas para tráfego de impressão, frequentemente negadas por padrão. E o comportamento é traiçoeiro: o teste RAW manual da camada 2 passa, porque a regra é vinculada ao processo spoolsv.exe, não à porta. Seu PowerShell não é o spooler.
Teste: desative o firewall do antivírus por dois minutos, limpe a fila e reenvie. Saiu papel? Confirmado.
Correção permanente, no console de gerenciamento e nunca localmente na estação:
| Campo | Valor |
|---|---|
| Aplicação | %windir%\System32\spoolsv.exe |
| Direção | Saída |
| Protocolo | TCP |
| Porta remota | 9100 |
| Endereço remoto | a sub-rede da impressora |
Estações fora do domínio e em Wi-Fi são as mais afetadas. Não herdam perfil de rede nem GPO, e caem no perfil mais restritivo por padrão.
A impressão funciona, mas alguns documentos, tipicamente PDFs, travam. Olhe o tamanho de papel no preview do leitor de PDF:
Se o driver declara Carta e a bandeja tem A4, a impressora segura o job esperando confirmação no painel, sem erro nenhum no Windows. Confira o tamanho configurado na impressora, normalmente em Estado do produto ou Alimentação na interface web, e alinhe:
Configurações → Impressoras → a fila → Preferências de impressão → tamanho A4 → Aplicar.
E vá olhar o painel físico da impressora. Provavelmente tem uma mensagem esperando alguém apertar OK.
Cruze os resultados e vá direto à correção:
| Socket RAW | Print to PDF | Generic/Text | Conexão 9100 | Diagnóstico |
|---|---|---|---|---|
| falha | . | . | . | Impressora ou sessão TCP presa. Power cycle na tomada |
| OK | falha | . | . | Spooler corrompido. Reset do subsistema |
| OK | OK | OK | sim | Driver do fabricante. Reinstalar ou trocar por Universal |
| OK | OK | falha | não | Firewall ou EDR bloqueando o spoolsv.exe |
| OK | OK | falha | sim | Porta corrompida. Recriar porta limpa |
| OK | OK | OK | sim, mas só texto sai | Tamanho de papel divergente |
1. Job zumbi na cabeça da fila. Um job travado em Error, Retained bloqueia todos os que entram depois. Se você trocar a porta, testar, trocar o driver, testar, e sempre houver um zumbi na frente, nenhum teste seu tem validade. Limpe a fila antes de cada teste:
net stop spooler
Remove-Item "C:\Windows\System32\spool\PRINTERS\*" -Recurse -Force
net start spooler
Get-PrintJob -PrinterName "Impressora Rede" # tem que voltar vazio
2. SNMP habilitado na porta. Com SNMP bloqueado na rede, o Windows não consegue consultar o status, marca a impressora como Offline e a fila trava sem enviar nada. Vá em Propriedades → Portas → Configurar Porta e desmarque "Status SNMP Ativado". Desmarque também "Habilitar suporte bidirecional" na aba Portas.
3. Portas duplicadas do utilitário do fabricante. Instaladores criam portas proprietárias e portas WSD que dependem de SNMP ou multicast, ambos frequentemente bloqueados em redes gerenciadas. Audite sempre:
Get-PrinterPort | Format-Table Name,Description,PrinterHostAddress,PortNumber,Protocol,SNMPEnabled -AutoSize
Get-Printer | Format-Table Name,DriverName,PortName,PrinterStatus -AutoSize
Uma fila apontada para porta proprietária trava sem abrir conexão TCP, porque tenta SNMP em UDP primeiro, e o Get-NetTCPConnection não mostra UDP. Você fica cego para a tentativa.
4. Filas fantasma que não removem. Se o Remove-Printer responde "nenhum objeto encontrado" mas o dispositivo continua na tela de Impressoras, ele não é uma fila do spooler. É um nó PnP criado por descoberta de rede. Remova pelo caminho certo:
Get-PnpDevice | Where-Object FriendlyName -like "*NOME*" | Format-List FriendlyName,Status,InstanceId
pnputil /remove-device "<InstanceId>"
E lembre: remoção de dispositivo não conclui com o spooler parado. Suba o serviço antes.
5. Add-PrinterPort não aceita URL HTTP. Para IPP, o cmdlet retorna 0x8007007B, que é erro de sintaxe. Portas IPP são criadas pelo cliente de impressão via Internet, não por esse cmdlet. Para criar porta TCP/IP limpa:
Add-PrinterPort -Name "PRN_RAW" -PrinterHostAddress "192.168.1.50" -PortNumber 9100
Set-Printer -Name "Impressora Rede" -PortName "PRN_RAW"
6. A GUI mente. A tela de configuração de porta pode mostrar Raw, 9100 e SNMP desmarcado enquanto o objeto real está diferente. Confie no Get-PrinterPort, não na janela.
7. IPP por URL exige recurso opcional. Adicionar impressora digitando http://IP:631/ipp/print falha com "O Windows não pôde se conectar" se o cliente não estiver instalado:
Enable-WindowsOptionalFeature -Online -FeatureName Printing-Foundation-InternetPrinting-Client -All
Para validar se o serviço IPP está vivo antes de tentar:
Invoke-WebRequest -Uri "http://192.168.1.50:631/ipp/print" -Method Get -UseBasicParsing
Um retorno HTTP 400 é resposta correta, porque o endpoint IPP espera POST e não GET. Erro 400 significa serviço funcionando.
Salve como Diag-Impressora.ps1 e rode como administrador. Ele reúne, em uma passada, tudo que você precisa para decidir:
param([string]$IP = "192.168.1.50", [string]$Fila)
Write-Host "`n=== CONECTIVIDADE ===" -ForegroundColor Cyan
9100,631,515 | ForEach-Object {
$r = Test-NetConnection $IP -Port $_ -WarningAction SilentlyContinue
"{0,-6} {1}" -f $_, $(if($r.TcpTestSucceeded){"ABERTA"}else{"fechada"})
}
Write-Host "`n=== FILAS ===" -ForegroundColor Cyan
Get-Printer | Format-Table Name,DriverName,PortName,PrinterStatus -AutoSize
Write-Host "`n=== PORTAS ===" -ForegroundColor Cyan
Get-PrinterPort | Format-Table Name,PrinterHostAddress,PortNumber,Protocol,SNMPEnabled -AutoSize
Write-Host "`n=== JOBS PENDENTES ===" -ForegroundColor Cyan
Get-Printer | ForEach-Object {
Get-PrintJob -PrinterName $_.Name -ErrorAction SilentlyContinue
} | Format-Table PrinterName,Id,JobStatus,Size,SubmittedTime -AutoSize
Write-Host "`n=== CONEXOES COM A IMPRESSORA ===" -ForegroundColor Cyan
Get-NetTCPConnection -RemoteAddress $IP -ErrorAction SilentlyContinue |
Format-Table LocalPort,RemotePort,State,OwningProcess -AutoSize
Write-Host "`n=== ULTIMOS EVENTOS DE IMPRESSAO ===" -ForegroundColor Cyan
wevtutil sl Microsoft-Windows-PrintService/Operational /e:true 2>$null
Get-WinEvent -LogName Microsoft-Windows-PrintService/Operational -MaxEvents 15 -ErrorAction SilentlyContinue |
Format-Table TimeCreated,Id,Message -Wrap
Impressora multifuncional em rede Wi-Fi, estação Windows 11 fora do domínio, rede gerenciada por controladora corporativa.
Sintoma: driver instalava, fila aparecia como Pronta, jobs entravam e ficavam em "Imprimindo" indefinidamente.
Foram investigados e descartados, nesta ordem: SNMP na porta, suporte bidirecional, monitor de status do fabricante, portas duplicadas do instalador, filas WSD, isolamento de cliente na controladora Wi-Fi, corrupção do spooler, modo de impressão protegida do Windows e o próprio driver.
A causa real: o firewall do antivírus corporativo bloqueava o spoolsv.exe. A regra de impressão em rede estava corretamente em "Permitir", mas o adaptador Wi-Fi estava classificado num perfil de rede onde aquelas regras simplesmente não se aplicavam. Regra certa, perfil errado, efeito zero.
Depois disso, ainda faltava um detalhe. PDFs continuavam travando. O driver declarava papel Carta e a bandeja tinha A4. A impressora segurava o job esperando confirmação no painel.
Tempo total: cerca de três horas.
Com o roteiro deste artigo, o mesmo caso se resolve em quinze minutos. O teste de socket RAW eliminaria rede e impressora nos primeiros dois minutos, e o Get-NetTCPConnection mostrando zero conexão apontaria para bloqueio de segurança logo em seguida, antes de qualquer reinstalação de driver.
Impressão em rede falha em silêncio. Não há mensagem de erro útil, e o sintoma visível, "não imprime", é idêntico para sete causas completamente diferentes.
Por isso o diagnóstico não pode ser por tentativa e erro. Tem que ser por eliminação de camadas, de baixo para cima, com um teste isolado para cada uma.
Dois comandos carregam a maior parte do peso:
Get-NetTCPConnection, que separa "o spooler tentou e falhou" de "o spooler nem tentou".Responda essas duas perguntas primeiro e você elimina, em dois minutos, o que normalmente consome a tarde inteira.