Orazz from CitrixIRC found a great forum post that really made an impact on our environment. In a nutshell, when using the 2008 R2 Optimization Guide for XenApp and the Citrix Profile Manger, there is a registry setting that causes the UPM to timeout. A lot! After making the changes below, I noticed an immediate improvement in performance of the UPM. Logon/Logoff times have been reduced significantly. I’m also hoping this is going to lower the profile corruption issues that also pop up from now and again. We don’t have many since upgrading to UPM 4.x, but we still do have some.
- Upgrade to UPM 4.1.2
- Change HKLM\System\CurrentControlSet\Control\FileSystem\”NtfsDisable8dot3NameCreation” from “1” to “0” ( I did this using a GPP object as part of the optimization guide. I simply edited the GPP and changed to “0”)
- Backup and delete the keys from “HKLM\Software\Policies\Citrix\UserProfileManager”
- Reboot
Upon rebooting I verified the keys were recreated, and the NtfsDisable8dot3NameCreation was set to 0.
Note, some interesting changes in UPM 4.1.2 also. We use “Delete locally cached profiles on logoff”. This process now takes about 3 minutes for the folder to delete from the XenApp server. This is part of the new design. See UPM 4.1.2 in http://support.citrix.com/article/CTX134616
[…] you use the 2008 R2 Optimization Guide for XenApp 6/6.5? Well, don’t forget this blog post about one of the settings you need to change if you are using the UPM. Without changing […]
Would this make any difference on a Xendesktop Windows 7 image that is using UPM? Or is this just for Xenapp servers? Thanks great site.
I think this would work great for Windows 7 as well. Just look over the policy to make sure it fits your needs on the desktop side as well. I’d imagine it would massively speed up logon times for you as well. Give it a try and let us know how it works out!
Great Information. Thanks. The Reg should be NtfsDisable8dot3NameCreation
Thank you, you are correct. Post corrected.
My default setting is 2 not 0, any ideas on that one?
2 keeps it enabled on a per-volume basis. This would seem to be fine.
I noticed that in UPM 5, the above reg key is set to 2. Does that mean we should no longer change to 0? Thanks
Hello,
First thank you for your help on finding a good starting point to get this Profiles slimmed down, but I’m having a small issue running your script to trim the fat out of the profiles and was asking if you might be able to help? We have our Citrix Profiles stored on a Network share Mapped N:\ServerNamer\Citrix Profiles\Username
I tried to make the changes to reflect the path and folder name and I also stored the PS1 file in the same directory as the users Profile, and I still can’t get the stuff cleaned out. I’m new to Power Scripts and now sure where I’m messing up. Here what I have so far
#new script to delete folders.
#List directories and store in array
$Path = “\\Server\Citrix Profiles share name\”
$dirArray = Get-ChildItem -Path $Path | where {$_.PsIsContainer}
foreach ($objItem in $dirArray) {
$newpath = ”
$newpath = $Path+$Citrix Profiles
#objItem is the name of the folder.. this MUST be run from the root folder
Make $Path = “N:\ServerNamer\Citrix Profiles\”
If under that directory are a bunch of folders that match the username, it should be fine. Make sure you run the script from that folder.
#RemoveExcludedFolders.ps1
$ProfileRoot = '\\servername\sharename'
$ExcludedDirectories = '$Recycle.Bin',
'AppData\LocalLow',
'AppData\Local\Microsoft\Windows\Temporary Internet Files',
'AppData\Local\Microsoft\Windows\Burn',
'AppData\Local\Microsoft\Windows Live',
'AppData\Local\Microsoft\Windows Live Contacts',
'AppData\Local\Microsoft\Terminal Server Client',
'AppData\Local\Microsoft\Messenger',
'AppData\Local\Microsoft\OneNote',
'AppData\Local\Microsoft\Outlook',
'AppData\Local\Windows Live',
'AppData\Local\Temp',
'AppData\Local\Sun',
'AppData\Local\Google\Chrome\User Data\Default\Cache',
'AppData\Local\Google\Chrome\User Data\Default\Cached Theme Images',
'AppData\Roaming\Microsoft\Windows\Start Menu',
'AppData\Roaming\Sun\Java\Deployment\cache',
'AppData\Roaming\Sun\Java\Deployment\log',
'AppData\Roaming\Sun\Java\Deployment\tmp'
Get-ChildItem $ProfileRoot -directory |
ForEach {
$ProfileFolder = Join-Path $_.FullName "UPM_Profile"
ForEach ($ExcludedDirectory in $ExcludedDirectories) {
$ExcludedPath = Join-Path $ProfileFolder $ExcludedDirectory
If (Test-Path $ExcludedPath) {Remove-Item $ExcludedPath -Recurse -Force}
}
}