Windows 10 Anniversary Update is now available and Windows Server 2016 will hopefully be released in the end of September together with a new Citrix XenApp / XenDesktop / PVS version.
It’s time to create a new blog post showing you how to get rid of all the crap (Build-In Apps), Optimize the Operation System and Customize Windows 10 Start Screen. Out of the box it’s not really Enterprise Ready!
Get rid of the crap
The first thing you would want to do is remove all those crappy applications. As an Administrator you want to have full control, at least for those VDI machines controlled by Citrix XenDesktop or VMware Horizon View.
To automatically remove all those applications run the following command:
1 |
Get-AppXProvisionedPackage -online | Remove-AppxProvisionedPackage -online |
That removes most part, but there’s still some applications like Edge and Contact Support that we need to remove in another way. I’m using James Rankin’s excellent script for that, check his post Windows 10 part #9 – removing Modern Apps from your image.
1 2 3 4 |
set-executionpolicy bypass -force copy-item RemoveCrap.cmd C:\Windows\Temp copy-item PsExec.exe C:\Windows psexec.exe /accepteula -i -s C:\Windows\Temp\RemoveCrap.cmd |
This could be part of your Automated Reference Image / Master Image or manual Master Image build for MCS or PVS. I prefer the first, learn more in the post Automated Master Image Creation and the short video below.
My Automation Framework is available for ONLY $97, learn more HERE.
The advantages of doing this in the Reference Images is that the User Experience is identical on both physical and virtual machines.
The Ultimate Windows 10 Tuning Template
LoginVSI has created an amazing Tuning Template for Windows 10 which increased VSImax with 47,5%. You can watch the recorded webinar here.
Download the VMware OS Optimization Tool and the #VDILIKAPRO Tuning Template and run it.
1 |
VMwareOSOptimizationTool_b1080.exe -o -t LIKEAPRO.XML |
However if you’re going to automate this through MDT/SCCM you need to delete the following lines below because it will force a reboot which breaks your Task Sequence.
1 2 3 4 5 6 7 |
<step name="SearchEngine-Client-Package" description="Removes Windows component "SearchEngine-Client-Package" (Search/Indexing). Only if "WSearch" service is set to "disabled". Disables Search/Indexing perm." category="optional" defaultSelected="false"> <action> <type>ShellExecute</type> <command>Powershell -ExecutionPolicy ByPass Dism /online /Disable-Feature /Quiet /FeatureName:SearchEngine-Client-Package | Out-Host</command> <params /> </action> </step> |
You know it’s working when you get a blue background at logon.
Customize Windows 10 Start Screen
The procedure is the same shown in the Customize Windows 2012 Start Screen Using Group Policy blog post. However in Windows 10 Build 1511 Microsoft introduced a great new feature that allows admins to lock down a section of the Start Menu.
This means you can organize Office 365, Accounting, Graphical Applications etc. in a nice layout, while the users are still able to pin custom application to their Start Screen. This is not the case for Windows 2012 R2.
Customize the Windows 10 Start Screen the way you like it and then run the following PowerShell command:
1 |
Export-StartLayout -Path C:\Temp\W10StartLayout.xml |
Edit the XML file and replace <DefaultLayourOverride> with this:
1 |
<DefaultLayoutOverride LayoutCustomizationRestrictionType="OnlySpecifiedGroups"> |
Copy the XML file to a network share and define the Group Policy setting Start Screen Layout in Computer Configuration – Policies – Administrative Templates – Start Menu and Taskbar.
If you want to use various layouts for various Active Directory Groups you can leverage Group Policy Item Level Targeting.
Citrix User Profile Management
To be able to roam the users customization’s you’ll need to make sure that you don’t have !ctx_localappdata!\TileDataLayer in Excluded Folders.
Add the file AppData\Local\TileDataLayer\Database\vedatamodel.edb to the list in Files to syncronize in Computer Configuration – Policies – Administrative Templates – Citrix – Profile Management – File System – Synchronization.
Disable Telemetry and Data Collection
This one is quite easy, simple create a GPO and disable the service Connected User Experiences and Telemetry short name dmwappushsvc.
Windows 10 Logon Performance
Many people may wonder why the logon time is higher on XenDesktop (VDI) compared to XenApp (RDSH). The reason is quite simple. When the first user logon to XenApp after a restart everything is loaded into memory. So if the logon time is 15ms then it’s probably only 5ms for the following users on the same server. On XenDesktop however this doesn’t apply.
Brand new Profile without VMware OS Optimization Tool
Brand new Profile with VMware OS Optimization Tool & #VDILIKEAPRO
Existing Profile without VMware OS Optimization Tool
Existing Profile with VMware OS Optimization Tool & #VDILIKEAPRO
Please be aware that Windows 10 could use as much as 20 minutes to settle down. So the longer you wait the better Logon Performance you get. Think about that when you add some additional VMs to the Delivery Group to handle your Logon Time SLA.
Customize Windows 2016 Start Screen
The custom Start Screen works perfectly for Windows Server 2016 as well.
Special thanks to René Bigler and James Rankin for helping out with this blog post.
Hi, great post
If you want to keep the Modern App Calculator when killing off all the Modern Apps, use this command to remove everything except Calculator
Get-AppxProvisionedPackage -online | where { $_.DisplayName -ne “Microsoft.WindowsCalculator” } | Remove-AppxProvisionedPackage -online
I find Calculator is about the *only* Modern App I care about! Failing that, there is a program called OldCalc you can install which actually brings back the old Windows 7-stle calculator.
Hello Eric,
Thanks for the post.
Just want to check from where are you coming the removecrap.cmd and psexec files to c:\windows\temp?
Thanks,
Pavan
I mean Copying
That stuff (which will be part of my Automation Framework) is from this post : http://appsensebigot.blogspot.com.br/2016/04/windows-10-part-9-removing-modern-apps.html
Thanks Eric. I mean in the below script where are you copying the removecrap.cmd and the PsExec from? Is it friom your scripts folder on deployment share to the local drive on the VM?
set-executionpolicy bypass -force
copy-item RemoveCrap.cmd C:\Windows\Temp
copy-item PsExec.exe C:\Windows
psexec.exe /accepteula -i -s C:\Windows\Temp\RemoveCrap.cmd
Correct D:\MDTProduction\Scripts. So you create the RemoveCrap.ps1 with the above, and in the RemoveCrap.cmd you copy the content from James blog post.
So creating a layout on WS2016 and then exporting it doesn’t work. I get this error:
=========================================
Export-StartLayout : Error HRESULT E_FAIL has been returned from a call to a COM component.
At line:1 char:1
+ Export-StartLayout -path c:\install\WS2016StartLayout.xml
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Export-StartLayout], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,Microsoft.Windows.StartLayout.Commands.Expor
tStartLayoutCommand
=========================================
Any idea? I’m logged in as a domain admin, PS is started as administrator.
Thanks and best
Udo
So the export nevertheless worked. I proceeded as recommended but the start menu isn’t applied. I checked gpresult and the policy is applied.
Any idea?
Udo
It’s some piece of crap….have you access to Citrix Workspace Environment Management CWEM (Norskale)?