当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

作者:精品下载站 日期:2024-12-15 00:46:38 浏览:16 分类:玩电脑

在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)


用户配置文件磁盘 (UPD) 允许您存储每个远程桌面服务用户的配置文件 (

%USERPROFILE%

)在单独的VHDX(虚拟磁盘)文件中。这样的配置文件磁盘在用户登录到 Windows 时连接,并在用户注销时断开连接(保存对配置文件的更改)。您可以将用户配置文件磁盘存储在外部文件共享上,以便用户在登录 RDS 场中的任何服务器时可以访问其个人环境(配置文件)。 UPD 是 RDS 终端解决方案中漫游配置文件或文件夹重定向技术的替代方案。

在本文中,我们将介绍如何在 Windows Server 2022、2019、2016 或 2012R2 上运行的具有远程桌面服务角色的主机上配置和管理用户配置文件磁盘。

在 Windows Server RDS 上启用用户配置文件磁盘

创建共享网络文件夹来存储 UPD 配置文件。此文件夹必须位于 RDS 场外部的文件服务器上。为了确保 UPD 配置文件的高可用性,我们建议您将网络文件夹放置在集群上。在我们的示例中,此类目录的路径如下所示:

\fs01\RDSProfiles

在 AD 中创建一个安全组,并将 RDS 集合中的所有主机添加到其中。您可以使用 ADUC 图形控制台或使用 Active Directory for Windows PowerShell 模块中的 cmdlet 创建组:

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$

要将计算机添加到 AD 组,您必须将 $ 添加到计算机名称的末尾(这是 SAMAccountName 属性的一部分)。

现在,授予 munRDSHCollection1 组对 \fs01\RDSProfiles 文件夹的完全控制权限。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

您可以在创建远程桌面集合设置时启用用户配置文件磁盘。如果该集合已存在,请在服务器管理器控制台中找到它,然后选择右上角的任务->编辑属性

可以在远程桌面服务的收集设置中启用和配置用户配置文件磁盘模式。可以在创建新集合时启用此模式,也可以稍后返回该模式。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

然后转到“用户配置文件磁盘”选项卡。选中启用用户配置文件磁盘选项,指定先前创建的共享文件夹 (\fs01\RDSProfiles) 的路径,并设置最大配置文件磁盘大小(设为 7 GB)。保存更改。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

可以使用 DFS 命名空间来存储 DFS 服务器的 UPD 配置文件,但官方不支持此配置。 DFS 主机必须运行 Windows Server 2012 R2 或更高版本。如果您使用的是早期版本的 Windows Server,您将收到错误:

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.

您可以检查 RDS 集合是否启用了 UPD,并使用 PowerShell 命令获取存储配置文件的目录路径:

Get-RDSessionCollectionConfiguration -CollectionName munCorpApp1 -UserProfileDisk

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

提示。 在单个 RDS 集合中,一个用户只能存在一个 VHDX 配置文件。如果用户连接到两个不同集合中的资源,将为每个集合创建一个单独的配置文件磁盘。

默认情况下,用户配置文件磁盘包含所有用户配置文件内容。您可以从同步目录列表中排除某些文件夹,或指定仅应保存某些文件夹。因此,在用户终端会话期间对排除目录列表中的文件夹所做的任何更改都不会保存到 VHDX 磁盘的共享文件夹中。有两种选择:

  • 将所有用户设置和数据存储在用户配置文件磁盘上

  • 仅在用户配置文件磁盘中存储以下文件夹

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

如果您在 Windows Server 2019/2016 上使用带有 UPD 的 RDS,随着时间的推移,您可能会在通过 RDP 登录时遇到 RDS 主机性能下降和黑屏的情况。我们建议您立即在所有 RDS 主机上启用 DeleteUserAppContainersOnLogoff 注册表选项。

New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1

RDS 上 VHDX 文件中的用户配置文件磁盘

更改集合设置并启用 UPD 后,将在目标 UPD 文件夹中创建一个名为 UVHD-template.vhdx 的文件。

该文件是用户配置文件磁盘的模板。当用户首次登录 RDS 服务器时,该模板将被复制并重命名为 VHDX 文件,名称中包含用户的 SID。为每个用户创建一个单独的 VHDX 文件。

提示。有关使用 UPD 登录服务器的详细日志,请参阅事件查看器 -> 应用程序(带有 User Profile Service 源)和应用程序和服务日志 -> -Microsoft -> Windows -> User Profile Service -> 操作。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

您可以将 UPD 文件名与所有者用户匹配。例如,您可以使用 Get-ADUser cmdlet 手动将 SID 转换为用户帐户名称:

Get-ADUser -Identity S-1-5-21-32549751-3956249758-2943215497-23733695

或者使用 ShowUPDFolderDetails.ps1 脚本,该脚本显示指定文件夹中的 UPD 文件的名称及其所有者:

$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, UPDFile

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

