Windows Server RDS'de Kullanıcı Profili Disklerini (UPD) Yapılandırma
Kullanıcı Profili Diski (UPD), her Uzak Masaüstü Hizmetleri kullanıcısının (
%USERPROFILE%) ayrı bir VHDX (sanal disk) dosyasında. Böyle bir profil diski, kullanıcı Windows'ta oturum açtığında bağlanır ve kullanıcı oturumu kapattığında bağlantısı kesilir (profilde yapılan değişiklikler kaydedilir). Kullanıcı profili disklerini harici bir dosya paylaşımında depolayabilirsiniz, böylece bir kullanıcı RDS grubundaki herhangi bir sunucuda oturum açtığında kişisel ortamına (profillerine) erişebilir. UPD'ler, RDS terminal çözümlerinde gezici profil veya klasör yeniden yönlendirme teknolojilerine bir alternatiftir.
Bu yazıda, Windows Server 2022, 2019, 2016 veya 2012R2 üzerinde çalışan Uzak Masaüstü Hizmetleri rolüne sahip ana bilgisayarlarda Kullanıcı Profili Disklerinin nasıl yapılandırılacağını ve yönetileceğini açıklayacağız.
Windows Server RDS'de Kullanıcı Profili Disklerini Etkinleştirin
UPD profil dosyalarını depolamak için paylaşılan bir ağ klasörü oluşturun. Bu klasör, RDS grubunun dışındaki bir dosya sunucusunda bulunmalıdır. UPD profillerinin yüksek kullanılabilirliğini sağlamak için ağ klasörünü bir kümeye yerleştirmenizi öneririz. Böyle bir dizine giden yol, örneğimizde şöyle görünür:
\\fs01\RDSProfilesAD'de bir güvenlik grubu oluşturun ve RDS koleksiyonunuzdaki tüm ana bilgisayarları buna ekleyin. ADUC grafik konsolunu veya Active Directory for Windows PowerShell modülündeki cmdlet'leri kullanarak bir grup oluşturabilirsiniz:
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$Bir AD grubuna bilgisayar eklemek için, bilgisayar adının sonuna $ eklemelisiniz (bu, SAMAccountName özniteliğinin bir parçasıdır).
Şimdi munRDSHCollection1 grubu için \fs01\RDSProfiles klasöründe Tam Denetim izinleri verin.
Oluşturduğunuzda Uzak Masaüstü Koleksiyonu ayarlarında Kullanıcı Profili Disklerini etkinleştirebilirsiniz. Koleksiyon zaten varsa, onu Sunucu Yöneticisi konsolunda bulun ve sağ üst köşedeki Görevler-> Özellikleri Düzenle'yi seçin.
Kullanıcı Profili Diskleri modu, Uzak Masaüstü Hizmetlerinin toplama ayarlarında etkinleştirilebilir ve yapılandırılabilir. Bu mod, yeni bir koleksiyon oluştururken etkinleştirilebilir veya daha sonra geri dönebilirsiniz.
Ardından Kullanıcı Profili Diskleri sekmesine gidin. Kullanıcı profili disklerini etkinleştir seçeneğini işaretleyin, önceden oluşturulmuş paylaşılan klasörün (\fs01\RDSProfiles) yolunu belirtin ve bir maksimum profil diski boyutu belirleyin (7 GB olsun). Değişiklikleri kaydedin.
Bir DFS sunucusunun UPD profillerini depolamak için bir DFS ad alanı kullanmak mümkündür, ancak bu yapılandırma resmi olarak desteklenmemektedir. DFS ana bilgisayarları Windows Server 2012 R2 veya üstünü çalıştırıyor olmalıdır. Windows Server'ın önceki sürümlerini kullanıyorsanız bir hata alırsınız:
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 koleksiyonu için UPD'nin etkinleştirilip etkinleştirilmediğini kontrol edebilir ve PowerShell komutuyla profillerin depolandığı dizinin yolunu alabilirsiniz:
Get-RDSessionCollectionConfiguration -CollectionName munCorpApp1 -UserProfileDisk
İpucu. Tek bir RDS koleksiyonunda, bir kullanıcı için yalnızca bir VHDX profil dosyası bulunabilir. Bir kullanıcı kaynaklara iki farklı koleksiyondan bağlanırsa, her biri için ayrı bir profil diski oluşturulur.
Varsayılan olarak, bir Kullanıcı Profili Diski, tüm kullanıcı profili içeriğini içerir. Belirli klasörleri eşitlenmiş dizinler listesinden hariç tutabilir veya yalnızca belirli klasörlerin kaydedilmesi gerektiğini belirtebilirsiniz. Böylece, kullanıcının terminal oturumu sırasında hariç tutulan dizinler listesindeki klasörlerde yapılan değişiklikler, paylaşımlı klasördeki VHDX diskine kaydedilmeyecektir. Mevcut iki seçenek vardır:
Tüm kullanıcı ayarlarını ve verilerini kullanıcı profili diskinde saklayın
Kullanıcı profili diskinde yalnızca aşağıdaki klasörleri saklayın
RDS'yi Windows Server 2019/2016'da UPD ile kullanıyorsanız, zamanla RDP ana bilgisayar performansında düşüş ve RDP aracılığıyla oturum açarken siyah ekranla karşılaşabilirsiniz. Tüm RDS ana bilgisayarlarında DeleteUserAppContainersOnLogoff kayıt seçeneğini hemen etkinleştirmenizi öneririz.
New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1RDS'deki VHDX Dosyalarındaki Kullanıcı Profili Diskleri
Koleksiyon ayarlarını değiştirdikten ve UPD'yi etkinleştirdikten sonra, hedef UPD klasöründe UVHD-template.vhdx adlı bir dosya oluşturulur.
Bu dosya, kullanıcının profil diskinin şablonudur. Bir kullanıcı RDS sunucusunda ilk kez oturum açtığında, bu şablon kopyalanır ve adında kullanıcının SID'si bulunan bir VHDX dosyası olarak yeniden adlandırılır. Her kullanıcı için ayrı bir VHDX dosyası oluşturulur.
İpucu. Sunucuda oturum açmak için UPD'nin kullanılmasıyla ilgili ayrıntılı günlükler için bkz. Olay Görüntüleyici -> Uygulama (Kullanıcı Profili Hizmeti kaynağıyla) ve Uygulamalar ve Hizmet Günlükleri -> -Microsoft -> Windows -> Kullanıcı Profili Servis -> Operasyonel.
UPD dosya adını sahip kullanıcıyla eşleştirebilirsiniz. Örneğin, Get-ADUser cmdlet'ini kullanarak SID'yi manuel olarak bir kullanıcı hesabı adına dönüştürebilirsiniz:
Get-ADUser -Identity S-1-5-21-32549751-3956249758-2943215497-23733695Veya belirli bir klasördeki UPD dosyalarının adlarını ve sahiplerini görüntüleyen ShowUPDFolderDetails.ps1 komut dosyasını kullanın:
$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, UPDFileUPD profili, VHDX biçiminde normal bir sanal disk dosyası olduğundan, onu herhangi bir Windows ana bilgisayarından bağlayabilir ve içeriğini görüntüleyebilirsiniz. Dosyayı sağ tıklayın ve Bağla'yı seçin.
Gördüğünüz gibi, VHDX diski, standart bir kullanıcı profiline ait bir dizi klasör ve dosya içerir.
RD Oturumu Ana Bilgisayarında, VHDX dosyasındaki kullanıcı profili C:\users\
UPD profili özel modda monte edilmiştir. Bu, bir kullanıcı profilinin o anda kullanıcının RDS oturumuna bağlı olması veya manuel olarak bağlanması durumunda bu profili şu hatayla açamayacağınız anlamına gelir: Dosya kullanımda olduğu için bağlanamadı.
Bir RDS sunucusundaki Kullanıcı Profili Diskleri, Windows Server sürümleri arasında taşınamaz.
Veriler VHDX dosyasına gerçek zamanlı olarak yazılır. Bu, veriler bir RDS sunucusundaki bir kullanıcı profiline kopyalandığında, paylaşılan depolamadaki vhdx dosyasının boyutunun hemen artması anlamına gelir.
Kullanıcı profili klasörü Windows'ta zaten varsa, eski bir profile sahip klasörün adı
Bir kullanıcı bir VDI veya RDS ana bilgisayarında oturum açtığında bir VHDX diski takılır. Her UPD profili, C:\Users dizinine bağlanır. Bağlanan VHDX disklerinin ve kullanıcı profillerinin bağlama noktalarının listesi Disk Yönetimi'nde görünür.
PowerShell ile Kullanıcı Profili Diski Nasıl Genişletilir/Küçültülür?
Hyper-V modülünden Resize-VirtualDisk PowerShell cmdlet'ini kullanarak sanal bir VHDX disk görüntüsünü belirli bir kullanıcının UPD profiliyle genişletebilir veya küçültebilirsiniz (Hyper-V yönetim araçları bir bilgisayara yüklenmelidir:
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Şimdi Disk Yönetim konsolu GUI'sinden (Eylem -> VHD Ekle -> Sesi Genişlet) birim boyutunu artırmanız gerekiyor.
Veya VHDX dosyasını otomatik olarak kullanılabilir maksimum boyuta genişletmek için aşağıdaki PowerShell betiğini kullanın:
<#
.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
}Etkin bir RDS oturumu olan bir kullanıcının UPD diskini genişletemeyeceğinizi unutmayın.
UPD dosyasının boyutunu azaltmak için (kullanıcının vhdx dosyasındaki verilerini sildiğiniz ve diskteki veri boyutunun kendisine atanan boyuttan daha küçük olduğu varsayılarak), aşağıdaki komutları kullanabilirsiniz:
Resize-VHD \\fs01\RDSProfiles\UVHD-<SID>.vhdx -ToMinimumSizeVe sonra dosyadaki alan tahsisini optimize edin:
Optimize-vhd -path \\fs01\RDSProfiles\UVHD-<SID>.vhdx -mode fullRDS'de Kullanıcı Profili Disklerini Kullanırken Geçici Profil Sorunu
Geçici kullanıcı profilleri, RDS'de gezici profiller veya kullanıcı profili diskleri kullanırken karşılaşabileceğiniz en yaygın sorunlardan biridir:
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 ServiceWindows yerel profili bulamadığından kullanıcı için geçici bir profil oluşturulur. Oturumu kapattığınızda bu profilde yaptığınız değişiklikler kaybolacak.
Çoğu zaman bunun nedeni, kullanıcının VHDX dosyasının önceki oturumda kapatılmamış olmasıdır. Kullanıcının VHDX sürücüsünün takılı olduğu RDSH ana bilgisayarını bulmak için aşağıdaki PowerShell'i kullanın (komut dosyasını RD Bağlantı Aracısı rolüyle ana bilgisayarda çalıştırın):
$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."
}
}
$resultUPD sanal sürücüsünü şu komutla uzaktan kaldırabilirsiniz:
Invoke-Command -ComputerName $VHD.PSComputername -ScriptBlock { Dismount-VHD -DiskNumber $VHD.DiskNumber }RDS'deki geçici profillerle ilgili sorunları azaltmak için, RDS kullanıcı oturumları için zaman aşımlarını yapılandırmak iyi bir fikirdir. Boşta kalan/bağlantısı kesilen oturumları 2 ila 4 saat sonra sonlandırılacak şekilde ayarlayın. Geçici profillerin oluşturulmasını önleyen GPO ayarını da etkinleştirebilirsiniz: Bilgisayar Yapılandırması -> Yönetim Şablonları -> Sistem -> Kullanıcı profilleri, Kullanıcıları geçici profillerle oturum açma seçeneğini etkinleştirin.
Bu ilke ayarı zaman zaman "
The User Profile Service failed the sign-in, user profile cannot be loaded” kullanıcı profilleri klasörü yoksa.
Yönetici, VHDX diskini serbest bıraktıktan sonra RDS ana bilgisayarındaki geçici kullanıcı profilini manuel olarak silmelidir:
Aşağıdaki kayıt defteri anahtarının altındaki kullanıcı SID'sine sahip alt anahtarları silin
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList. Bu örnekte, biri .bak ile biten (ikisini de silin) iki alt anahtar vardır;
Kullanıcının TEMP profil klasörünü C:\Users dizininden kaldırın.
Windows'ta kullanıcı profillerini silme hakkında daha fazla bilgi için bağlantıdaki makaleye bakın.
Yaklaşık on yıl önce kullanıma sunulan (Windows Server 2012'de) Kullanıcı Profili Diski teknolojisinin bir dizi dezavantajı vardır. Microsoft, şu anda RDS kullanıcı profillerini depolamak için daha yeni FSLogix kapsayıcılarının kullanılmasını önermektedir.
Bu nedenle, bir Windows Sunucusunda RDS/VDI ortamında Kullanıcı Profili Disklerinin nasıl yapılandırılacağına baktık. UPD'leri yapılandırmak, gezici profilleri veya yeniden yönlendirilen klasörleri yapılandırmaktan çok daha kolaydır. Kullanıcı Profili Diskleri bir RDS koleksiyonuna bağlıdır ve bir kullanıcı profili birden çok terminal sunucusu arasında paylaşıldığında (standart kullanıcı profili klasörlerinden farklı olarak) bozulamaz. Kullanıcı Profili Diskleri, SMB paylaşımlarında, CSV'de, SOFS'de, SAN'da veya yerel disklerde saklanabilir.















