There are numerous tools provided by Microsoft to deploy Windows; however, I see a lot of confusion and questions about which of these tools to use, when to use it, and what the roles of each of them are.
WAIK
Windows Automated Installation Toolkit
This is the baseline set of tools provided by Microsoft to perform the atomic operations involved with deploying Windows: things like creating and modifying a Windows image, creating and updating a Windows PE boot image, and creating answer files. There are three main incarnations of the WAIK:
-
1.0 Initial release for supporting Vista deployment
-
1.1 Updated to support Vista SP1 and Server 2008 (SP1) – note that the RTM release of Server 2008 was already at the SP1 level
-
2.0 Updated to support Windows 7 and 2008 R2
The WAIK is suitable for deployments where a high level of automation is not desired without significant effort on the part of the implementer.
MDT
Microsoft Deployment Toolkit
MDT is stand-alone, end-to-end solution for deploying Windows in a fully automated, repeatable fashion. MDT builds on and uses the WAIK by adding best practices, scripts, tools, and a deployment methodology that significantly simplifies Windows deployment and brings it to a new level.
MDT is a free solution from Microsoft. MDT 2010 is the latest version of the toolkit which has been around for a number of years and was formerly called the Business Desktop Deployment (BDD) toolkit:
-
BDD 2.0
-
BDD 2.5
-
BDD 2007 Added support for Vista and Server 2003 deployments
-
MDT 2008 Initial release of re-branded toolkit, added support for Vista SP1 and Server 2008
-
MDT 2008 Update 1
-
MDT 2010 Support for Windows 7 and Server 2008 R2, USMT 4.0, and PowerShell automation added.
(There were a lot of versions of the BDD and I don’t remember what each added or what they all were; for purposes of this post, the above is sufficient though.)
The MDT is suitable for any Windows deployments where any level of automation is desired without a significant investment in custom scripting. It also comes at a great price: free.
OSD
Operating System Deployment
OSD is a component of System Center Configuration Manager (ConfigMgr) -- not SCCM. OSD is also an end-to-end solution for deploying Windows in a fully automated, repeatable fashion. OSD also builds on the WAIK the same way that MDT does. The advantage that OSD has over MDT is that OSD can leverage the other capabilities of ConfigMgr including Software Distribution and Software Updates to create a single utility to manage systems from cradle to grave. There are also multiple versions of OSD, these are synonymous with the ConfigMgr versions though and cannot be separated:
-
ConfigMgr 2007 RTM Initial Release
-
ConfigMgr 2007 SP1 Added support for Vista SP1 and 2008 SP1
-
ConfigMgr 2007 SP2 Added support for Windows 7 and 2008 R2 – note that this service pack has not yet been release
OSD is suitable for any Windows deployments where any level of automation is desired without a significant investment in custom scripting in combination with the great features of ConfigMgr.
Note that the MDT also operates in a second mode traditionally called Zero-touch Installation (ZTI) where it integrates into ConfigMgr providing a few additional features/enablers that can solve some additional common challenges.
Alphabet Soup No More
So which one is right for you? In all but the simplest, image only deployments, no one should consider using just the WAIK. That leaves the choice between MDT and OSD. The choice between OSD and MDT has to do with the deployment, maintenance, and cost of ConfigMgr. ConfigMgr is a great product (yes I’m biased, bias based on experience and not whim though), that solves a lot of challenges but not everyone is prepared to pay for and maintain it. Thus, organizations without ConfigMgr can still take advantage of MDT and organizations that already have or are willing to step up to the greatness that is ConfigMgr can use OSD!
Announcing my latest venture into coding and improving the experience of Operating System Deployment: OSD++.
OSD++ is a better way to get input from the user and populate task sequences variables. It retrieves values from the registry, queries WMI, and/or prompts the user for input via an input box or a drop-down box. All values retrieved are stored in internal OSD++ variables that can be used as replacement variables in further data retrieval. They can also be written out to the registry or used to set task sequence variables.
OSD++ variables can also be persisted in a file that can be loaded by OSD++. This is useful during refresh scenarios to display the interface to the user before the task sequence begins, save their responses to the variable file, and then using another run of OSD++, output the saved responses to task sequence variables.
Get it here (updated 9/13/09): http://myitforum.com/cs2/blogs/jsandys/pages/osdplusplus.aspx