Inicio Guías y tutoriales 🖥️ Manual: Generación de Archivos .RDP para RemoteApps en Windows Server 2022 con PowerShell

🖥️ Manual: Generación de Archivos .RDP para RemoteApps en Windows Server 2022 con PowerShell

Última actualización el Jan 27, 2026

En una implementación de Remote Desktop Services (RDS) en Windows Server 2022, es común publicar aplicaciones mediante RemoteApp

📌 Introducción

En una implementación de Remote Desktop Services (RDS) en Windows Server 2022, es común publicar aplicaciones mediante RemoteApp para que los usuarios puedan acceder a ellas de forma remota, sin necesidad de iniciar un escritorio completo. Aunque existen métodos automáticos como RD Web Access o el Web Feed de RemoteApp and Desktop Connections (RADC), hay escenarios donde:

  • RD Web Access no está disponible o falla.

  • Se requiere distribuir un .rdp individual para una aplicación específica.

  • Se necesita generar los .rdp de forma personalizada o automatizada sin intervención manual.

Este tutorial proporciona una forma sencilla y documentada de generar archivos .rdp para cada RemoteApp publicada en una colección, utilizando PowerShell y el módulo oficial de RDS (RemoteDesktop).

🧠 Requisitos previos

Antes de ejecutar los pasos, asegúrate de:

  • Tener instalada y configurada una implementación de RDS que incluya:

    • RD Connection Broker

    • RD Session Host

    • RD Licensing

  • Tener publicada al menos una aplicación RemoteApp en una colección.

  • Conocer:

    • El nombre de la colección (CollectionName)

    • El FQDN o hostname del Connection Broker


🔧 Objetivo

Generar archivos .rdp individuales para cada RemoteApp publicada en una colección RDS, que luego pueden distribuirse a usuarios para su ejecución directa sin necesidad de web feed ni portal web.

📝 Paso a paso: Generar archivos .rdp desde PowerShell

🔹 Paso 1: Abrir PowerShell como administrador

  1. En el servidor RDS, abre PowerShell como administrador.

  2. Asegúrate de tener importado el módulo de RDS (debería estar disponible por defecto en Windows Server 2022):

Import-Module RemoteDesktop

🔹 Paso 2: Definir los parámetros

Edita las siguientes variables según tu entorno:

# Nombre de la colección que contiene las RemoteApps 
$Collection = "MiColeccion" # FQDN del RD Connection Broker $Broker = "rdcb.midominio.local" 
# Carpeta donde se guardarán los archivos .rdp 
$OutputFolder = "C:\RemoteApps" 
# Crear la carpeta si no existe 
if (-not (Test-Path $OutputFolder)) { New-Item -ItemType Directory -Path $OutputFolder }

🔹 Paso 3: Obtener las RemoteApps publicadas

Usamos el cmdlet Get-RDRemoteApp para obtener las aplicaciones asociadas a la colección:

$apps = Get-RDRemoteApp -CollectionName $Collection -ConnectionBroker $Broker

Este comando devolverá un listado de todas las RemoteApps, incluyendo sus alias (identificadores internos), nombres visibles, y configuraciones asociadas.


🔹 Paso 4: Generar los archivos .rdp

Recorremos cada aplicación y generamos un archivo .rdp mínimo funcional:

foreach ($app in $apps) { 
    $alias = $app.Alias 
    $rdpPath = Join-Path $OutputFolder "$alias.rdp" 

# Contenido básico del archivo .rdp 
$rdpContent = @" 
screen mode id:i:2 
session bpp:i:32 
full address:s:$Broker 
remoteapplicationmode:i:1 
remoteapplicationname:s:$($app.DisplayName) remoteapplicationprogram:s:||$alias 
prompt for credentials:i:1 
authentication level:i:2 
"@ 

# Guardar el archivo 
$rdpContent | Out-File -FilePath $rdpPath -Encoding ASCII 
Write-Host "Archivo generado: $rdpPath" 
}

✅ Resultado

Al finalizar, tendrás un archivo .rdp por cada RemoteApp publicada, ubicado en la carpeta C:\RemoteApps. Cada archivo puede ser distribuido manualmente o por red a los usuarios finales.

