Erro “RD Web Access does not appear to be installed” ao publicar o Remote Desktop Web Client (HTML5) no Windows Server 2016/2019: causas, diagnóstico e solução

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.

Índice

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

CategoriaSintoma típicoComo confirmarCorreção resumida
Função não detectadaErro 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 inadequadaExecuçã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 / contextoComandos 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 incompletaServidor 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 = '&lt;broker.seu-dominio&gt;'  # 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&nbsp;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&nbsp;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 &gt; 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 = '&lt;broker.seu-dominio&gt;'
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 de RDWeb.

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/ComportamentoProvável causaSolução
Value cannot be null. Parameter name: pathAplicaçã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 GalleryTLS 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 404vDir 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 navegadorGateway ausente ou certificado inválido.Configurar RD Gateway e associar certificados confiáveis.

Playbook de correção “em 10 minutos”

  1. Logar no servidor RD Web Access e abrir Windows PowerShell 5.1 “Como Administrador”.
  2. Get-WindowsFeature RDS-Web-Access → Instalar se necessário.
  3. Import-Module WebAdministration → confirmar Default Web Site ativo e RDWeb/Pages presente.
  4. Forçar TLS 1.2; Install-Module RDWebClientManagement -Force.
  5. Install-RDWebClientPackageImport-RDWebClientBrokerCert.
  6. Publish-RDWebClientPackage -Type Production -Latest.
  7. 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-RDWebClientPackagePublish-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.
Índice