Here are some notes and links from our Master Windows 10 Deployments – Expert Level session at Microsoft Ignite 2016, compiled by Ami Arwidmark (@aarwidmark) who also helped out answering the questions coming in via Twitter (If you're not on Twitter, get on Twitter).
Link to video: http://www.youtube.com/watch?v=jULZkDUG6Rs
Session Notes and Links
Sample CustomSettings.ini files
- User exit scripts for model variables
Original script from deployment guys: http://blogs.technet.microsoft.com/deploymentguys/2009/09/10/using-and-extending-model-aliases-for-hardware-specific-application-installation/
- Updated version: http://deploymentbunny.com/2015/11/24/osd-deployment-deploying-intel-nuc-and-getting-drivers-and-settings-assigned-using-the-aliasuserexit-vbs-converting-product-into-modelalias/
- Deployment Webservices from Maik Koster: http://mdtcustomizations.codeplex.com/releases/view/26318
- Pretty Good Frontend: http://prettygoodfrontend.codeplex.com/
- Installing Packages and Apps Dynamically during OSD via AD groups: https://deploymentresearch.com/534/Installing-Packages-and-Apps-Dynamically-during-OSD-via-AD-groups-Web-service-Edition
- Save time (and avoid pain) – Create a MDT simulation environment: https://deploymentresearch.com/348/Save-time-and-avoid-pain-Create-a-MDT-simulation-environment
Manipulating the Microsoft Deployment Toolkit database using PowerShell
What you spend two weeks trying to customize, you can likely do in one line in the CustomSettings.ini file
CustomSettings.ini is read by ZTIGather – gathers info on the machine and converts what it gathers into properties with variables used to process the file.
ProTip: ByVMType should be BEFORE ByDesktopType
- SQL express or real SQL – doesn't matter
- Stored procedures – from CS.ini can call the stored procedure – for example generate computer name and use DB to keep track of that. So, why use Named pipes for MDT Database? SQL protocol that works very well in WinPE, and allows for trusted connection.
- During the demo: Michael Niehaus PowerShell library was used to MDT Database, see link above for download.
- Tip: if you have to run in clustered environment – make sure the DBA creates a files share
- Tip: Local SQL is preferred whenever you can get away with it!
- Prestage machine in AD or SCCM instead? – it's much easier to have one entry point for all the data
- If the data already exists somewhere, you can grab it with Webservices.
- Use MDT to create reference images, even if you're deploying them by SCCM
- Image Factory is using Hyper-V components (via LoadKVP function) to read a VM Name within WinPE, and use it to automate the complete deployment. Will build 1 wim file for each sequence you have per deployment share.
- UserExit Scripts – When CustomSettings.ini isn't enough
- Perfect for use in Lenovo deployment scenarios – where the vendor doesn't follow the conventional standard (WMI Class) for branding the model. All the logic is in the script for normalization of vendor names. See above for link.
Use Webservices to assign setting during deployment, works great in WinPE, and is very useful to access external data since code the is running server side. Webservices gives you access external data to feed to CS.ini to be used in the TS so that you don't have to:
- spend too much time customizing a task sequence
- hardcode things to a task sequence
You could use: MDT DB, SCCM DB, AD, or make your own / Steal with Pride: Johan – Pretty good front end, Maik Koster Webservices. See links above.
Default sequence in SCCM when integrated with MDT has an action that installs legacy packages and another that installs app mode packages so you can use a front end to control app install behavior – don't need a collection, don't need a deployment – sequence just calls the app directly. To call on a Webservice in CS.ini you need to give it a name and a variable. In the example (link above), the following scripts are run before the action that installs the apps:
ZTIListPackages.wsf – lists packages
ZTIListApplications.wsf – lists applications
Use Runbooks in Task Sequence
Can run in MDT or SCCM, good if you aren't into coding. Very easy to accomplish common tasks, for example it can send an email with completed deployments, or move a computer from one OU to another.