Ao tentar publicar o Remote Desktop Web Client (HTML5) no Windows Server 2016/2019 você recebe “RD Web Access does not appear to be installed”? Este guia traz as causas reais, diagnóstico rápido e um passo a passo definitivo para corrigir o erro e concluir a publicação com segurança.
Visão geral do problema
Durante a publicação do cliente HTML5 do Remote Desktop (RDS), o cmdlet abaixo é frequentemente utilizado:
Publish-RDWebClientPackage -Type Production -Latest
Em cenários de ambiente já parcialmente configurado, o processo pode exibir um aviso indicando que já há um cliente instalado e, em seguida, falhar com o erro:
ERROR: RD Web Access does not appear to be installed on the system.
Esse erro não significa, necessariamente, que o papel “RD Web Access” esteja ausente; na prática ele indica que o módulo que faz a publicação não conseguiu encontrar os componentes esperados no IIS e/ou na implantação RDS a partir da sessão do PowerShell que você está usando.
Entendendo por que o erro acontece
O módulo RDWebClientManagement (usado pelos cmdlets Install‑RDWebClientPackage
e Publish‑RDWebClientPackage
) valida algumas condições antes de publicar o cliente:
- Verifica se o recurso do Windows RDS‑Web‑Access está instalado no servidor local.
- Procura a aplicação RDWeb/Pages sob o site Default Web Site no IIS.
- Confere se a sessão atual do PowerShell suporta as dependências do módulo (Windows PowerShell 5.1 e snap-ins legados).
- Em implantações RDS, verifica se o servidor está registrado na implantação como RDS‑WEB‑ACCESS.
Quando qualquer uma dessas checagens falha — por exemplo, se você está conectado via PowerShell 7, se o “Default Web Site” foi renomeado, se o papel foi instalado mas a aplicação IIS foi removida, ou se o servidor não está registrado na implantação — o módulo assume que o RD Web Access “não está instalado”.
Principais causas e como identificá-las
Categoria | Sintoma típico | Como confirmar | Correção resumida |
---|---|---|---|
Função não detectada | Erro ocorre mesmo com IIS instalado. | Get-WindowsFeature RDS-Web-Access retorna Installed?Test-Path IIS:\Sites\Default Web Site\RDWeb\Pages ? | Reinstalar o papel RD Web Access ou restaurar a aplicação RDWeb/Pages no “Default Web Site”. |
Sessão PowerShell inadequada | Execução a partir do PowerShell 7 falha na detecção. | $PSVersionTable.PSVersion.Major = 7+ | Usar Windows PowerShell 5.1 (ícone azul) como Administrador. |
Permissões / contexto | Comandos executados de outra máquina ou sem elevação. | Executou localmente no Web Access? Sessão elevada? | Executar no servidor que hospeda o RD Web Access, “Como Administrador”. |
Implantação RDS incompleta | Servidor tem o papel, mas a implantação não o conhece. | Get-RDServer -Role RDS-WEB-ACCESS não lista o servidor. | Registrar com Add-RDServer (ou usar o assistente do Server Manager). |
IIS alterado | “Default Web Site” renomeado, parado ou sem RDWeb. | Get-Website mostra “Default Web Site” Started?Há app “RDWeb” com “Pages”? | Restaurar nome/estado do site e recriar a aplicação RDWeb se necessário. |
Diagnóstico rápido (checklist executável)
Rode os comandos abaixo no servidor RD Web Access e como Administrador (Windows PowerShell 5.1):
# 1) Versão do PowerShell
$PSVersionTable.PSVersion
2) Papel RD Web Access
Get-WindowsFeature RDS-Web-Access | Format-Table DisplayName, InstallState
3) IIS: site e aplicação esperados
Import-Module WebAdministration
Get-Website | Where-Object Name -eq 'Default Web Site' | Format-Table Name, State, ID, PhysicalPath
Test-Path 'IIS:\Sites\Default Web Site\RDWeb\Pages'
4) Módulo e cmdlets
Get-Module -ListAvailable RDWebClientManagement | Select-Object Name, Version
Get-Command -Module RDWebClientManagement
5) Registro na implantação (opcional, se você usa RDMS)
Substitua pelo FQDN do Broker se necessário:
$BrokerFqdn = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\RDMS' -ErrorAction SilentlyContinue).ConnectionBrokerFqdn
Get-RDServer -ConnectionBroker $BrokerFqdn -ErrorAction SilentlyContinue | `
Where-Object {$_.Roles -contains 'RDS-WEB-ACCESS'} | Format-Table Server, Roles
6) Execução em contexto elevado?
whoami /groups | findstr /i administrators </code></pre>
<h2>Correção passo a passo recomendada</h2>
<ol>
<li>
<p><strong>Confirmar e, se preciso, instalar o papel RD Web Access</strong></p>
<pre><code class="language-powershell">Get-WindowsFeature RDS-Web-Access
Se não estiver Installed:
Install-WindowsFeature RDS-Web-Access -IncludeManagementTools -Restart
<p>Após a reinicialização (se ocorrer), verifique no <em>IIS Manager</em> se existe a aplicação <strong>RDWeb</strong> com os diretórios <em>Pages</em>, <em>Feed</em> e (após publicar) <em>webclient</em>.</p>
Abrir o Windows PowerShell 5.1 (ícone azul) como Administrador
Feche qualquer janela do PowerShell 7. Para conferir:
$PSVersionTable.PSVersion # deve mostrar 5.1.x
Garantir TLS 1.2 para baixar módulos (recomendado antes de usar a PowerShell Gallery):
[Net.ServicePointManager]::SecurityProtocol = `
[Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
Instalar/atualizar o módulo e o pacote do cliente web
Install-Module RDWebClientManagement -Force
Install-RDWebClientPackage # obtém o pacote mais recente
Se o servidor não tiver acesso à Internet, veja a seção Instalação offline mais abaixo.
Registrar o servidor na implantação RDS (se aplicável)
Se você gerencia a implantação com o RDMS/Server Manager, certifique-se de que este host está registrado como Web Access:
$BrokerFqdn = '<broker.seu-dominio>' # ajuste se necessário
Add-RDServer -Server $env:COMPUTERNAME -Role 'RDS-WEB-ACCESS' -ConnectionBroker $BrokerFqdn
Caso você não utilize o RDMS (cenários mais simples), este passo pode ser dispensado.
Importar o certificado do Broker (se ainda não foi importado)
Import-RDWebClientBrokerCert 'C:\temp\Broker.cer'
Use o certificado público (não a chave privada) do Connection Broker que apresenta o FQDN público resolvido pelos clientes.
Publicar o cliente web
Publish-RDWebClientPackage -Type Production -Latest
Em laboratório:
Publish-RDWebClientPackage -Type Test -Latest
Se tudo estiver correto, o diretório virtual webclient
será criado sob RDWeb
e o cliente ficará acessível via HTTPS.
Correções específicas por causa raiz
Aplicação RDWeb ausente, renomeada ou em site diferente
O módulo espera a aplicação RDWeb dentro do Default Web Site (com esse nome exato). Se você renomeou o site padrão ou moveu o RDWeb para outro site, a detecção falha. Opções:
- Preferível: restaurar o nome Default Web Site e a aplicação RDWeb com o diretório Pages.
- Reinstalar o papel RD Web Access: isso recompõe os componentes IIS corretamente.
Verificações e reparos rápidos via PowerShell:
Import-Module WebAdministration
Conferir se há RDWeb/Pages no Default Web Site
if (-not (Test-Path 'IIS:\Sites\Default Web Site\RDWeb\Pages')) {
Write-Warning 'RDWeb/Pages não encontrado; reinstale o papel RDS-Web-Access ou recrie a aplicação RDWeb.'
}
Garantir que o Default Web Site está iniciado
(Get-Website -Name 'Default Web Site').State -ne 'Started' -and `
(Start-Website -Name 'Default Web Site') </code></pre>
<h3>PowerShell 7 ou sessão não suportada</h3>
<p>Os cmdlets do <strong>RDWebClientManagement</strong> ainda dependem de APIs e <em>snap-ins</em> não suportados no PowerShell 7+. Sempre use <strong>Windows PowerShell 5.1</strong> para instalar/publicar o cliente web. Dica para abrir rapidamente a 5.1 elevada a partir do PowerShell 7:</p>
<pre><code class="language-powershell">Start-Process powershell.exe -Verb RunAs -ArgumentList '-NoLogo'
</code></pre>
<h3>Contexto e permissões</h3>
<p>Execute todos os comandos <strong>no servidor que hospeda o RD Web Access</strong> e abra a janela “Como Administrador”. Evite publicar a partir de outra máquina da fazenda — o módulo não encontrará o contexto IIS correto.</p>
<h3>Implantação RDS não reconhece o Web Access</h3>
<p>Se você usa o RDMS (Server Manager > Remote Desktop Services), o servidor precisa constar como <em>RDS‑WEB‑ACCESS</em> na implantação. Registre-o:</p>
<pre><code class="language-powershell">$BrokerFqdn = '<broker.seu-dominio>'
Add-RDServer -Server $env:COMPUTERNAME -Role 'RDS-WEB-ACCESS' -ConnectionBroker $BrokerFqdn
</code></pre>
<p>Depois, feche e reabra a sessão do PowerShell e tente publicar novamente.</p>
<h2>Instalação e publicação em servidores sem Internet</h2>
<p>Você pode operar totalmente <em>offline</em> (útil para DMZ e ambientes restritos):</p>
<ol>
<li><strong>Em um PC com Internet</strong>, baixe o pacote do cliente e o módulo:
<pre><code class="language-powershell"># PC com Internet
Save-Module -Name RDWebClientManagement -Path 'C:\Pacotes'
Save-RDWebClientPackage -Type Production -Latest -Path 'C:\Pacotes\RDWebClient'
Copie o conteúdo para o servidor RD Web Access (por exemplo, para C:\Pacotes
).
No servidor, instale o módulo e o pacote:
# Instalar o módulo manualmente
Copy-Item 'C:\Pacotes\RDWebClientManagement\*' `
-Destination 'C:\Program Files\WindowsPowerShell\Modules\RDWebClientManagement' `
-Recurse -Force
Import-Module RDWebClientManagement -Force
Instalar a partir do pacote salvo
Install-RDWebClientPackage -Source 'C:\Pacotes\RDWebClient'
Publish-RDWebClientPackage -Type Production -Latest
Validação pós-publicação
- Verifique a URL:
https://<FQDN-do-servidor>/RDWeb/webclient/index.html
- Teste também via PowerShell:
Invoke-WebRequest -UseBasicParsing ` -Uri 'https://<FQDN-do-servidor>/RDWeb/webclient/' | ` Select-Object StatusCode, Headers
- No IIS, confirme que o diretório virtual
webclient
foi criado dentro deRDWeb
.
Boas práticas e dicas que evitam retrabalho
- Padronize o nome do site IIS: mantenha “Default Web Site” sem renomear.
- Certificados válidos: use certificados confiáveis e correspondentes ao FQDN público do Broker e do Gateway.
- RD Gateway: o cliente web utiliza transporte HTTPS via Gateway; garanta ao menos um RD Gateway funcional na implantação.
- Ambientes com N+1 Web Access: publique o cliente em todos os servidores do pool ou sincronize os arquivos do
webclient
entre eles (ex.:robocopy
com /MIR durante janelas de manutenção). - Logs e auditoria: antes de publicar, execute
Start-Transcript
para registrar a sessão e facilitar o suporte. - Galeria do PowerShell: se aparecer erro de download, habilite TLS 1.2 (comando mostrado acima) e tente novamente.
Erros relacionados e como resolver
Mensagem/Comportamento | Provável causa | Solução |
---|---|---|
Value cannot be null. Parameter name: path | Aplicação RDWeb/Pages não encontrada ou site IIS parado. | Restaurar RDWeb/Pages e iniciar o “Default Web Site”. |
Falha ao baixar o pacote da Gallery | TLS antigo, proxy corporativo, políticas de saída. | Forçar TLS 1.2, configurar proxy no PowerShell, usar instalação offline. |
Publicação conclui, mas a URL retorna 404 | vDir webclient ausente ou mapeado para caminho incorreto. | Republique, verifique mapeamento físico do vDir e permissões do pool de aplicativos. |
Clientes não conseguem abrir sessões via navegador | Gateway ausente ou certificado inválido. | Configurar RD Gateway e associar certificados confiáveis. |
Playbook de correção “em 10 minutos”
- Logar no servidor RD Web Access e abrir Windows PowerShell 5.1 “Como Administrador”.
Get-WindowsFeature RDS-Web-Access
→ Instalar se necessário.Import-Module WebAdministration
→ confirmarDefault Web Site
ativo eRDWeb/Pages
presente.- Forçar TLS 1.2;
Install-Module RDWebClientManagement -Force
. Install-RDWebClientPackage
→Import-RDWebClientBrokerCert
.Publish-RDWebClientPackage -Type Production -Latest
.- Acessar
/RDWeb/webclient/
e validar.
FAQ
Preciso publicar a partir do Connection Broker?
Não. Publique no servidor que hospeda o RD Web Access. Se sua implantação usa RDMS, apenas garanta que o Web Access esteja registrado na implantação.
Posso usar PowerShell 7?
Não para a publicação. Utilize Windows PowerShell 5.1.
O erro aparece mesmo com o papel instalado. O que mais devo verificar?
Verifique se o “Default Web Site” existe com esse nome, está Started, e contém a aplicação RDWeb com o diretório Pages. Se não existir, reinstale o papel ou repare o IIS.
Como atualizar o cliente web no futuro?
Repita: PowerShell 5.1 → Install-RDWebClientPackage
→ Publish-RDWebClientPackage -Type Production -Latest
. A publicação substitui a versão anterior mantendo a configuração.
Apêndice: comandos úteis do IIS e RDS
# Listar sites e estados
Import-Module WebAdministration
Get-Website | Format-Table Name, State, Bindings
Ver RDWeb e subpastas
Get-WebApplication -Site 'Default Web Site' -Name 'RDWeb' -ErrorAction SilentlyContinue
Test-Path 'IIS:\Sites\Default Web Site\RDWeb\Pages'
Corrigir site parado (se aplicável)
Start-Website 'Default Web Site'
Descobrir o Broker (quando RDMS foi usado)
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\RDMS' -ErrorAction SilentlyContinue).ConnectionBrokerFqdn
Registrar Web Access na implantação (opcional)
$BrokerFqdn = ''
Add-RDServer -Server $env:COMPUTERNAME -Role 'RDS-WEB-ACCESS' -ConnectionBroker $BrokerFqdn
Conclusão
“RD Web Access does not appear to be installed” é, na prática, um erro de detecção do módulo de publicação. Ao garantir o trio papel instalado + IIS padrão intacto (Default Web Site > RDWeb/Pages) + sessão PowerShell 5.1 — e, quando aplicável, registro do servidor na implantação — a publicação do cliente HTML5 volta a funcionar e o portal fica disponível em /RDWeb/webclient/
para seus utilizadores.
Checklist final
- RDS‑Web‑Access Installed no servidor correto.
- Windows PowerShell 5.1, janela elevada.
- IIS com “Default Web Site” iniciado e aplicação “RDWeb/Pages”.
- Módulo RDWebClientManagement instalado/atualizado.
- Servidor registrado como RDS‑WEB‑ACCESS (se usar RDMS).
- Certificado do Broker importado e válido.
Publish-RDWebClientPackage -Type Production -Latest
concluído e URL validada.