Cómo exportar la lista completa de aplicaciones RD Web y usuarios autorizados en Windows Server

¿Necesitas inventariar rápidamente qué aplicaciones Remote Desktop Web Access (RD Web) están publicadas en tu granja de Remote Desktop Services y qué usuarios o grupos pueden lanzarlas? A continuación tienes una guía detallada —paso a paso y con ejemplos de PowerShell— para generar un informe exportable en CSV/HTML sin emplear herramientas de terceros.

Índice

Por qué no existe un botón “Exportar” en RD Web

RD Web está pensado como portal de publicación, no como herramienta de auditoría. Su interfaz en IIS muestra las RemoteApps disponibles para cada usuario, pero carece de una opción nativa para descargar el catálogo completo con sus permisos. Para cubrir ese hueco podemos combinar:

  • Funcionalidades de Remote Desktop Services (contabilidad y monitorización).
  • Cmdlets de PowerShell RDS y Active Directory.
  • Hojas de cálculo o BI (Excel, Power BI) para el análisis final.

Procedimiento principal con el asistente gráfico

PasoAcciónResultado
1Comprender la limitación: RD Web no tiene un botón “Export list”.No es posible obtener el informe desde la interfaz web.
2Habilitar el registro de contabilidad en el servidor de Acceso Remoto.
Server Manager ▶ Remote Access ▶ Dashboard ▶ Enable Accounting
El sistema empieza a almacenar detalles de cada sesión (usuario, recurso, tiempo).
3Generar un informe de uso.
Monitoring ▶ Generate Report (Usage). Elige el rango de fechas.
Se crea un archivo CSV o HTML con las columnas UserName, RemoteApp, StartTime, Duration, etc.
4Abrir el archivo en Excel o Power BI para filtrar las columnas.
Ej.: mantener UserName y RemoteApp.
Obtienes la tabla final con la relación de usuarios y aplicaciones.

Métodos complementarios para profundizar

PowerShell sobre el Connection Broker

Si tu objetivo es saber quién tiene permiso aunque nunca haya iniciado sesión, PowerShell es la vía más directa. Ejecuta lo siguiente en el Connection Broker (con privilegios de administrador):

# Exportar RemoteApps y miembros de los grupos asignados
Get-RDRemoteApp | ForEach-Object {
    $app = $_
    $app.UserGroups | ForEach-Object {
        Get-ADGroupMember $_ -Recursive | Select-Object `
            @{Name='RemoteApp';Expression={$app.Alias}}, `
            @{Name='User';Expression={$_.SamAccountName}}
    }
} | Export-Csv "RDWeb-Apps-Con-Usuarios.csv" -NoTypeInformation

Qué obtienes: un CSV con dos columnas (RemoteApp, User) que puedes pivotar en segundos.

Registro NPS + RD Gateway

Cuando los clientes acceden a través de un RD Gateway, cada conexión se registra en Network Policy Server (NPS). Habilita la contabilidad en NPS y:

  1. Configura el formato IAS para generar ficheros CSV continuos.
  2. Analiza esos logs con Log Parser Studio o Power BI usando consultas SQL‐like.

Esta opción muestra quién se conectó y a qué recurso, ideal para auditorías de seguridad.

Auditoría de grupos de Active Directory

En entornos donde todas las RemoteApps están protegidas por grupos de AD, a veces basta con ejecutar periódicamente:

Get-RDRemoteApp | 
    Select-Object Alias, DisplayName, UserGroups |
    Export-Csv "RDWeb-RemoteApps-Grupos.csv" -NoTypeInformation

Luego, con Get-ADGroupMember, detallas los integrantes de cada grupo.

Ventajas de basarse en los informes internos

VentajaExplicación
No requiere software de tercerosTodo se logra con componentes nativos de Windows Server.
Aporta trazabilidad históricaVes no solo los permisos, sino también el uso real y la frecuencia.
Formato exportableCSV / HTML facilitan filtros, fórmulas y reportes personalizados.
EscalableFunciona igual con un solo servidor o con una granja RDS completa.

Automatización recomendada

