¿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.
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
Paso | Acción | Resultado |
---|---|---|
1 | Comprender la limitación: RD Web no tiene un botón “Export list”. | No es posible obtener el informe desde la interfaz web. |
2 | Habilitar 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). |
3 | Generar 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. |
4 | Abrir 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:
- Configura el formato IAS para generar ficheros CSV continuos.
- 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
Ventaja | Explicación |
---|---|
No requiere software de terceros | Todo se logra con componentes nativos de Windows Server. |
Aporta trazabilidad histórica | Ves no solo los permisos, sino también el uso real y la frecuencia. |
Formato exportable | CSV / HTML facilitan filtros, fórmulas y reportes personalizados. |
Escalable | Funciona igual con un solo servidor o con una granja RDS completa. |
Automatización recomendada
Tarea programada para generar el CSV semanal
- Crea un script .ps1 que ejecute el bloque PowerShell anterior y guarde el archivo en una carpeta de red.
- Abre Task Scheduler ▶ Create Task.
- Configura el disparador Weekly, por ejemplo, cada lunes a las 02:00.
- En la pestaña Actions, selecciona Start a program ▶
powershell.exe
con argumentos:-NoProfile -ExecutionPolicy Bypass -File "\\Servidor\Scripts\Export-RDWeb.ps1"
- 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
Problema | Causa habitual | Solución |
---|---|---|
El cmdlet Get-RDRemoteApp no existe | No 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 Directory | El 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 fechas | El registro de contabilidad se habilitó recientemente. | Amplía el rango o espera 24 h a que se registren conexiones. |
PowerShell no permite la ejecución | Polí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:
- Activa la contabilidad o usa cmdlets de RDS para listar RemoteApps.
- Une estos datos con los miembros de los grupos de AD.
- Automatiza la exportación y conserva un histórico.
- 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.