Configuración de discos de perfil de usuario (UPD) en Windows Server RDS
User Profile Disk (UPD) le permite almacenar el perfil de cada usuario de Remote Desktop Services (
%USERPROFILE%) en un archivo VHDX (disco virtual) separado. Dicho disco de perfil se conecta cuando el usuario inicia sesión en Windows y se desconectará cuando el usuario cierre sesión (con los cambios en el perfil guardados). Puede almacenar discos de perfil de usuario en un recurso compartido de archivos externo para que un usuario pueda acceder a su entorno personal (perfiles) cuando inicie sesión en cualquier servidor de la granja RDS. Los UPD son una alternativa al perfil móvil o las tecnologías de redirección de carpetas en las soluciones de terminal RDS.
En este artículo, describiremos cómo configurar y administrar discos de perfil de usuario en hosts con la función Servicios de escritorio remoto ejecutándose en Windows Server 2022, 2019, 2016 o 2012R2.
Habilitar discos de perfil de usuario en Windows Server RDS
Cree una carpeta de red compartida para almacenar los archivos de perfil UPD. Esta carpeta debe estar ubicada en un servidor de archivos fuera de la granja RDS. Para garantizar la alta disponibilidad de los perfiles UPD, le recomendamos que coloque la carpeta de red en un clúster. La ruta a dicho directorio se ve así en nuestro ejemplo:
\\fs01\RDSProfilesCree un grupo de seguridad en AD y agréguele todos los hosts de su colección de RDS. Puede crear un grupo usando la consola gráfica ADUC o usando cmdlets del módulo Active Directory para Windows PowerShell:
New-ADGroup munRDSHCollection1 -path "OU=Groups,OU=MUN,DC=a-d,DC=loc" -GroupScope Domain -PassThru -Verbose
Add-AdGroupMember -Identity munRDSHCollection1 -Members munrds1$, munrds2$, munrds3$Para agregar computadoras a un grupo AD, debe agregar $ al final del nombre de la computadora (esto es parte del atributo SAMAccountName).
Ahora otorgue permisos de Control total en la carpeta \fs01\RDSProfiles para el grupo munRDSHCollection1.
Puede habilitar los discos de perfil de usuario en la configuración de la colección de escritorio remoto cuando lo crea. Si la colección ya existe, búsquela en la consola del Administrador del servidor y seleccione Tareas-> Editar propiedades en la esquina superior derecha.
El modo Discos de perfil de usuario se puede habilitar y configurar en la configuración de recopilación de Servicios de escritorio remoto. Este modo se puede habilitar al crear una nueva colección, o puede volver a ella más tarde.
Luego vaya a la pestaña Discos de perfil de usuario. Marque la opción Habilitar discos de perfil de usuario, especifique la ruta a la carpeta compartida creada anteriormente (\fs01\RDSProfiles) y establezca un tamaño máximo de disco de perfil (que sea 7 GB). Guarde los cambios.
Es posible usar un espacio de nombres DFS para almacenar los perfiles UPD de un servidor DFS, pero esta configuración no se admite oficialmente. Los hosts DFS deben ejecutar Windows Server 2012 R2 o posterior. Si está utilizando versiones anteriores de Windows Server, recibirá un error:
Unable to enable user disks on rVHDShare. Could not create template VHD. Error Message: The network location "\\a-d.site\namespace\UserProfileDisk" is not available.
Puede verificar si UPD está habilitado para la colección RDS y obtener la ruta al directorio donde se almacenan los perfiles con el comando de PowerShell:
Get-RDSessionCollectionConfiguration -CollectionName munCorpApp1 -UserProfileDisk
Consejo. En una sola colección RDS, solo puede existir un archivo de perfil VHDX para un usuario. Si un usuario se conecta a los recursos de dos colecciones diferentes, se creará un disco de perfil independiente para cada uno de ellos.
De forma predeterminada, un disco de perfil de usuario contiene todo el contenido del perfil de usuario. Puede excluir ciertas carpetas de la lista de directorios sincronizados o especificar que solo se guarden ciertas carpetas. Por lo tanto, los cambios realizados en las carpetas de la lista de directorios excluidos durante la sesión de terminal del usuario no se guardarán en el disco VHDX de la carpeta compartida. Hay dos opciones disponibles:
Almacene todas las configuraciones y datos del usuario en el disco de perfil de usuario
Almacene solo las siguientes carpetas en el disco de perfil de usuario
Si usa RDS con UPD en Windows Server 2019/2016, con el tiempo puede experimentar una degradación del rendimiento del host RDS y una pantalla negra al iniciar sesión a través de RDP. Le recomendamos que habilite inmediatamente la opción de registro DeleteUserAppContainersOnLogoff en todos los hosts RDS.
New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1Discos de perfil de usuario en archivos VHDX en RDS
Después de cambiar la configuración de la colección y habilitar UPD, se creará un archivo llamado UVHD-template.vhdx en la carpeta UPD de destino.
Este archivo es la plantilla para el disco de perfil del usuario. Cuando un usuario inicia sesión en el servidor RDS por primera vez, esta plantilla se copia y se renombra como un archivo VHDX con el SID del usuario en el nombre. Para cada usuario, se crea un archivo VHDX independiente.
Sugerencia. Para obtener registros detallados sobre el uso de UPD para iniciar sesión en el servidor, consulte Visor de eventos -> Aplicación (con la fuente Servicio de perfil de usuario) y Registros de aplicaciones y servicios -> -Microsoft -> Windows -> Servicio de perfil de usuario -> Operacional.
Puede hacer coincidir el nombre del archivo UPD con el usuario propietario. Por ejemplo, puede convertir manualmente el SID en un nombre de cuenta de usuario mediante el cmdlet Get-ADUser:
Get-ADUser -Identity S-1-5-21-32549751-3956249758-2943215497-23733695O use el script ShowUPDFolderDetails.ps1, que muestra los nombres de los archivos UPD en una carpeta específica y sus propietarios:
$UPDShare = "\\fs01\RDSProfiles"
$UserProfiles = @()
$fc = new-object -com scripting.filesystemobject
$folder = $fc.getfolder($UPDShare)
"Username,SiD" >> export.csv
foreach ($i in $folder.files)
{
$sid = $i.Name
$sid = $sid.Substring(5,$sid.Length-10)
if ($sid -ne "template")
{
$securityidentifier = new-object security.principal.securityidentifier $sid
$user = ( $securityidentifier.translate( [security.principal.ntaccount] ) )
$UserProfile = New-Object PSObject -Property @{
UserName = $user
UPDFile=$i.Name
}
$UserProfiles += $UserProfile
}
}
$UserProfiles| select UserName, UPDFileDado que el perfil UPD es un archivo de disco virtual normal en formato VHDX, puede montarlo y ver su contenido desde cualquier host de Windows. Haz clic derecho en el archivo y selecciona Montar.
Como puede ver, el disco VHDX contiene un conjunto de carpetas y archivos de un perfil de usuario estándar.
En el Host de sesión de escritorio remoto, el perfil de usuario en el archivo VHDX está montado en C:\users\
El perfil UPD se monta en modo exclusivo. Esto significa que si un perfil de usuario está actualmente conectado a la sesión de RDS del usuario o montado manualmente, no podrá abrirlo con un error: el archivo no se pudo montar porque está en uso.
Los discos de perfil de usuario de un servidor RDS no pueden migrar entre versiones de Windows Server.
Los datos se escriben en el archivo VHDX en tiempo real. Esto significa que cuando los datos se copian en un perfil de usuario en un servidor RDS, el tamaño del archivo vhdx en el almacenamiento compartido aumenta inmediatamente.
Si la carpeta del perfil de usuario ya existe en Windows, la carpeta con un perfil anterior se renombra a
Un disco VHDX se monta cuando un usuario inicia sesión en un host VDI o RDS. Cada perfil UPD se monta en el directorio C:\Users. La lista de discos VHDX montados y puntos de montaje de los perfiles de usuario aparece en Administración de discos.
¿Cómo expandir/reducir el disco de perfil de usuario con PowerShell?
Puede expandir o reducir una imagen de disco VHDX virtual con el perfil UPD de un usuario específico usando el cmdlet de PowerShell Resize-VirtualDisk del módulo Hyper-V (las herramientas de administración de Hyper-V deben estar instaladas en una computadora:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-Clients):
Net use U: \\fs01\RDSProfiles
Resize-VHD -Path u:\UVHD-<SID>.vhdx -SizeBytes 40GB
Net use U: /deleteAhora necesita aumentar el tamaño del volumen desde la GUI de la consola de administración de discos (Acción -> Adjuntar VHD -> Extender volumen).
O use el siguiente script de PowerShell para extender automáticamente el archivo VHDX al tamaño máximo disponible:
<#
.Synopsis
This script extend size of VHDX file and resize the disk partition to Max
#>
Param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[alias("Path")]
[string]$vhdxFile,
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[alias("Size")]
[int64]$vhdxNewSize
)
begin{
try {
Mount-VHD -Path $vhdxFile -ErrorAction Stop
}
catch {
Write-Error "File $vhdxFile is busy"
Break
}
$vhdx = Get-VHD -Path $vhdxFile
if ($vhdx.Size -ge $vhdxNewSize){
Write-Warning "File $vhdxFile already have this size!"
$vhdx | Dismount-VHD
Break
}
}
process{
Dismount-VHD -Path $vhdxFile
Resize-VHD -Path $vhdxFile -SizeBytes $vhdxNewSize
$vhdxxpart = Mount-VHD -Path $vhdxFile -NoDriveLetter -Passthru | Get-Disk | Get-Partition
$partsize = $vhdxxpart | Get-PartitionSupportedSize
$vhdxxpart | Resize-Partition -Size $partsize.SizeMax
}
end{
Dismount-VHD -Path $vhdxFile
}Tenga en cuenta que no puede expandir el disco UPD de un usuario con una sesión de RDS activa.
Para reducir el tamaño del archivo UPD (suponiendo que eliminó los datos del usuario dentro del archivo vhdx y el tamaño de los datos en el disco es menor que el tamaño asignado), puede usar los comandos:
Resize-VHD \\fs01\RDSProfiles\UVHD-<SID>.vhdx -ToMinimumSizeY luego optimice la asignación de espacio en el archivo:
Optimize-vhd -path \\fs01\RDSProfiles\UVHD-<SID>.vhdx -mode fullProblema de perfil temporal al usar discos de perfil de usuario en RDS
Los perfiles de usuario temporales son uno de los problemas más comunes que puede encontrar al usar perfiles móviles o discos de perfil de usuario en RDS:
We can’t sign in to your account.
You’ve have been signed in with a temporary profile.
You can’t access your files, and files created in this profile will be deleted when you sign out. To fix this, sigh out and try signing later.A temporary profile is created for the user in this case:
Event ID 1511
Source: User Profile ServiceSe crea un perfil temporal para el usuario porque Windows no puede encontrar el perfil local. Los cambios que realice en este perfil se perderán cuando cierre la sesión.
La mayoría de las veces, esto se debe a que el archivo VHDX del usuario no se cerró en la sesión anterior. Utilice el siguiente PowerShell para ubicar el host RDSH en el que está montada la unidad VHDX del usuario (ejecute el script en el host con la función Agente de conexión a Escritorio remoto):
$UserToFind = "a.smith"
$User = $env:USERDOMAIN + '\' + $UserToFind
$RDCollection = Get-RDSessionCollection | where {$_.ResourceType -eq 'Remote Desktop'}
$RDHosts = Get-RDSessionHost -CollectionName $RDCollection.CollectionName | select SessionHost
$Array = Invoke-Command -ComputerName $RDHosts.SessionHost -ScriptBlock { Get-Disk | select Location,DiskNumber | where {$_.Location -notmatch "Integrated"} }
foreach ($VHD in $Array){
$DiskID = (Get-Item $VHD.Location).Name.Substring(5).Split(".")[0]
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($DiskID)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
if ($objUser.Value -eq $User){
$result = "$($objUser.Value) disk number $($VHD.DiskNumber) on $($VHD.PSComputername)"
}else{
$result = "$($User) - no active RSH sessions were found."
}
}
$resultPuede desmontar la unidad virtual UPD de forma remota con el comando:
Invoke-Command -ComputerName $VHD.PSComputername -ScriptBlock { Dismount-VHD -DiskNumber $VHD.DiskNumber }Para reducir los problemas con los perfiles temporales en RDS, es una buena idea configurar tiempos de espera para las sesiones de usuario de RDS. Configure las sesiones inactivas/desconectadas para que finalicen después de 2 a 4 horas. También puede habilitar la configuración de GPO que impide la creación de perfiles temporales: Configuración del equipo -> Plantillas administrativas -> Sistema -> Perfiles de usuario, habilite la opción No iniciar sesión de usuarios con perfiles temporales.
Esta configuración de política puede causar intermitentemente el "
The User Profile Service failed the sign-in, user profile cannot be loaded” si la carpeta de perfiles de usuario no está disponible.
El administrador debe eliminar manualmente el perfil de usuario temporal en el host RDS después de liberar el disco VHDX:
Elimine las subclaves con el SID del usuario bajo la siguiente clave de registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList. En este ejemplo, hay dos subclaves, una de las cuales termina en .bak (elimine ambas);
Elimine la carpeta de perfil TEMP del usuario del directorio C:\Users.
Consulte el artículo en el enlace para obtener más información sobre cómo eliminar perfiles de usuario en Windows.
La tecnología User Profile Disk, que se introdujo hace casi diez años (en Windows Server 2012), tiene varios inconvenientes. Actualmente, Microsoft recomienda usar los nuevos contenedores FSLogix para almacenar perfiles de usuario de RDS.
Por lo tanto, hemos analizado cómo configurar discos de perfil de usuario en un entorno RDS/VDI en un servidor Windows. Configurar UPD es mucho más fácil que configurar perfiles móviles o carpetas redirigidas. Los discos de perfil de usuario están vinculados a una colección RDS y no se pueden corromper cuando un perfil de usuario se comparte entre varios servidores de terminal (a diferencia de las carpetas de perfil de usuario estándar). Los discos de perfil de usuario se pueden almacenar en recursos compartidos SMB, CSV, SOFS, SAN o discos locales.















