# User roaming por rol en Azure (opcional) > **Estado predeterminado:** desactivado. Todas las cuentas `AL`, `AD`, `DO` y > cualquier otra cuenta de dominio usan un perfil local normal bajo `C:\Users`. > Escritorio y Documentos permanecen en el disco del equipo; no se mapean shares > de perfiles ni se monta un contenedor FSLogix. La implementación se conserva para un posible piloto futuro, pero no forma parte del enrolamiento normal. Activarla requiere dos decisiones explícitas: desplegar la infraestructura con `-DeployUserRoaming $true -AcknowledgeUserRoamingRisks` y después ejecutar el configurador con `-AcknowledgeUserRoamingRisks`. ## Diseño opcional Cuando se habilita expresamente, el comportamiento es: | Rol | Datos conservados | Implementación | | --- | --- | --- | | `AL` | `Desktop` y `Documents` | Redirección de carpetas a Azure Files; el resto del perfil sigue local. | | `AD` / `DO` | Perfil completo | FSLogix VHDX: montaje directo con endpoint privado o Cloud Cache con endpoint público. | Linux conserva su directorio personal nativo y no monta un perfil de Windows. `infra/azure/main.bicep` puede crear una cuenta `StorageV2` dedicada con shares `profiles` y `redirected`, soft delete de 14 días, private endpoint y zona `privatelink.file.`. Su valor predeterminado `deployUserRoaming=false` evita crear estos recursos. La cuenta de staging usada para paquetes no se reutiliza automáticamente como almacenamiento de perfiles. Los clientes de un endpoint privado requieren P2S u otra ruta privada a la VNet. Un endpoint público exige resolución DNS, salida TCP 445 y reglas de red de Storage limitadas a redes institucionales. El modo `Auto` selecciona `Direct` para endpoint privado y `CloudCache` para uno público. `CCDLocations` y `VHDLocations` son mutuamente excluyentes. Azure Files se integra con AD DS mediante Kerberos AES-256. Las ACL de la raíz usan `CREATOR OWNER` para aislar los directorios de usuarios. La clave de la cuenta se usa sólo en memoria durante la creación de ACL y no se guarda en GPO. ## Riesgos que deben aceptarse El piloto de septiembre de 2026 confirmó que esta función puede aumentar de forma considerable el tiempo de inicio y cierre de sesión. Antes de activarla se deben aceptar y probar, como mínimo, estos escenarios: - latencia o indisponibilidad de Azure Files que mantiene `Welcome` o `Sign out` durante varios minutos; - VHDX remoto en estado abierto, pendiente de eliminación o de creación, con fallos como `0x80070050`; - caché o proxy local obsoleto de Cloud Cache y fallos de registro como `0xE000000B`; - recuperación que puede exigir detener por fuerza los servicios FSLogix y reiniciar el equipo; - datos todavía no sincronizados, caché local insuficiente o divergencia si se fuerza una recuperación; - dependencia de DNS, Kerberos, TCP 445, la red y el servicio de Storage tanto para registrar como para desmontar el perfil. No se debe desplegar a todos los usuarios sin un piloto de inicio, cierre, desconexión, cuota, restauración y pérdida temporal del proveedor. Cloud Cache reduce I/O WAN síncrono, pero no elimina la dependencia al cerrar sesión. ## 1. Desplegar la infraestructura opcional El despliegue normal no incluye user roaming. Para crear deliberadamente sus recursos: ```powershell $azure = .\scripts\Deploy-SguAzureInfrastructure.ps1 ` -SubscriptionId '00000000-0000-0000-0000-000000000000' ` -ResourceGroupName 'rg-sgu-lab' ` -Location 'centralus' ` -AdministratorUsername 'azureadmin' ` -P2sRootCertificatePath $p2s.RootCertificatePath ` -DeployUserRoaming $true ` -AcknowledgeUserRoamingRisks ``` Puede definirse un nombre con `-UserRoamingStorageAccountName`. Si no se pasan los dos parámetros de aceptación, la infraestructura de perfiles no se crea. ## 2. Unir Azure Files al dominio y publicar las GPO Primero termine `Initialize-SguDomainController.ps1`. Después, en Windows PowerShell 5.1 elevado dentro del DC, instale Azure PowerShell y el módulo oficial [AzFilesHybrid](https://github.com/Azure-Samples/azure-files-samples/releases), y ejecute: ```powershell $parameters = @{ SubscriptionId = '00000000-0000-0000-0000-000000000000' ResourceGroupName = 'rg-sgu-lab' StorageAccountName = '' FsLogixProfilesShareName = 'profiles' RedirectedFoldersShareName = 'redirected' AzFilesHybridModulePath = 'C:\Admin\AzFilesHybrid' UseDeviceAuthentication = $true AcknowledgeUserRoamingRisks = $true } .\payload\scripts\Enable-SguAzureUserRoaming.ps1 @parameters ``` Para una cuenta autorizada con endpoint público: ```powershell $parameters.EndpointAccess = 'Public' $parameters.StaffProfileStorageMode = 'Auto' .\payload\scripts\Enable-SguAzureUserRoaming.ps1 @parameters ``` El script crea las GPO `SGU - AL redirected folders` y `SGU - AD-DO FSLogix profiles`, y vuelve a habilitar el enlace de instalación de FSLogix si ya existe. No borra perfiles locales existentes salvo que se proporcione deliberadamente `-DeleteExistingStaffLocalProfiles`. ## 3. Instalar FSLogix sólo para un piloto FSLogix no forma parte de Windows. Valide su licencia y descargue `FSLogixAppsSetup.exe` directamente de Microsoft. Puede pasarse como quinto argumento al enrolamiento Azure o publicarse con: ```powershell .\payload\scripts\Publish-SguFsLogixClientDeployment.ps1 ``` El publicador valida firma y SHA-256 y crea `SGU - FSLogix client deployment`. El rollback descrito abajo deshabilita su enlace para que no se instale en más equipos. ## 4. Desactivar y volver a perfiles locales Ejecute desde Windows PowerShell 5.1 elevado en el controlador de dominio: ```powershell .\payload\scripts\Disable-SguAzureUserRoaming.ps1 ``` Es idempotente y realiza lo siguiente: - fija `Profiles\Enabled=0` y `ODFC\Enabled=0`; - deshabilita `frxsvc` y `frxccds` mediante GPO; - elimina `CCDLocations`, `VHDLocations` y valores de contenedor específicos de los grupos `SGU-Administrativos` y `SGU-Docentes`; - restaura Escritorio y Documentos de alumnos a `%USERPROFILE%\Desktop` y `%USERPROFILE%\Documents`; - deshabilita el enlace de despliegue del cliente FSLogix; - limpia `profilePath`, `homeDirectory` y `homeDrive` de los usuarios de las OU SGU, salvo que se use `-PreserveLegacyUserMappings`. Después aplique `gpupdate /force` y reinicie cada Windows administrado antes de probar un nuevo inicio de sesión. El primer ingreso vuelve a crear o reutilizar un perfil local. El script no borra automáticamente VHDX, shares de Azure ni cachés existentes: conservarlos permite recuperación y evita destrucción de datos. Su eliminación debe ser una decisión separada y posterior a la validación. ## 5. Validar un piloto futuro Después de `gpupdate /force` y reiniciar un cliente de prueba: ```powershell Resolve-DnsName "$($azure.UserRoamingStorageAccountName).file.core.windows.net" Test-NetConnection "$($azure.UserRoamingStorageAccountName).file.core.windows.net" -Port 445 Get-Service frxsvc Get-ItemProperty 'HKLM:\SOFTWARE\FSLogix\Profiles\ObjectSpecific\' & 'C:\Program Files\FSLogix\Apps\frx.exe' list-redirects ``` Revise `%ProgramData%\FSLogix\Logs\Profile`, pruebe inicio y cierre varias veces, simule indisponibilidad y valide restauración. No active el borrado de perfiles locales ni amplíe el alcance antes de superar esas pruebas. Referencias de Microsoft: - [Autenticación AD DS para Azure Files](https://learn.microsoft.com/azure/storage/files/storage-files-identity-ad-ds-enable) - [Permisos SMB para FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-storage-permissions) - [Contenedores de perfil FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-profile-containers) - [Configuración ObjectSpecific de FSLogix](https://learn.microsoft.com/fslogix/how-to-configure-object-specific-settings) - [Cloud Cache de FSLogix](https://learn.microsoft.com/fslogix/concepts-fslogix-cloud-cache) - [Redirección de carpetas](https://learn.microsoft.com/windows-server/storage/folder-redirection/deploy-folder-redirection)