Tarea programada para generar el CSV semanal

  1. Crea un script .ps1 que ejecute el bloque PowerShell anterior y guarde el archivo en una carpeta de red.
  2. Abre Task Scheduler ▶ Create Task.
  3. Configura el disparador Weekly, por ejemplo, cada lunes a las 02:00.
  4. En la pestaña Actions, selecciona Start a program ▶ powershell.exe con argumentos:
    -NoProfile -ExecutionPolicy Bypass -File "\\Servidor\Scripts\Export-RDWeb.ps1"
  5. Activa Run whether user is logged on or not y marca Run with highest privileges.

Con ello dispondrás de un histórico de snapshots para detectar accesos imprevistos o evaluar tendencias de adopción.

Envío automático por correo

Agrega al final del script:

$smtpFrom = "rds-reports@contoso.com"
$smtpTo   = "it-auditoria@contoso.com"
$subject  = "Informe RDWeb - $(Get-Date -Format 'yyyy-MM-dd')"
$smtpSrv  = "smtp.contoso.com"

Send-MailMessage -From \$smtpFrom -To \$smtpTo -Subject \$subject `    -Body "Adjunto CSV con RemoteApps y usuarios autorizados."`
-Attachments "C:\Informes\RDWeb-Apps-Con-Usuarios.csv" \`
-SmtpServer \$smtpSrv 

Buenas prácticas para informes de seguridad

  • Separación de funciones: el equipo de seguridad debería recibir copia pero no modificar los scripts.
  • Control de versiones: almacena los scripts en Git con comentarios claros.
  • Protección de credenciales: utiliza Windows Credential Manager o certificados para credenciales automatizadas.
  • Retención de datos: define políticas que cumplan con GDPR/LOPD o marcos equivalentes.

Problemas comunes y soluciones rápidas

ProblemaCausa habitualSolución
El cmdlet Get-RDRemoteApp no existeNo ejecutas en el Connection Broker o falta el rol RDS Tools.Instala la herramienta “Remote Desktop Services” en Windows Admin Center o agrega el rol “Remote Desktop Services Tools”.
Error al acceder a Active DirectoryEl equipo no confía en el dominio.Comprueba DNS y la pertenencia al dominio. Usa Get-ADDomain para validar.
CSV vacío al filtrar por fechasEl registro de contabilidad se habilitó recientemente.Amplía el rango o espera 24 h a que se registren conexiones.
PowerShell no permite la ejecuciónPolítica “Restricted”.Ejecuta Set-ExecutionPolicy RemoteSigned (requiere privilegios).

Preguntas frecuentes

¿Puedo ejecutar estos scripts desde un equipo de administración remoto?

Sí, siempre que tengas instaladas las RSAT de RDS y conexión WinRM permitida hacia el Connection Broker. Usa Enter-PSSession o Invoke-Command para evitar copiar archivos.

¿Cómo incluyo máquinas virtuales con “VDI” en lugar de RemoteApps?

VDI publica escritorios completos; los cmdlets son similares (Get-RDSessionCollection). El principio de exportar permisos ‑vía contabilidad o grupos‑ no cambia.

¿Es válida esta solución en Windows Server 2022?

Sí, los cmdlets Get-RDRemoteApp y las opciones de contabilidad se mantienen desde Windows Server 2012 R2 hasta 2022.

Paso final: consolidar y compartir el inventario

Una vez que tienes el CSV:

  • Excel: usa una tabla dinámica para obtener por aplicación el número de usuarios únicos.
  • Power BI Desktop: importa el CSV y crea un panel con filtros por fecha, departamento o grupo de seguridad.
  • SharePoint o Teams: publica el informe para que otras áreas (auditoría, cumplimiento) puedan revisarlo sin acceso a los servidores.

Resumen de la solución

Exportar la lista de aplicaciones RD Web y sus usuarios autorizados es posible y relativamente sencillo:

  1. Activa la contabilidad o usa cmdlets de RDS para listar RemoteApps.
  2. Une estos datos con los miembros de los grupos de AD.
  3. Automatiza la exportación y conserva un histórico.
  4. Presenta la información con herramientas de análisis que ya posees.

Así podrás auditar accesos, planificar licencias y cumplir requisitos regulatorios sin depender de software externo.

Índice