Al ejecutar uno de estos archivos desde una estación cliente con acceso al servidor RDS, se abrirá directamente la aplicación remota.


💡 Información adicional

  • Formato remoteapplicationprogram:s:||AppAlias: el doble pipe || es requerido por el protocolo RDP para indicar que es una aplicación publicada, no una ruta ejecutable.

  • Broker vs Session Host: aunque técnicamente puedes usar la IP del Session Host en full address:s:, se recomienda usar el FQDN del Connection Broker para que RDS distribuya correctamente la carga si hay múltiples hosts.

  • Puedes agregar opciones adicionales al archivo .rdp, como redirección de impresoras, audio, portapapeles, etc.

  • Si algún usuario tiene problemas de certificados o advertencias de seguridad, asegúrate de que el servidor tenga un certificado SSL confiable asociado a RDS.


⚙️ Parámetros adicionales y cómo agregaros

A continuación tienes algunos parámetros frecuentes que podrías necesitar, con su descripción y un ejemplo de línea para incluirlos en tu bloque @""…""@ del script:

Parámetro RDP

Descripción

Ejemplo de línea

redirectprinters:i:

Redirige impresoras locales al servidor.

redirectprinters:i:1

redirectclipboard:i:

Habilita el portapapeles compartido.

redirectclipboard:i:1

redirectcomports:i:

Redirige puertos COM locales.

redirectcomports:i:0

redirectsmartcards:i:

Redirige lectores de smartcard.

redirectsmartcards:i:1

audiomode:i:

0 = Nada, 1 = Reproducir en cliente, 2 = Grabar.

audiomode:i:1

audiocapturemode:i:

Habilita captura de audio desde el cliente.

audiocapturemode:i:1

redirectposdevices:i:

Redirige dispositivos POS.

redirectposdevices:i:0

gatewayhostname:s:

FQDN de RD Gateway si lo utilizas.

gatewayhostname:s:gateway.midominio.local

gatewayusagemethod:i:

0 = No usar, 1 = Solo para RemoteApps, 2 = Solo para escritorios, 3 = Ambos.

gatewayusagemethod:i:1

workspace id:s:

Identificador del workspace (para algunos clientes).

workspace id:s:miWorkspace

loadbalanceinfo:s:

Información de balanceo de carga (usado internamente).

loadbalanceinfo:s:tswa-tcp:3351

authentication level:i:

0–3 nivel de seguridad (requerido por certificados).

authentication level:i:2

enablecredsspsupport:i:

0 = Deshabilitado, 1 = Habilitado (mejor soporte de credenciales).

enablecredsspsupport:i:1


🔧 Cómo incluirlos en tu script

Dentro del bucle foreach, modifica la variable $content para añadir tantas líneas como necesites. Por ejemplo, si quieres redirigir impresoras y portapapeles, y usar Gateway:

$content = @" screen mode id:i:2 session bpp:i:32 full address:s:$Broker remoteapplicationmode:i:1 remoteapplicationname:s:$display remoteapplicationprogram:s:||$alias prompt for credentials:i:1 authentication level:i:2 ; === Parámetros adicionales === redirectprinters:i:1 redirectclipboard:i:1 gatewayusagemethod:i:1 gatewayhostname:s:gateway.midominio.local enablecredsspsupport:i:1 "@

ℹ️ Tip:

  • Puedes comentar (líneas que empiecen con ;) para organizar tus parámetros.

  • Mantén el orden lógico (redirecciones antes de gateway, etc.).

  • Si no necesitas un parámetro, déjalo con :i:0 o elimínalo del bloque.

📦 Consideraciones finales

Este método es ideal para:

  • Escenarios sin acceso a RD Web Access

  • Ambientes con clientes livianos o sin soporte de RADC

  • Distribución controlada de aplicaciones específicas

Aunque no es tan escalable como el feed web de RemoteApp and Desktop Connections, ofrece una solución rápida, clara y reutilizable para exportar .rdp sin depender de interfaces gráficas ni portales web.