由于 UPD 配置文件是 VHDX 格式的常规虚拟磁盘文件,因此您可以从任何 Windows 主机装载它并查看其内容。右键单击该文件并选择装载

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

如您所见,VHDX 磁盘包含一组标准用户配置文件的文件夹和文件。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

在 RD 会话主机上,VHDX 文件中的用户配置文件安装到 C:\users\ 中,如下所示:

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

UPD 配置文件以独占模式挂载。这意味着,如果用户配置文件当前已连接到用户的 RDS 会话或手动安装,您将无法打开它并出现错误:无法安装该文件,因为它正在使用。

RDS 服务器中的用户配置文件磁盘无法在 Windows Server 版本之间迁移。

数据实时写入VHDX文件。这意味着当数据复制到 RDS 服务器上的用户配置文件时,共享存储上的 vhdx 文件的大小会立即增加。

如果 Windows 中已存在用户配置文件文件夹,则包含旧配置文件的文件夹将重命名为 -BACKUP-

当用户登录到 VDI 或 RDS 主机时,会挂载 VHDX 磁盘。每个 UPD 配置文件都安装到 C:\Users 目录。已安装的 VHDX 磁盘和用户配置文件的安装点的列表显示在磁盘管理中。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

如何使用PowerShell扩展/缩小用户配置文件磁盘?

您可以使用 Hyper-V 模块中的 Resize-VirtualDisk PowerShell cmdlet 来扩展或缩小具有特定用户 UPD 配置文件的虚拟 VHDX 磁盘映像(计算机上必须安装 Hyper-V 管理工具:

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: /delete

现在,您需要从磁盘管理控制台 GUI 增加卷大小(操作 -> 附加 VHD -> 扩展卷)。

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

或者使用以下 PowerShell 脚本自动将 VHDX 文件扩展至最大可用大小:

<#
.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
}

请注意,您无法扩展具有活动 RDS 会话的用户的 UPD 磁盘。

要减小 UPD 文件的大小(假设您删除了 vhdx 文件内的用户数据,并且磁盘上的数据大小小于分配给它的大小),可以使用以下命令:

Resize-VHD \fs01\RDSProfiles\UVHD-<SID>.vhdx -ToMinimumSize

然后优化文件中的空间分配:

Optimize-vhd -path \fs01\RDSProfiles\UVHD-<SID>.vhdx -mode full

在 RDS 上使用用户配置文件磁盘时出现临时配置文件问题

临时用户配置文件是在 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.

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

A temporary profile is created for the user in this case:
Event ID 1511
Source: User Profile Service

由于 Windows 找不到本地配置文件,因此为用户创建临时配置文件。当您注销时,您对此配置文件所做的更改将会丢失。

大多数情况下,这是因为用户的 VHDX 文件在上一个会话中未关闭。使用以下 PowerShell 找到安装用户 VHDX 驱动器的 RDSH 主机(在具有 RD 连接代理角色的主机上运行脚本):

$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."
}
}
$result

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

您可以使用以下命令远程卸载 UPD 虚拟驱动器:

Invoke-Command -ComputerName $VHD.PSComputername -ScriptBlock { Dismount-VHD -DiskNumber $VHD.DiskNumber }

为了减少 RDS 上临时配置文件的问题,最好为 RDS 用户会话配置超时。将空闲/断开连接的会话设置为在 2 到 4 小时后终止。您还可以启用阻止创建临时配置文件的 GPO 设置:计算机配置 -> 管理模板 -> 系统 -> 用户配置文件,启用选项不使用临时配置文件登录用户

[玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

此策略设置可能会间歇性地导致“

The User Profile Service failed the sign-in, user profile cannot be loaded

” 如果用户配置文件文件夹不可用。

释放 VHDX 磁盘后,管理员必须手动删除 RDS 主机上的临时用户配置文件:

  • 删除以下注册表项下具有用户SID的子项

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

    。在本例中,有两个子项,其中一个以.bak结尾(将它们都删除);

    [玩转系统] 在 Windows Server RDS 上配置用户配置文件磁盘 (UPD)

  • 从 C:\Users 目录中删除用户的 TEMP 配置文件文件夹。

    有关在 Windows 中删除用户配置文件的更多信息,请参阅链接中的文章。

近十年前(在 Windows Server 2012 中)引入的用户配置文件磁盘技术有许多缺点。 Microsoft 目前建议使用较新的 FSLogix 容器 来存储 RDS 用户配置文件。

因此,我们研究了如何在 Windows Server 上的 RDS/VDI 环境中配置用户配置文件磁盘。配置 UPD 比配置漫游配置文件或重定向文件夹容易得多。用户配置文件磁盘绑定到 RDS 集合,并且当用户配置文件在多个终端服务器之间共享时不会损坏(与标准用户配置文件文件夹不同)。用户配置文件磁盘可以存储在 SMB 共享、CSV、SOFS、SAN 或本地磁盘上。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