I spent the first two weeks of the new year fighting through the hot mess that is Windows 10 deployment with MDT. There are quite a few helpful blogs/forums/technet articles on how to accomplish a lot of these steps but many of them focus on the SCCM(config manager) aspects and I had to try to shoe horn their solutions into an MDT only deployment since I don't have SCCM.
This was done with MDT 2013 Update 2 (running on a Win 8.1 Hyper-V VM), Windows ADK 10.1.10586 and Windows 10 Enterprise 1511.
I was able to successfully deploy Windows 10 Enterprise (release 1511,
FYI get a fresh ISO for 1511, if you use a previous build and install 1511 as a windows update sysprep will fail as it sees windows as an upgrade install. This will be the case for every quarterly major upgrade of Windows 10 from what I have read *Update 8/18/16* This
limitation of sysprep was removed as of the anniversary update of Windows 10) to a hyper-v virtual machine, install custom applications and Office 2010, any windows updates available at the time,
remove unwanted windows 10 apps and capture this customized OS as a wim for redeployment.
During redeployment I included custom task sequence steps to
customize the start menu to remove all the default icons and only show icons for Office 2010, Internet Browsers (a custom step was needed just to add Internet Explorer 11), and the snipping tool. I also removed one drive from running by default for all users thanks to
Jorgan Nilsson for his helpful blog for most of these steps. I also loaded
custom file associations to prevent Windows 10 apps from loading file types that we wanted more traditional applications to open.
Below I will list the custom task sequence steps I used. I placed all the files to be copied in a win10scripts folder in my deploymentshare. I plan to combine all the copy file steps into one cmd file but for testing purposes I wanted each as a separate step.
The following steps were defined in the task sequence for deploying the custom wim.
In the State Restore section after Tattoo
Copy IE shortcut - type Run command line
Command: cmd.exe /c copy %deployroot%"\win10scripts\Internet Explorer.lnk" "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk"
Customize start menu - type Run command line
command: cmd.exe /c copy %deployroot%\win10scripts\layoutmodification.xml C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml /y
Copy onedrive uninstall file - type Run command line
command: cmd.exe /c copy %deployroot%\win10scripts\removeonedrive.cmd c:\windows\temp\removeonedrive.cmd /y
Uninstall onedrive - type run command line
command: cmd.exe /c c:\windows\temp\removeonedrive.cmd
After Install applications step
Copy win 10 default file association config - type run command line
command: cmd.exe /c copy %deployroot%\win10scripts\defaultapps.xml c:\windows\temp\appassociations.xml /y
Import win 10 default file association config - type run command line
command: cmd.exe /c dism.exe /online /import-defaultappassociations:c:\windows\temp\appassociations.xml
I attempted to move some steps earlier in the task sequence but they seemed to fail. As a result the custom start menu was not applied to the administrator account and one drive still seemed to be running under administrator. If I created another user or logged on with a domain account the settings were successfully applied to the new user.
Found a blog post from the
deployment guys that increases the build speed by modifying the power settings to high performance. I saw about a five minute improvement on my 8.1 and 10 deployments by adding this step, depends on hardware and network speed obviously.
In my Preinstall section after the configure step I created a Run Command line step called Set High Perf power
command: %scriptroot%\%processor_architecture%\powercfg.exe /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Testing revealed that changing the power profile once windows actually boots gave no additional performance gain to the build so you can ignore the steps about adjusting the power profile again after the reboot and then having to set it back to normal at the end of your build.