<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Deployment Guys</title><link>http://blogs.technet.com/b/deploymentguys/</link><description>Helping to deploy your world automagically...</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Run command line as domain user – Incorrect Function Error</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/04/24/run-command-line-as-domain-user-incorrect-function-error.aspx</link><pubDate>Tue, 24 Apr 2012 21:19:32 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3494187</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3494187</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3494187</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/04/24/run-command-line-as-domain-user-incorrect-function-error.aspx#comments</comments><description>&lt;p&gt;When deploying Windows clients using Configuration Manager 2007 and MDT 2010 Update 1, there is often a requirement to run task sequence actions as a domain user as opposed to the local system account. For example, in order to perform actions on a computer object in Active Directory (such as moving the computer object to a different OU). Usually, the OU security will be configured with the necessary ACLs to allow specific users or groups to perform computer object operations. Therefore when we attempt to automate this as part of the deployment process, it will fail as the action will be executed by the system account which will not hold the necessary privileges (default behaviour in Configuration Manager 2007).&lt;/p&gt;  &lt;p&gt;Therefore the “Run Command Line” task sequence action provides the functionality to execute the command as a domain user account that will have the necessary privileges. &lt;/p&gt;  &lt;p&gt;This has always worked perfectly for me, until recently when working on a Windows 7 deployment. The issue was that the task sequence would fail when attempting to run the command line action as a domain user. The error logs revealed the error “Incorrect Function”:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0675.Capture_5F00_6E993EEB.jpg"&gt;&lt;img title="Capture" style="display: inline;" border="0" alt="Capture" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7115.Capture_5F00_thumb_5F00_1E73E0AD.jpg" width="504" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is quite a generic error and can be caused by many different things, including a syntax error in the script or cscript unable to locate the script specified. However, in this instance this error occurred due a combination of Microsoft .NET Framework 1.1 installed on the system and the attempt to run the command line as a different user. More specifically the error was caused by the configuration of the following registry key:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;HKLM\Software\Microsoft\COM3\REGDBVersion&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The default value for this key is 1, however the installation of.NET Framework 1.1 modified the value. The solution is to re-configure the REGDBVersion DWORD value back to 1 during the task sequence, which will result in the command line action running correctly. This can be easily automated during the deployment process by creating a collection of actions to first backup the key, then modify the value and finally restore the original value as illustrated in the following steps.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Step One: Backup the existing registry values&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3733.backupkey_5F00_7CA8081B.jpg"&gt;&lt;img title="backupkey" style="display: inline;" border="0" alt="backupkey" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7026.backupkey_5F00_thumb_5F00_67D60F9B.jpg" width="404" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Step Two: Set the REGDBVersion value to 1&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7026.changevalue_5F00_3EEAFA92.jpg"&gt;&lt;img title="changevalue" style="display: inline;" border="0" alt="changevalue" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5556.changevalue_5F00_thumb_5F00_1C46BC17.jpg" width="404" height="284" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;b&gt;&lt;u&gt;Step Three: Run the desired script as the domain user&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1346.MoveObject_5F00_7A7AE385.jpg"&gt;&lt;img title="MoveObject" style="display: inline;" border="0" alt="MoveObject" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0576.MoveObject_5F00_thumb_5F00_65A8EB05.jpg" width="404" height="256" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Step Four: Restore the previous registry values&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5852.restorekey_5F00_2EEB9001.jpg"&gt;&lt;img title="restorekey" style="display: inline;" border="0" alt="restorekey" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3806.restorekey_5F00_thumb_5F00_1A199781.jpg" width="404" height="287" /&gt;&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;Terms of Use&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;This post was contributed by ­­­­­­­­­­­­­­Matt Bailey&lt;i&gt;,&lt;/i&gt; a Consultant with Microsoft Services - UK&lt;i&gt;.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3494187" width="1" height="1"&gt;</description></item><item><title>Microsoft Consulting Services (MCS) UK is Hiring</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/03/22/microsoft-consulting-services-mcs-uk-is-hiring.aspx</link><pubDate>Thu, 22 Mar 2012 10:01:39 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3488067</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3488067</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3488067</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/03/22/microsoft-consulting-services-mcs-uk-is-hiring.aspx#comments</comments><description>&lt;p&gt;MCS UK are looking for a technical consultant to specialise in client deployment (Windows 7 and Windows 8), Systems Centre 2012 Configuration Manager, System Center 2012 Virtual Machine Manager and Virtual Desktop Infrastructure (VDI) – to view and apply for the position please see &lt;a href="http://bit.ly/GI8Id2"&gt;http://bit.ly/GI8Id2&lt;/a&gt; or if you need additional information then please contact Sarah Moule (&lt;a href="mailto:v-srake@microsoft.com"&gt;v-srake@microsoft.com&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Richard Smith&lt;/strong&gt;, a Principal Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3488067" width="1" height="1"&gt;</description></item><item><title>Approval request notification for Systems Center 2012 Configuration Manager</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/03/22/approval-request-notification-for-systems-center-2012-configuration-manager.aspx</link><pubDate>Thu, 22 Mar 2012 04:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3488031</guid><dc:creator>Aly Shivji</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3488031</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3488031</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/03/22/approval-request-notification-for-systems-center-2012-configuration-manager.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;My favorite feature in Systems Center 2012 Configuration Manager (Configuration Manager) is without a doubt the new and shiny self-service Application Catalog portal. The new Application Catalog feature is packed with benefits for both the application owner and the end user. As an IT department or Line of business (LOB) application owner, you can easily make all or some of your applications available to users via an internal web portal. As an end-user, if you need to obtain a new business application all you need to do is pay a visit to your company&amp;rsquo;s internal application portal, search or select the application you&amp;rsquo;re interested in and install it all by yourself.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2625.clip_5F00_image002_5F00_6F071717.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1538.clip_5F00_image002_5F00_thumb_5F00_5532E0E8.jpg" width="438" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, Configuration Manager Application Catalog is not a free for all place where users can install any application they like. First, when end-users visit the application portal, they will only see those applications they&amp;rsquo;ve been granted explicit access to by the application owner. Second, for many reasons (licensing being one of them), corporations may require a manager&amp;rsquo;s approval before an end-user can install a particular application. This is where Configuration Manager Application Catalog&amp;rsquo;s approval workflow feature comes in.&lt;/p&gt;
&lt;p&gt;If the application owner requires administrator or manager&amp;rsquo;s approval before a user can install a particular application, the user will be able to submit a request for approval directly from the application portal.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6428.clip_5F00_image004_5F00_0D715801.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0552.clip_5F00_image004_5F00_thumb_5F00_45AFCF19.jpg" width="455" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After submitting a request for approval using my lab, I quickly realized that, well I realized that nothing else happened. It was at that moment that I started pondering (just like you are now I am sure): If a user goes to the Configuration Manager Application Catalog portal and submits a request for approval but no one knows about it, did the request really happen?&lt;/p&gt;
&lt;p&gt;You see, as of RC2, Configuration Manager has no ability to notify administrators/approvers when users submit requests for approval from the Application Catalog site. Firing up the Configuration Manager Console and navigating to the &amp;ldquo;Approval Requests&amp;rdquo; section is the only way to see and manage (approve/deny) user requests. See below.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2100.clip_5F00_image006_5F00_64F275EC.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5355.clip_5F00_image006_5F00_thumb_5F00_790B9275.jpg" width="463" height="237" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, before you head out to find your pitch forks and shovels, you may want to consider that Configuration Manager provides a very handy API that allows developers to easily query the Application Catalog for new user requests. The bad news here is that there&amp;rsquo;s no built-in mechanism to notify administrators of new requests but the good news is that you can build your own and have it do anything you like. J&lt;/p&gt;
&lt;p&gt;For instance, I was able to build a VB.NET Windows service that queries Configuration Manager at a configurable time interval and retrieves any new user requests.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4278.clip_5F00_image008_5F00_184E3949.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3782.clip_5F00_image008_5F00_thumb_5F00_508CB061.jpg" width="472" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To obtain the list of requests from Configuration Manager, you simply query the &lt;b&gt;&lt;i&gt;&lt;span style="text-decoration: underline;"&gt;UserApplicationRequest&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; class and retrieve all entries that have the &lt;b&gt;&lt;i&gt;&lt;span style="text-decoration: underline;"&gt;CurrentState&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; property set to 1.&lt;/p&gt;
&lt;p&gt;The following sample WMI query retrieves all user requests from Configuration Manager 2012:&lt;/p&gt;
&lt;p&gt;strComputer = "."&lt;/p&gt;
&lt;p&gt;Set objWMIService = GetObject("winmgmts:\\" &amp;amp; strComputer &amp;amp; "\root\SMS\site_P01")&lt;/p&gt;
&lt;p&gt;Set colItems = objWMIService.ExecQuery( _&lt;/p&gt;
&lt;p&gt;"SELECT * FROM SMS_UserApplicationRequest",,48)&lt;/p&gt;
&lt;p&gt;For Each objItem in colItems&lt;/p&gt;
&lt;p&gt;Wscript.Echo "-----------------------------------"&lt;/p&gt;
&lt;p&gt;Wscript.Echo "SMS_UserApplicationRequest instance"&lt;/p&gt;
&lt;p&gt;Wscript.Echo "-----------------------------------"&lt;/p&gt;
&lt;p&gt;Wscript.Echo "Application: " &amp;amp; objItem.Application&lt;/p&gt;
&lt;p&gt;Wscript.Echo "UniqueID: " &amp;amp; objItem.CI_UniqueID&lt;/p&gt;
&lt;p&gt;Wscript.Echo "RequestGUID: " &amp;amp; objItem.RequestGUID&lt;/p&gt;
&lt;p&gt;Wscript.Echo "CurrentState: " &amp;amp; objItem.CurrentState&lt;/p&gt;
&lt;p&gt;Wscript.Echo "Comments: " &amp;amp; objItem.Comments&lt;/p&gt;
&lt;p&gt;Wscript.Echo "ModelName: " &amp;amp; objItem.ModelName&lt;/p&gt;
&lt;p&gt;Wscript.Echo "LastModifiedBy: " &amp;amp; objItem.LastModifiedBy&lt;/p&gt;
&lt;p&gt;Wscript.Echo "LastModifiedDate: " &amp;amp; objItem.LastModifiedDate&lt;/p&gt;
&lt;p&gt;Wscript.Echo "User: " &amp;amp; objItem.User&lt;/p&gt;
&lt;p&gt;Wscript.Echo "RequestHistory: " &amp;amp; objItem.RequestHistory&lt;/p&gt;
&lt;p&gt;Wscript.Echo "UserSid: " &amp;amp; objItem.UserSid&lt;/p&gt;
&lt;p&gt;Next&lt;/p&gt;
&lt;p&gt;Once I have the list of user requests, all I need to do is send a notification email to the application approvers using the provided email address or Distribution List. Lastly, I store each Request GUID in a text file with today&amp;rsquo;s date so that approvers are notified only once-per-day.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2210.clip_5F00_image010_5F00_21C6F7BF.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6318.clip_5F00_image010_5F00_thumb_5F00_4EDBE48D.jpg" width="523" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the approvers receive the notification email, they can fire up the Configuration Manager Console and approve or deny the user requests.&lt;/p&gt;
&lt;p&gt;I know, I know. You&amp;rsquo;re thinking that now that you solved the email notification issue you still have to use Configuration Manager&amp;rsquo;s Console to manage these requests. You may also be thinking of creative ways to deploy the console across your organization to all your approvers and administrators. A daunting task, no doubt!&lt;/p&gt;
&lt;p&gt;Luckily, once again, there&amp;rsquo;s no need to panic. Using the same API, you can create a custom (web) interface to allow approvers and admins the ability to manage user requests without having to rely on the Configuration Manager Console. However, that as they say, is a topic for another day and will be covered on my next blog post on the topic. For now, thank you for your time and I look forward to seeing you again soon.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by guest author &lt;strong&gt;Rafael Dominguez&lt;/strong&gt;, a Senior Consultant with Microsoft Services USA specializing in &lt;/em&gt;Windows and Office deployment using Configuration Manager and Microsoft Deployment Toolkit&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3488031" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr+2012/">ConfigMgr 2012</category></item><item><title>Using MBAM to start BitLocker Encryption in a Task Sequence</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/02/20/using-mbam-to-start-bitlocker-encryption-in-a-task-sequence.aspx</link><pubDate>Mon, 20 Feb 2012 22:18:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3482105</guid><dc:creator>David Hornbaker</dc:creator><slash:comments>18</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3482105</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3482105</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/02/20/using-mbam-to-start-bitlocker-encryption-in-a-task-sequence.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;The script has been updated to abort if the TPM is not Active and to create Endorsement Key Pair if it does not exist on the TPM.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Microsoft BitLocker Administration and Monitoring (MBAM) provides features to manage BitLocker encryption of computers in an enterprise.&amp;nbsp; More information on MBAM can be found &lt;a href="http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/mdop/mbam.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;BitLocker creates recovery information at the time of encryption and MBAM stores that information in the recovery data store. While MBAM can update its recovery data store when the agent is installed on a system that is already encrypted, it is preferable to have MBAM control the encryption process.&amp;nbsp; MBAM Encryption is controlled by Group Policy.&amp;nbsp; Group Policy is not applied during a SCCM Task Sequence.&amp;nbsp; It is possible to have MBAM start encryption during the task sequence, the techniques are described in the following whitepaper Using MBAM Data Encryption With MDT &lt;a href="http://go.microsoft.com/fwlink/?LinkId=229053"&gt;&lt;span style="text-decoration: underline;"&gt;http://go.microsoft.com/fwlink/?LinkId=229053&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Manually starting BitLocker Encryption with MBAM&lt;/h1&gt;
&lt;p&gt;Manually starting encryption with MABM requires five steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the MBAM Agent.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Stop the MBAM agent&lt;/li&gt;
&lt;li&gt;Import registry settings that will instruct the agent to start encryption.&lt;/li&gt;
&lt;li&gt;Wait for encryption to start&lt;/li&gt;
&lt;li&gt;Remove the most of the imported registry settings&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Installing MBAM Agent&lt;/h2&gt;
&lt;p&gt;The MBAM agent can be installed during Windows 7 Image creation.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To install MBAM during the deployment, just create a SCCM package/program to install the agent.&lt;/p&gt;
&lt;h2&gt;Creating the registry import files.&lt;/h2&gt;
&lt;p&gt;Create a .reg file that contains the required MBAM entries. There is a template in Program Files\Microsoft\MDOP MBAM\MBAMDeploymentKeyTemplate.reg. This template will become the basis for the AddMBAMRegEntries.reg file.&lt;/p&gt;
&lt;p&gt;Do the following on an unencrypted system with the MBAM Agent installed(from an elevated command prompt):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Net Stop MBAMAGENT&lt;/li&gt;
&lt;li&gt;reg import &amp;ldquo;c:\Program Files\Microsoft\MDOP MBAM\MBAMDeploymentKeyTemplate.reg&amp;rdquo;&lt;/li&gt;
&lt;li&gt;using regedit make the following changes:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Change the KeyRecoveryServiceEndPoint key to have the URL of the MBAM recovery server.&lt;/li&gt;
&lt;li&gt;Add NoStartupDelay as a DWORD with a value of one.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Export the MBAM key to a file (AddMBAMRegEntries.reg)&lt;/li&gt;
&lt;ol&gt;&lt;/ol&gt;&lt;/ol&gt;
&lt;p&gt;Next, create a .reg file to remove the entries&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy AddMBAMRegEntries.reg to RemoveMBAMRegEntries.reg&lt;/li&gt;
&lt;li&gt;Open RemoveMBAMEntries.reg in notepad&lt;/li&gt;
&lt;li&gt;Delete the line: "Installed"=dword:00000001&lt;/li&gt;
&lt;li&gt;for all the other keys in the file replace everything after the equals sign with a minus sign (E.G. "NoStartupDelay"=dword:00000001 becomes "NoStartupDelay"=-)&lt;/li&gt;
&lt;li&gt;Save RemoveMBAMRegEntries.reg&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: More information on creating and editing .reg files is available &lt;a href="http://support.microsoft.com/kb/310516" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At this point test that the .reg files are correct by starting the MBAM agent (net Start MBAMAGENT), encryption will begin within a couple of minutes.&amp;nbsp; After encryption begins, run the removeMBAMEntries.reg file to remove the unneeded entries.&lt;/p&gt;
&lt;p&gt;For encryption to begin, the MBAM agent needs to talk to the server.&amp;nbsp; If this server communication fails the encryption will not start.&amp;nbsp; If there is a problem, verify that the URL is correct and the MBAM server is functioning correctly.&lt;/p&gt;
&lt;h3&gt;Sample AddMBAMRegEntries.reg file&lt;/h3&gt;
&lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;
&lt;p&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MBAM] &lt;br /&gt;"Installed"=dword:00000001 &lt;br /&gt;"KeyRecoveryOptions"=dword:00000001 &lt;br /&gt;"UseKeyRecoveryService"=dword:00000001 &lt;br /&gt;"KeyRecoveryServiceEndPoint"=hex(2):68,00,74,00,74,00,70,00,73,00,3a,00,2f,00,\ &lt;br /&gt; 2f,00,63,00,69,00,73,00,35,00,33,00,33,00,76,00,6d,00,6d,00,62,00,61,00,6d,\ &lt;br /&gt; 00,2e,00,61,00,76,00,6e,00,65,00,74,00,2e,00,63,00,6f,00,6d,00,2f,00,4d,00,\ &lt;br /&gt; 42,00,41,00,4d,00,52,00,65,00,63,00,6f,00,76,00,65,00,72,00,79,00,41,00,6e,\ &lt;br /&gt; 00,64,00,48,00,61,00,72,00,64,00,77,00,61,00,72,00,65,00,53,00,65,00,72,00,\ &lt;br /&gt; 76,00,69,00,63,00,65,00,2f,00,43,00,6f,00,72,00,65,00,53,00,65,00,72,00,76,\ &lt;br /&gt; 00,69,00,63,00,65,00,2e,00,73,00,76,00,63,00,00,00 &lt;br /&gt;"DeploymentTime"=dword:00000001 &lt;br /&gt;"NoStartupDelay"=dword:00000001&lt;/p&gt;
&lt;h3&gt;Sample RemoveMBAMRegEntries.reg file&lt;/h3&gt;
&lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt;
&lt;p&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MBAM] &lt;br /&gt;"KeyRecoveryOptions"=- &lt;br /&gt;"UseKeyRecoveryService"=- &lt;br /&gt;"KeyRecoveryServiceEndPoint"=- &lt;br /&gt;"DeploymentTime"=- &lt;br /&gt;"NoStartupDelay"=-&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Automating the process with a script&lt;/h1&gt;
&lt;p&gt;StartMBAMEncryption.wsf is a MDT 2010 style script that will automate the last four steps&amp;nbsp;&amp;nbsp; To use this script create a folder that contains StartMBAMEncryption.wsf, ZTIUtility.vbs from the MDT toolkit, and the two .reg files created above.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To start Encryption run the following from an elevated command prompt:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: xx-small;" size="1"&gt;cscript StartMBAMEncryption.wsf /AddRegFile:AddMBAMRegEntries.reg /RemoveRegFile:RemoveMBAMRegEntries.reg&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;How does the script work?&lt;/h2&gt;
&lt;p&gt;Make sure that MBAM is installed, do a WMI query for the MBAMAGENT service. If the service does not exist, fail.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oServices = objWMI.ExecQuery("Select * from win32_service where name='MBAMAgent'") &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestAndFail (oServices.count = 1), 10005, "MBAM Client Agent is not installed"&lt;/p&gt;
&lt;p&gt;The service exists,&amp;nbsp; stop the service.&amp;nbsp; Using the result of the previous query, call the StopService method.&amp;nbsp; Note that the query will return at most one item.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Stop the service &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for each oService in oServices &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oService.StopService() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/p&gt;
&lt;p&gt;Use the REG IMPORT command to import the&amp;nbsp; AddMBAMRegEntries.reg file, this will give the MBAM agent instruction to start encryption.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sCMD = "Reg IMPORT """ &amp;amp; sAddRefFilePath &amp;amp; """" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iRetVal = oUtility.RunWithHeartbeat(sCMD) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestAndFail iretVal, 10006, "Importing AddRegFile: " &amp;amp; sAddRefFilePath&lt;/p&gt;
&lt;p&gt;Now, using the result of the original WMI query again, start the MBAM agent&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Restart the MBAMAgent Service &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for each oService in oServices &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oService.StartService() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/p&gt;
&lt;p&gt;Since BitLocker information is in a different Namespace, the script must create a connection to that Namespace.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strConnectionStr1 = "winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!root\cimv2\Security\MicrosoftVolumeEncryption"&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error resume Next &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objWMIBDE = GetObject(strConnectionStr1) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on error goto 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestAndFail Err, 10007, "Unable to connect to Bitlocker WMI Object -&amp;nbsp; bitlocker not installed"&lt;/p&gt;
&lt;p&gt;Using the object just created, query for a Win32_EncryptableVolume for the C: drive. Once that object is obtained, go into a loop sleeping 30 seconds, updating the Task Sequence progress bar, and checking to see if the encryption is in progress.&amp;nbsp; Note that the script is checking for both in progress (EncryptionStatus = 2) and Encrypted (EncryptionStatus = 1).&amp;nbsp; This loop will wait 10 minutes for the encryption to start.&amp;nbsp; In testing the encryption has started within 2 minutes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iCount = 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iLoopCount = 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry "Waiting for Encryption to Start", LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.ReportProgress "Waiting For Encryptiont to Start",&amp;nbsp; iLoopCount/20 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wscript.Sleep 30000 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set colEnVol = objWMIBDE.ExecQuery("Select * from Win32_EncryptableVolume where DriveLetter='C:'") &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for each oEncVol in colEnVol &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oEncVol.GetConversionStatus iEncryptionStatus, iPercentComplete &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ILoopCount = iLoopCount + 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If iLoopCount &amp;gt;= 20 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestAndFail False, 10008, "Timeout: Encryption did not start" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop Until ((iEncryptionStatus = 1) or (iEncryptionStatus = 2)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.ReportProgress "Encryptiont Started", 100 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry "Encryptiont Started", LogTypeInfo&lt;/p&gt;
&lt;p&gt;All that is left to do is cleanup the registry by importing the removeMBAMEntries.reg file&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sCMD = "Reg IMPORT """ &amp;amp; sRemoveRegFilePath &amp;amp; """" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iRetVal = oUtility.RunWithHeartbeat(sCMD) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestAndFail iretVal, 10009, "Importing RemoveRegFile: " &amp;amp; sRemoveRegFilePath&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Creating the MBAM Support Task Sequence Package&lt;/h1&gt;
&lt;p&gt;Create a new folder and add the two .reg files created above, a copy of ZTIUTILITY.VBS from the MDT scripts package, and StartMBAMEncryption.wsf.&amp;nbsp; In you SCCM console, create a new package, and program.&amp;nbsp; The program command line will be:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: xx-small;" size="1"&gt;cscript StartMBAMEncryption.wsf /AddRegFile:AddMBAMRegEntries.reg /RemoveRegFile:RemoveMBAMRegEntries.reg&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Or, to wait until encryption is finished, before the task sequence continues, the program command line will be:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;span style="font-size: xx-small;" size="1"&gt;&lt;span style="font-size: xx-small;" size="1"&gt;cscript StartMBAMEncryption.wsf /AddRegFile:AddMBAMRegEntries.reg /RemoveRegFile:RemoveMBAMRegEntries.reg&amp;nbsp;&amp;nbsp; /WaitForEncryption:true&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&amp;nbsp;&amp;nbsp;
&lt;h1&gt;Changes to the Task Sequence&lt;/h1&gt;
&lt;h2&gt;TPM Issues&lt;/h2&gt;
&lt;p&gt;The Trusted Platform Module (TPM) must be visible to the OS and enabled.&amp;nbsp; making the TPM visible, varies by hardware vendor and system.&amp;nbsp; There is a script that will check if the TPM is visible &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2010/12/22/check-to-see-if-the-tpm-is-enabled.aspx" target="_blank"&gt;Here&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; For information on how to enable the TPM from a task sequence see the table below.&lt;/p&gt;
&lt;table style="width: 838px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;Lenovo&lt;/td&gt;
&lt;td valign="top" width="636"&gt;&lt;a href="http://support.lenovo.com/en_US/detail.page?LegacyDocID=MIGR-68488" target="_blank"&gt;http://support.lenovo.com/en_US/detail.page?LegacyDocID=MIGR-68488&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;Dell&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="636"&gt;&lt;a href="http://en.community.dell.com/techcenter/os-applications/w/wiki/how-to-enable-trusted-platform-module-using-a-configmgr-2007-task-sequence.aspx" target="_blank"&gt;http://en.community.dell.com/techcenter/os-applications/w/wiki/how-to-enable-trusted-platform-module-using-a-configmgr-2007-task-sequence.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;HP&lt;/td&gt;
&lt;td valign="top" width="636"&gt;&lt;a title="http://itbloggen.se/cs/blogs/micke/archive/2010/10/18/enable-tpm-via-task-sequence-on-hp-boxes.aspx" href="http://itbloggen.se/cs/blogs/micke/archive/2010/10/18/enable-tpm-via-task-sequence-on-hp-boxes.aspx"&gt;http://itbloggen.se/cs/blogs/micke/archive/2010/10/18/enable-tpm-via-task-sequence-on-hp-boxes.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;Disk Partitioning&lt;/h2&gt;
&lt;p&gt;BitLocker requires an unencrypted partition that will hold the Boot files and boot database.&amp;nbsp; This partition has to be at least 100MB, but it is recommended that it be 300MB.&amp;nbsp; A 300MB partition will allow recovery environment (WinRE) to be copied to the unencrypted drive.&amp;nbsp; WinRE is automatically copied when BitLocker is enabled if there is enough space on the boot partition.&lt;/p&gt;
&lt;h3&gt;For Bare Metal deployments, the partition can be created during the Partition Disk step.&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Create a 300MB primary partition and mark it Active (Make Bootable)&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Create a primary partition that uses 100% of the remaining disk&amp;nbsp; Assign a variable to this disk (OSDISK)&lt;/li&gt;
&lt;li&gt;Change the Apply Operating System step to put the Operating System on the disk specified in the variable OSDISK&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6281.image_5F00_6923004C.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8764.image_5F00_thumb_5F00_40A41E38.png" width="321" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2072.image_5F00_467EC1D1.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1488.image_5F00_thumb_5F00_2CAA8BA2.png" width="329" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1805.image_5F00_19895EF6.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7245.image_5F00_thumb_5F00_43895D1E.png" width="427" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7356.image_5F00_611B381D.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1070.image_5F00_thumb_5F00_6D3CB244.png" width="432" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;For refresh from XP or Windows 7 system that does not have a separate boot partition, use the following steps:&lt;/h3&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;The following steps should be added before the step that installs the MBAM support package created above.&lt;/p&gt;
&lt;h3&gt;Using ZTIBDE.WSF (from MDT)&lt;/h3&gt;
&lt;p&gt;Add a Run Command Line step that runs ZTIBDE.WSF&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cscript %ScriptRoot%\ztibde.wsf&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Using BdeHDCfg&lt;/h3&gt;
&lt;p&gt;Add a Run Command Line step&amp;nbsp; with the following command line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;BdeHdCfg -target default -quiet&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This will create a 300MB partition for the boot files.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Add a Reboot System step following this step.&lt;/p&gt;
&lt;p&gt;Additional information on BitLocker, Configuration Manager 2007, and disk partitions can be found on the Configuration manager Support Team blog &lt;a title="http://blogs.technet.com/b/configurationmgr/archive/2011/01/20/solution-the-enable-bitlocker-task-fails-to-run-during-a-configmgr-2007-task-sequence.aspx" href="http://blogs.technet.com/b/configurationmgr/archive/2011/01/20/solution-the-enable-bitlocker-task-fails-to-run-during-a-configmgr-2007-task-sequence.aspx"&gt;http://blogs.technet.com/b/configurationmgr/archive/2011/01/20/solution-the-enable-bitlocker-task-fails-to-run-during-a-configmgr-2007-task-sequence.aspx&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Join the Domain&lt;/h2&gt;
&lt;p&gt;The computer system must be in a Domain in order for MBAM to escrow the BitLocker Keys.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Joining a domain is required for this process to work correctly.&lt;/p&gt;
&lt;h2&gt;Enabling BitLocker&lt;/h2&gt;
&lt;p&gt;To enable BitLocker, simply add an install software step to install the package/program created above.&amp;nbsp; It is recommended that this be one of the last steps in the Task Sequence because encrypting the disk will consume many system resources until the disk is fully encrypted.&lt;/p&gt;
&lt;h2&gt;Waiting for Encryption to Finish&lt;/h2&gt;
&lt;p&gt;To ensure the highest security level, the system should not be released to a user until the disk is completely encrypted.&amp;nbsp; The /WaitForEncryption:True option will force the script to wait up to 5 hours for the encryption to finish.&amp;nbsp; If the encryption doesn&amp;rsquo;t finish within 5 hours, the fact will be logged but the script will not abort.&amp;nbsp; This option can be useful if there are business requirements that the system be fully encrypted before any data is restored.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: xx-small;" size="1"&gt;cscript StartMBAMEncryption.wsf /AddRegFile:AddMBAMRegEntries.reg /RemoveRegFile:RemoveMBAMRegEntries.reg /WaitForEncryption:true &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;b&gt;David Hornbaker,&lt;/b&gt; a Senior Consultant with Microsoft Services - U.S. East Region.&amp;nbsp; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Special thanks to &lt;strong&gt;Manoj Sehgal&lt;/strong&gt;, Senior Support Escalation Engineer, Platforms core, Microsoft Services, and&lt;/em&gt; &lt;strong&gt;William Lees, &lt;/strong&gt;&lt;em&gt;Principal SDE, Microsoft Corporation, for their assistance with this post.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;Terms of Use&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3482105" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-48-21-05/StartMBAMEncryption.zip" length="2067" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Bitlocker/">Bitlocker</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+BitLocker+Administration+and+Monitoring/">Microsoft BitLocker Administration and Monitoring</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MBAM/">MBAM</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDOP/">MDOP</category></item><item><title>Expiring Outdated Stand-Alone Media</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/02/15/expiring-outdated-stand-alone-media.aspx</link><pubDate>Wed, 15 Feb 2012 17:30:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3481192</guid><dc:creator>Brad Tucker</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3481192</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3481192</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/02/15/expiring-outdated-stand-alone-media.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In my previous post ‘&lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2011/08/04/how-to-limit-or-restrict-the-use-of-bootable-media-devices-for-os-deployment-using-sccm.aspx" target="_blank"&gt;How to Limit or Restrict the Use of Bootable Media Devices for OS Deployment Using SCCM&lt;/a&gt;’, I showed you how to limit or restrict outdated boot media devices.&amp;#160; As promised, I am now going to offer a solution for stand-alone media.&amp;#160; &lt;/p&gt;  &lt;p&gt;I need to start by saying that there or MANY possible ways to resolve this issue.&amp;#160; This is but one, but I have found it works pretty well.&lt;/p&gt;  &lt;p&gt;As a little background, I will tell you that this solution came about because my customer at the time asked for a way to keep stand-alone media from being deployed after it was no longer current.&amp;#160; They wanted this to work for non-networked devices.&amp;#160; This meant I couldn’t point back to a file on a network share and check its contents/properties.&amp;#160; It all had to be contained within the media.&lt;/p&gt;  &lt;p&gt;Once it was implemented they decided to use this same solution for networked devices as well that use stand-alone media.&lt;/p&gt;  &lt;p&gt;I created a script called ExpiredUFDCheck.vbs.&amp;#160; The purpose of this script was to check the creation date of the policy.xml file on the media itself.&amp;#160; This file contains the task sequence information and is created when the media is generated.&amp;#160; My customer wanted to refresh the reference image and task sequence every quarter, so I added logic in the script that checked to see if the policy.xml file was older than 3 months old.&amp;#160; If it wasn’t, the task sequence would launch and run as normal.&amp;#160; If it was, the script would pop up a message box notifying the tech that the task sequence was expired and would then shutdown the box and not launch the task sequence.&amp;#160; Pretty simple, right?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;' // ***************************************************************************    &lt;br /&gt;' //     &lt;br /&gt;' // File:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExpiredUFDCheck.vbs     &lt;br /&gt;' //     &lt;br /&gt;' // Version:&amp;#160;&amp;#160; 1.0     &lt;br /&gt;' //     &lt;br /&gt;' // Purpose:&amp;#160;&amp;#160; Check to see if stand-alone media is expired     &lt;br /&gt;' //     &lt;br /&gt;' // Usage:&amp;#160;&amp;#160;&amp;#160;&amp;#160; cscript ExpiredUFDCheck.vbs     &lt;br /&gt;' //     &lt;br /&gt;' // ***************************************************************************&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;On Error Resume Next&lt;/p&gt;  &lt;p&gt;' // ---------------------------------------------------------------------    &lt;br /&gt;' // Find the environment variable %configpath% for location of UFD     &lt;br /&gt;' // ---------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;'Set objShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)    &lt;br /&gt;'Set objExecObject = objShell.Exec(&amp;quot;%comspec% /c echo %configpath%&amp;quot;)     &lt;br /&gt;'configPath1 = objExecObject.StdOut.ReadAll()     &lt;br /&gt;'configPath = Mid(configPath1, 1, Len(configPath1) -2)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // -----------------------------------------------------------------------------------------     &lt;br /&gt;' // Find the environment variable %TEMP% for location of tool files (e.g. shutdown.exe)     &lt;br /&gt;' // -----------------------------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;Set objShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)    &lt;br /&gt;Set objExecObject = objShell.Exec(&amp;quot;%comspec% /c echo %temp%&amp;quot;)     &lt;br /&gt;temp = objExecObject.StdOut.ReadAll()     &lt;br /&gt;tempdir = Mid(temp, 1, Len(temp) -2) &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // ---------------------------     &lt;br /&gt;' // Find driver letter for UFD     &lt;br /&gt;'// ----------------------------&lt;/p&gt;  &lt;p&gt;Set FSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;/p&gt;  &lt;p&gt;Set Drives = FSO.Drives&lt;/p&gt;  &lt;p&gt;For Each DiskDrive In Drives    &lt;br /&gt;&amp;#160; If DiskDrive.DriveType = &amp;quot;1&amp;quot; Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; USBPath = DiskDrive.Path     &lt;br /&gt;&amp;#160; End If     &lt;br /&gt;&amp;#160; &lt;br /&gt;Next     &lt;br /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;' // -----------------------------------------------------------------    &lt;br /&gt;' // Query WMI for creation date of the Policy.xml file on the UFD     &lt;br /&gt;' // -----------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;strComputer = &amp;quot;.&amp;quot;    &lt;br /&gt;Set objWMIService = GetObject(&amp;quot;winmgmts:&amp;quot; &amp;amp; &amp;quot;{impersonationLevel=impersonate}!\\&amp;quot; &amp;amp; strComputer &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // ----------------------------     &lt;br /&gt;' // Media Check - Policy.xml     &lt;br /&gt;' // ----------------------------&lt;/p&gt;  &lt;p&gt;Set colFiles = objWMIService.ExecQuery(&amp;quot;Select * From CIM_DataFile Where Name = '&amp;quot; &amp;amp; USBPath &amp;amp; &amp;quot;\\SMS\\Data\\Policy.xml'&amp;quot;)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // -----------------------------------------     &lt;br /&gt;' // Set the date 3 months ago from today     &lt;br /&gt;' // -----------------------------------------&lt;/p&gt;  &lt;p&gt;dt3MonthsAgo = DateAdd(&amp;quot;m&amp;quot;, -3, Now)&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // -----------------------------------------------------------------------------------------------------------     &lt;br /&gt;' // If the Policy.xml file creation date is less than the date 3 months ago from today, it is an expired UFD.     &lt;br /&gt;' // -----------------------------------------------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;For Each objFile in colFiles    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; dtCreationDate = WMIDateStringToDate(objFile.CreationDate)     &lt;br /&gt;&amp;#160; dtEndDate = DateAdd(&amp;quot;m&amp;quot;, 3, dtCreationDate)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If dtCreationDate &amp;lt; dt3MonthsAgo then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set WshShell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Command = TEMPDIR &amp;amp; &amp;quot;\scripts\Shutdown.exe /s /t 0&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MsgBox &amp;quot;This task sequence expired on &amp;quot; &amp;amp; dtEndDate, vbMsgBoxSetForeground, &amp;quot;Expired Task Sequence&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set oExec = WshShell.Exec(Command)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WScript.Quit(1)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;Next&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;' // -----------------------------------------------------------------------------------------     &lt;br /&gt;' // Converting the WMI date query response to a simple date format.&amp;#160; (e.g. 09/21/2010)     &lt;br /&gt;' // -----------------------------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;Function WMIDateStringToDate(dtmInstallDate)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; Mid(dtmInstallDate, 7, 2) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; Left(dtmInstallDate, 4) &amp;amp; &amp;quot; &amp;quot; &amp;amp; Mid(dtmInstallDate, 9, 2) &amp;amp; &amp;quot;:&amp;quot; &amp;amp; Mid(dtmInstallDate, 11, 2) &amp;amp; &amp;quot;:&amp;quot; &amp;amp; Mid(dtmInstallDate, 13, 2))     &lt;br /&gt;End Function     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now comes the fun. I had to make sure the script ran on the media. We also wanted it to run before the task sequence fired.&lt;/p&gt;  &lt;p&gt;Inside WinPE itself, there is a file on the root called TSConfig.ini (X:\TSConfig.ini).&amp;#160; This file is a ‘pre-execution hook’ file and determines if any extra actions are required when WinPE is launching and initializing.&amp;#160; I mounted the WinPE wim and copied my script file to the root.&amp;#160; Then inside the TSConfig.ini file I set the command to launch my script.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[CustomHook]&lt;/p&gt;  &lt;p&gt;CommandLine=”cscript.exe X:\ExpiredUFDCheck.vbs”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When a machine is booted with an expired UFD, the following message box will be displayed during the WinPE initialization…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7608.image_5F00_028638DB.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5557.image_5F00_thumb_5F00_2F9B25A9.png" width="400" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hitting OK, will shut down the computer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Brad Tucker&lt;/strong&gt;, a Senior Consultant with Microsoft Services, East Region, United States&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3481192" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+Deployment/">Microsoft Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/SCCM+2007/">SCCM 2007</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/WinPE/">WinPE</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Media/">Media</category></item><item><title>Internet Explorer 6 Migration Roadshow events - UK</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/02/08/internet-explorer-6-migration-roadshow-events-uk.aspx</link><pubDate>Wed, 08 Feb 2012 18:32:34 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3479659</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3479659</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3479659</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/02/08/internet-explorer-6-migration-roadshow-events-uk.aspx#comments</comments><description>&lt;p&gt;Microsoft is working with a number of compatibility partners to host Internet Explorer 6 Migration Roadshow events around the UK. With support for Windows XP coming to an end on the 8&lt;sup&gt;th&lt;/sup&gt; April 2014 and IE6 standing in so many people’s way of migration, this is an opportunity to gain understanding on how to deal with problem web applications. &lt;/p&gt;  &lt;p&gt;Microsoft have teamed up with &lt;b&gt;Camwood&lt;/b&gt;, &lt;b&gt;Citrix Systems&lt;/b&gt; and &lt;strong&gt;Quest Software&lt;/strong&gt; to deliver events through February, March and April - there are a range of dates to choose from, each offering a slightly different spin and all promising to be informative!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Who, Where &amp;amp; When?&lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;strong&gt;Tues 21&lt;sup&gt;st&lt;/sup&gt; February&lt;/strong&gt;&lt;/b&gt;    &lt;br /&gt;Microsoft &amp;amp; Quest Software     &lt;br /&gt;Manchester United Football Ground (Old Trafford)     &lt;br /&gt;09:30 – 14:00 (+Stadium Tour!)    &lt;br /&gt;&lt;a href="http://www.quest-software.co.uk/landing/?ID=7174"&gt;More Information &amp;amp; Registration&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;Thurs 22&lt;sup&gt;nd&lt;/sup&gt; March &lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Microsoft &amp;amp; Citrix Systems (Including newly acquired AppDNA)    &lt;br /&gt;Chalfont St. Peter (Easy access via the M40 &amp;amp; M25 as well as rail)    &lt;br /&gt;09:00 – 16:00    &lt;br /&gt;&lt;a href="http://www.citrixappdnaevents.com/ie6-migration-roadshow"&gt;More Information &amp;amp; Registration&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;Tues 3&lt;sup&gt;rd&lt;/sup&gt; April &lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Microsoft &amp;amp; Camwood     &lt;br /&gt;London, Cardinal Place     &lt;br /&gt;More Information &amp;amp; Registration coming soon    &lt;br /&gt;&lt;strong&gt;Thurs 19&lt;sup&gt;th&lt;/sup&gt; April &lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Microsoft &amp;amp; Quest Software     &lt;br /&gt;Reading Football Ground (Madejski Stadium)     &lt;br /&gt;09:30 – 14:00 (+Stadium Tour!)    &lt;br /&gt;&lt;a href="http://www.quest-software.co.uk/landing/?ID=7174"&gt;More Information &amp;amp; Registration&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Richard Smith&lt;/strong&gt;, a Principal Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3479659" width="1" height="1"&gt;</description></item><item><title>Dynamically Installing ‘Computer Specific’ Applications Using Configuration Manager with MDT</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/02/02/dynamically-installing-computer-specific-applications-using-configuration-manager-with-mdt.aspx</link><pubDate>Fri, 03 Feb 2012 05:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3478662</guid><dc:creator>Brad Tucker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3478662</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3478662</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/02/02/dynamically-installing-computer-specific-applications-using-configuration-manager-with-mdt.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There is a little known component of the MDT database that, when used with Configuration Manager, can automatically re-install applications that were previously installed on a device.&amp;#160; It is not well known, simply because it isn’t readily visible from the database view within the Deployment Workbench.&lt;/p&gt;  &lt;p&gt;I decided to write this entry, to explain the MDT PackageMapping table and RetrievePackages stored procedure.&lt;/p&gt;  &lt;p&gt;This process is sometimes, unofficially, referred to as Zero Touch Applications.&amp;#160; ZTA refers to the unattended application installation process integrated into Zero Touch Installation.&amp;#160; It utilizes the Add/Remove Programs (ARP) data from the ConfigMgr database and maps that to a manually maintained “PackageMapping” table that is hosted on the MDT database server.&amp;#160; When the ZTIGather is run, it queries the ConfigMgr database for all application names associated to the MAC address that is passed from the machine.&amp;#160; It then attempts to match these to entries in the PackageMapping table in the MDT database.&amp;#160; If there are matches, they are then used to populate the PACKAGES variable for use in the Install Software step of the task sequence.&lt;/p&gt;  &lt;p&gt;The PackageMapping table maintains a list of mappings.&amp;#160; The column ARPName refers to the legacy application and the column Packages refers to the package ID and program name of the new package to be installed.&amp;#160; Many of my customers will use this to map a new, Windows 7 remediated application to an old application name, so that when the image is deployed, it will automatically install the new version via a dynamic upgrade.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;I should point out that the following uses ConfigMgr 2012, but the process is the same on ConfigMgr 2007, even though the console look and feel may be different.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The configuration of the process is as follows…&lt;/p&gt;  &lt;p&gt;First, make sure your package and program exist in ConfigMgr.&amp;#160; You will notice I have a package called Project Professional 2010 with a package ID of CO100014.&amp;#160; It also has a program named ‘Silent Install Project 2K10.’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3441.image_5F00_7B07CF26.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6746.image_5F00_thumb_5F00_523C4410.png" width="605" height="507" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Second, identify the name that ConfigMgr recognizes for the application to which you want to map.&amp;#160; You can do this by launching SQL Management Studio and running the following query against the ConfigMgr database.&amp;#160; Notice the DisplayName0 is ‘Microsoft Office Project Professional 2010’.&amp;#160; Also, notice the ProdID0 is a GUID.&amp;#160; This will be explained momentarily.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7142.image_5F00_0936224A.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4174.image_5F00_thumb_5F00_0CF3C71A.png" width="604" height="507" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now you need to modify the PackageMapping table.&amp;#160; Notice I have added the previously queried DisplayName0, ‘Microsoft Office Project Professional 2010’ in the ARPName column.&amp;#160; I have also added the ConfigMgr package CO100014:Silent Install Project 2K10.&amp;#160; The format for the Packages column must be PACKAGEID:Program Name.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5460.image_5F00_0EE11623.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8206.image_5F00_thumb_5F00_495C15F7.png" width="609" height="511" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we need to modify the RetrievePackages stored procedure.&amp;#160; This can be found in the Programmability node under the MDT database.&amp;#160; Right-click this stored procedure and select Modify.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;CREATE PROCEDURE [dbo].[RetrievePackages] &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;@MacAddress CHAR(17) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;AS&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;SET NOCOUNT ON &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;/* Select and return all the appropriate records based on current inventory */&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;SELECT * FROM PackageMapping&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;WHERE ARPName IN&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;(&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;SELECT &lt;font style="background-color: #ffff00"&gt;DisplayName0&lt;/font&gt; FROM [HYD-SRV1].CM_CO1.dbo.v_GS_ADD_REMOVE_PROGRAMS1 a, &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;[HYD-SRV1].CM_CO1.dbo.v_GS_NETWORK_ADAPTER n&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;WHERE a.ResourceID = n.ResourceID AND&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;MACAddress0 = @MacAddress&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Notice I have added &lt;strong&gt;[HYD-SRV1].CM_CO1.&lt;/strong&gt; in front of the two ConfigMgr views that are being referenced in the query.&amp;#160; This represents my [SCCM_Server].SCCM_Database.&amp;#160; There is also another change I like to make in order to make it easier to identify the applications.&amp;#160; The ‘SELECT DisplayName0…’ in the original stored procedure is really ‘SELECT ProdID0…’.&amp;#160; Remember when we ran our query earlier, I had you look at the ProdID0.&amp;#160; It is a GUID.&amp;#160; The DisplayName0 is what shows in the Add/Remove section of the operating system, so it is easier to reference.&amp;#160; Once all changes are made, click Execute.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that we have done all that, we have to modify the customsettings.ini file so that it will run the stored procedure during the ZTIGather.&amp;#160; Here is a sample customsettings.ini file with the changes needed in yellow…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;[Settings]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;Priority= &lt;font style="background-color: #ffff00"&gt;RetrievePackages&lt;font style="background-color: #ffffff"&gt;,&lt;/font&gt; DynamicPackages&lt;/font&gt;, Default&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;Properties=MyCustomProperty&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;[DynamicPackages]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;SQLServer=HYD-SRV1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;Database=MDT&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;StoredProcedure=RetrievePackages&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;NetLib=DBNMPNTW&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;Parameters=MacAddress&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00" size="1" face="Arial"&gt;SQLShare=DeploymentShare$&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Arial"&gt;[Default]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font face="Arial"&gt;…&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Arial"&gt;When I run my task sequence, the ZTIGather.log now looks like the following…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6646.image_5F00_20DD33E3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7723.image_5F00_thumb_5F00_38283854.png" width="636" height="378" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Notice that the SQL query has returned CO100014:Silent Install Project 2010 and assigned it the PACKAGES variable as PACKAGES001.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;DONE!!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTES: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;My lab environment is Windows 2008 R2 with Configuration Manager 2012 RC1, MDT 2012 Beta 2 and SQL 2008 SP2 CU6 . This process, however, is the same on MDT 2010 Update 1 with SCCM 2007 .&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;My lab has the MDT and ConfigMgr databases on the same server.&amp;#160; If this is not your environment, you will need to setup the ConfigMgr server as a linked server in the SQL Management Studio.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Manipulating the PackageMapping table is manual out of the box.&amp;#160; You could also script to pull the ARP data from ConfigMgr and then manually map, or you could produce a front-end application that helps users map the applications.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Brad Tucker&lt;/strong&gt;, a Senior Consultant with Microsoft Services, East Region, United States&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3478662" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/SCCM+2007/">SCCM 2007</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Configuration+Manager/">Configuration Manager</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr+2012/">ConfigMgr 2012</category></item><item><title>Finding All References to MDT Variables in a Deployment Share: VariableDocumentor v1.0</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/01/20/finding-all-references-to-mdt-variables-in-deployment-share-variabledocumentor-v1-0.aspx</link><pubDate>Fri, 20 Jan 2012 23:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3476543</guid><dc:creator>Aly Shivji</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3476543</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3476543</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/01/20/finding-all-references-to-mdt-variables-in-deployment-share-variabledocumentor-v1-0.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MDT is very flexible in the ability to define and use variables inline and in different locations. However, this also means that if you forget to assign a variable a value it may lead to unintended consequences that you might not easily discover. There are many different places in which you could find references to a variable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Task Sequence Variables&lt;/strong&gt;- You can use variables in a task sequence in two ways:
&lt;ul&gt;
&lt;li&gt;Directly used in the command line with the notation %variable%&lt;/li&gt;
&lt;li&gt;As a condition on a particular step in the task sequence&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZTIGather.xml &amp;ndash;&lt;/strong&gt; This file defines the variables and lists that are declared by MDT for the Gather step of the Task Sequence to use and process for rules. It also defines whether variables are re-writable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Within MDT scripts&lt;/strong&gt;variables are called in different ways
&lt;ul&gt;
&lt;li&gt;In VBScripts you may see a reference to an oEnvironment.Item or an oEnvironment.ListItem&lt;/li&gt;
&lt;li&gt;In Powershell you may see references to tsenv: or tsenvlist:&lt;/li&gt;
&lt;li&gt;In cmd and batch scripts you may see references to %variable%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In a &lt;strong&gt;CustomSettings &lt;/strong&gt;or other INI file you could see references to variables in the &lt;strong&gt;&amp;ldquo;Properties=&amp;rdquo;&lt;/strong&gt; field&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to help manage all of these variables, the following PowerShell script scours a given deployment share&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6646.image_5F00_6958E6A9.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1351.image_5F00_thumb_5F00_4F84B07A.png" width="595" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and returns the results of all references from scripts, task sequences and ZTIGather of variables in that deployment share. It saves it to a Variables.XML with a built in XSL transform in the working directory:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6237.image_5F00_67A81AD5.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0777.image_5F00_thumb_5F00_3F956BB6.png" width="573" height="640" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also specify a parameter to update a given INI to see any variables missing from the properties section.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6237.image_5F00_4BB6E5DD.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1854.image_5F00_thumb_5F00_63DA5038.png" width="575" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To use it &amp;ndash; download the attached Powershell and XSL and point to the same folder.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Aly Shivji&lt;/strong&gt;, an Architect with the Datacenter &amp;amp; Private Cloud Center of Excellence in Microsoft Services&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3476543" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-47-65-43/DeclareProperties.zip" length="3514" type="application/zip" /></item><item><title>Windows 7 Deployment Options for Small and Midsize Businesses</title><link>http://blogs.technet.com/b/deploymentguys/archive/2012/01/12/windows-7-deployment-options-for-small-and-midsize-businesses.aspx</link><pubDate>Thu, 12 Jan 2012 10:11:48 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3475103</guid><dc:creator>Daniel Oxley</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3475103</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3475103</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2012/01/12/windows-7-deployment-options-for-small-and-midsize-businesses.aspx#comments</comments><description>&lt;p&gt;Happy new year to everyone!&amp;nbsp; It looks like I am making the first blog post here for 2012 :-)&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;To get the year rolling I thought I'd share anexcellent resource that I stumbled across this week, even though it was published back in November.&amp;nbsp; If you follow the link below you can download a printable overview poster of the Windows 7 deployment options that has been specifically designed for small and midsize organizations.&amp;nbsp; As you can see in the small extract below each option is shown as a simple diagram and then the advantages and limitations of each one are discussed in detail further on.&amp;nbsp; Also included in the poster are the limitations, basic requirements and helpful links to tools and further guidance, as well as a step-by-step overview of the Windows 7 deployment process.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/7360.Untitled.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/7360.Untitled.jpg" width="598" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope it is of use, and if you know of any other similar resources (both Microsoft and non-Microsoft) feel free to share them with our readers using the comments section below.&amp;nbsp; See &lt;a title="here" href="http://www.microsoft.com/download/en/details.aspx?id=24374" target="_blank"&gt;here&lt;/a&gt; for more information and the download links.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Daniel Oxley&lt;/strong&gt;, a Senior Consultant with Microsoft Services UK&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;&lt;span style="color: #0066dd;"&gt;Terms of Use&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3475103" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+Deployment/">Microsoft Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Utilities/">Utilities</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+Automated+Installation+Kit/">Windows Automated Installation Kit</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tools/">Tools</category></item><item><title>MDT 2012: New Features – Hide Shell</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/12/02/mdt-2012-new-features-hide-shell.aspx</link><pubDate>Fri, 02 Dec 2011 04:35:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3468516</guid><dc:creator>Ben Hunter</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3468516</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3468516</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/12/02/mdt-2012-new-features-hide-shell.aspx#comments</comments><description>&lt;p&gt;Here is a common scenario. You are deploying an operating system using MDT Lite Touch, during the deployment you install some user specific applications. However the users think that the deployment is completed an they close the application installs or perhaps start messing with the machine while it is still logged in as the local administrator. Now you could simply inform the user that they should not touch the computer until the deployment is completed. However in my experience this “don’t touch” approach has not always been 100% successful.&lt;/p&gt;  &lt;p&gt;Well now we have a better way, you can hide explorer shell while MDT is “doing it’s thing”!&lt;/p&gt;  &lt;p&gt;So how do we do this? It is simple, just add the following line to the customsettings.ini file:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;HIDESHELL=YES&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;I have included before and after shots below:&lt;/p&gt;  &lt;p&gt;Look explorer…&lt;/p&gt;  &lt;p&gt;,&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0647.image_5F00_7BEE302A.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4331.image_5F00_thumb_5F00_426B2033.png" width="350" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No explorer…. that’s better!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2210.image_5F00_6219F9FB.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0636.image_5F00_thumb_5F00_3ADFB0C6.png" width="354" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;P.S. The exclamation marks are for you Rod &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1207.wlEmoticon_2D00_smile_5F00_2896EA04.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Ben Hunter&lt;/strong&gt;, a Senior Program Manager for MDT with Microsoft&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3468516" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/hideshell/">hideshell</category></item><item><title>MDT 2012: New Features– GPO Packs</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/12/02/mdt-2012-new-features-gpo-packs.aspx</link><pubDate>Fri, 02 Dec 2011 00:11:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3468507</guid><dc:creator>Ben Hunter</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3468507</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3468507</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/12/02/mdt-2012-new-features-gpo-packs.aspx#comments</comments><description>&lt;p&gt;There are many new features of MDT 2012 but one that I particularly like is the ability to apply GPO Packs created using Security Compliance Manager (&lt;a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=16776" href="http://blogs.technet.com/controlpanel/blogs/posteditor.aspx/SCM"&gt;SCM&lt;/a&gt;) during the deployment process.&lt;/p&gt;
&lt;p&gt;SCM is a great tool that allows you to create and manage group policy baselines in an easy to use interface. These polices are then able to be applied at the domain level or as&amp;nbsp; &amp;ldquo;Local GPO Packs&amp;rdquo;. MDT can now deploy these &amp;ldquo;Local GPO Packs&amp;rdquo; during deployment.&lt;/p&gt;
&lt;p&gt;MDT provides four default GPO packs for the following operating systems that are applied by default during deployment. The correct GPO pack will be applied based on the operating system that is deployed. If an operating system matching the GPO pack is not found then no GPO Pack will be applied.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Windows 7 SP1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;2. Windows Vista SP2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;3. Windows 2008 SP2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;4. Windows 2008 R2 SP1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All GPO packs are stored in the Templates folder within the Distribution Share. For example &lt;em&gt;&amp;lt;Distribution Share&amp;gt;\Templates\GPOPacks\&amp;lt;GPO Pack Folder&amp;gt;.&lt;/em&gt; When you specify your own GPO Pack you must override the default GPO pack using the &lt;i&gt;GPOPackPath&lt;/i&gt; variable in the customsettings.ini file. This is a relative path from the &lt;em&gt;&amp;lt;Distribution Share&amp;gt;\Templates\GPOPacks\ folder.&lt;/em&gt; For example&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;GPOPackPath&lt;/i&gt; = Win7-HighSecurity&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you do not want to apply any GPO Packs then task sequence step can be skipped by setting the variable &lt;b&gt;&lt;i&gt;ApplyGPOPack&lt;/i&gt;&lt;/b&gt; to &lt;em&gt;&lt;strong&gt;NO&lt;/strong&gt;&lt;/em&gt; in customsettings.ini.&lt;/p&gt;
&lt;p&gt;You can create your own GPO packs using the following process.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Use SCM to create an SCM baseline&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;2. Export the baseline using a GPO backup&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now we need to turn the baseline into a GPO pack, this is a simple process.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;3. Open to an existing GPO pack and copy the following files to the backup - &lt;em&gt;GPOPack.wsf, LocalPol.exe, LocalSecurityDB.sdb&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;4. Copy the GPO Pack to the &lt;em&gt;&amp;lt;Distribution Share&amp;gt;\Templates\GPOPacks&lt;/em&gt; folder&lt;/p&gt;
&lt;p&gt;3. Update the &lt;i&gt;GPOPackPath&lt;/i&gt; variable in the customsettings.ini file to point at the new GPO Pack&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Each ofthe default GPO Packs updates the local policy with the settings in the attached excel file.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Ben Hunter&lt;/strong&gt;, a Senior Program Manager for MDT with Microsoft&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3468507" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-46-85-07/MDTGPOPacks.xlsx" length="48244" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/GPO+Pack/">GPO Pack</category></item><item><title>MDT 2012 Beta 2 Released</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/11/11/mdt-2012-beta-2-released.aspx</link><pubDate>Fri, 11 Nov 2011 08:33:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3464648</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3464648</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3464648</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/11/11/mdt-2012-beta-2-released.aspx#comments</comments><description>&lt;p&gt;The latest version of MDT is now available on Connect (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=217606"&gt;Join the MDT 2012 Beta 2 Connect program here!&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;MDT 2012 Beta 2 offers new User-Driven Installation components and extensibility for Configuration Manager 2007 and Configuration Manager 2012 as well as integration with the Microsoft Diagnostics and Recovery Toolkit (DaRT) for Lite Touch Installation remote control and diagnostics. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Key benefits include:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Full use of the capabilities provided by System Center Configuration Manager 2012 for OS deployment.&lt;/li&gt;    &lt;li&gt;Improved Lite Touch user experience and functionality.&lt;/li&gt;    &lt;li&gt;A smooth and simple upgrade process for all existing MDT users.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;New features For System Center Configuration Manager customers:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support for Configuration Manager 2012 (while still supporting Configuration Manager 2007)&lt;/li&gt;    &lt;li&gt;New User-Driven Installation components for Configuration Manager 2007 and Configuration Manager 2012     &lt;ul&gt;       &lt;li&gt;Extensible wizard and designer, additional integration with Configuration Manager to deliver a more customized OS experience, support for more imaging scenarios, and an enhanced end-user deployment experience&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Ability to migrate MDT 2012 task sequences from Configuration Manager 2007 to Configuration Manager 2012&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;New features For Lite Touch Installation:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Integration with the Microsoft Diagnostics and Recovery Toolkit (DaRT) for remote control and diagnostics&lt;/li&gt;    &lt;li&gt;New monitoring capabilities to see the progress of currently running deployments&lt;/li&gt;    &lt;li&gt;Support for deploying Windows to computers using UEFI&lt;/li&gt;    &lt;li&gt;Ability to deploy Windows 7 so that the computer will start from a new VHD file, “Deploy to VHD”&lt;/li&gt;    &lt;li&gt;Improved deployment wizard user experience&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;MDT 2012 Beta 2 will be available for beta download through to January 2012.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Already using the Microsoft Deployment Toolkit?&lt;/strong&gt; the MDT team would like to hear about your experiences. Please send comments and suggestions to &lt;a href="mailto:satfdbk@microsoft.com"&gt;satfdbk@microsoft.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Richard Smith&lt;/strong&gt;, a Principal Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3464648" width="1" height="1"&gt;</description></item><item><title>BitLocker Protection Status</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/11/04/bitlocker-protection-status.aspx</link><pubDate>Fri, 04 Nov 2011 13:55:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3463312</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3463312</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3463312</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/11/04/bitlocker-protection-status.aspx#comments</comments><description>&lt;p&gt;I have recently been working with a customer on a Windows Vista to Windows 7 migration. During the Refresh deployment task sequence, BitLocker is suspended on the C and D partitions. On occasion we had issues where by protection was not always successfully being suspended on the D partition, which caused the user to be prompted for the recovery key to access D once the deployment had completed. This led me to write a script that checks the protection status of the drives before continuing with the deployment.&lt;/p&gt;
&lt;p&gt;A brief overview of the script:-&lt;/p&gt;
&lt;p&gt;Firstly we need to use WMI to select the objects from Win32_Volume. This allows us to use the DeviceIDs to establish the protection status.&lt;/p&gt;
&lt;p&gt;The \root\CIMV2\Security\MicrosoftVolumeEncryption namespace contains the Win32_EncryptableVoulume class, from which we can select the DeviceID property and use the GetProtectionStatus method.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span face="Courier New" style="font-family: 'Courier New';"&gt;Set objWMIService = GetObject("winmgmts:\\" &amp;amp; strComputer &amp;amp; "\root\CIMV2\Security\MicrosoftVolumeEncryption") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span face="Courier New" style="font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span face="Courier New" style="font-family: 'Courier New';"&gt;Set objEncryptVol = objWMIService.Get("Win32_EncryptableVolume.DeviceID='" &amp;amp; strDeviceID &amp;amp; "'")&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span face="Courier New" style="font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span face="Courier New" style="font-family: 'Courier New';"&gt;Set objOutParams = objWMIService.ExecMethod("Win32_EncryptableVolume.DeviceID='" &amp;amp; strDeviceID &amp;amp; "'", "GetProtectionStatus")&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The protection status can then be evaluated based on the integer values returned. Windows 7 uses the following protection status values:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;middot; Protection Status 0 : Protection OFF&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;middot; Protection Status 1 : Protection ON (Unlocked)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;middot; Protection Status 2 : Protection ON (Locked)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;/em&gt;&lt;strong&gt;&lt;i&gt;Matt Bailey&lt;/i&gt;&lt;/strong&gt;&lt;em&gt;, a Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;Terms of Use&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3463312" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-46-33-12/ZTI_2D00_CheckBitLockerSuspended.zip" length="1166" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+Deployment/">Microsoft Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+Vista/">Windows Vista</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Bitlocker/">Bitlocker</category></item><item><title>ZTI MDT Debugger 1.0</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/11/04/zti-mdt-debugger-1-0.aspx</link><pubDate>Fri, 04 Nov 2011 11:34:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3463288</guid><dc:creator>Daniel Oxley</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3463288</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3463288</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/11/04/zti-mdt-debugger-1-0.aspx#comments</comments><description>&lt;p style="text-align: justify;"&gt;I've had this tool sitting in a folder on my laptop half-finished for a few months but after a particularly frustrating problem with a script in a ZTI deployment I was encouraged to finish it!&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;The original &lt;a title="MDTDebugger" href="http://blogs.technet.com/b/deploymentguys/archive/2011/05/09/mdt-debugger-2-1.aspx" target="_blank"&gt;MDTDebugger&lt;/a&gt; that I wrote is a great help for debugging tasks running in a litetouch (LTI) deployment task sequence, but it doesn't work for zerotouch (ZTI) deployments. &amp;nbsp;The reason for this is that it needs to be able to display a window on the desktop of the computer that is running the task sequence; something that Systems Center Configuration Manager actively prevents. &amp;nbsp;Well, this is no longer a problem because now there is a version of the MDTDebugger for ZTI deployments!&amp;nbsp; This tool works in the same way as the LTI version but with a key difference: you open the debugging window on a &lt;em&gt;different&lt;/em&gt; computer.&amp;nbsp; In order to achieve this, I split the tool into two parts, the first part is the launcher that runs from the task sequence, and the second is the GUI that you use to help with the debugging.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;To use this tool you'll need to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li style="text-align: justify;"&gt;Download the ZIP file that is attached to this post and extract it's contents.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Copy ZTI_MDTDebugger_Launcher.exe into the scripts folder of the MDT package you created on your Configuration Manager server&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;In the MDT Task Sequence, edit the task you wish to debug by prefixing it's command line with the following: %deployroot%\scripts\ZTI_MDTDebugger_Launcher.exe&amp;nbsp; -&amp;nbsp; an example is shown below&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Run the deployment&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="text-align: justify;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/7245.3.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/7245.3.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;When ConfigMgr reaches your task, it will run the process as normal but will then pause (all you will see on the computer is that the task is still running, it won't state that it is paused).&amp;nbsp; On a different computer, launch the file ZTI_MDTDebugger_GUI.exe, and you'll see the below window appear.&amp;nbsp; Now, to start debugging you simply enter the remote computer name (the one running the task sequence) in the text box and press "Connect".&amp;nbsp; Once connected, you will be able to debug your task in a similar way to how the LTI version of this tool works, and any failures will be captured by the debugger, preventing the task sequence from failing!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/4857.1.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/4857.1.jpg" width="486" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/2260.2.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; display: block;" border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/2260.2.jpg" width="364" height="577" /&gt;&lt;/a&gt;&lt;span style="font-size: xx-small;"&gt;The above screenshot shows an example of the tool in action&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;To be able to use the tool successfully, you will need to be running the GUI portion of the tool with an account that has full administrative rights on the remote computer.&amp;nbsp; Also, in order to be able to connect to the remote computer, you may need to temporarily disable the Windows Firewall via Control Panel.&amp;nbsp; I've tested and used this tool successfully in deployment labs and it has no issues, but if you do find a bug or issue with it please post a comment here and I'll try to fix it!&amp;nbsp; Also, if you have any feature suggestions then please also let me know.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Daniel Oxley&lt;/strong&gt;, a Senior Consultant with Microsoft Services UK&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;&lt;span style="color: #0066dd;"&gt;Terms of Use&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3463288" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-46-32-88/MDTDebugger_2D00_ZTI.zip" length="655232" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+Deployment/">Microsoft Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/SMS+2003/">SMS 2003</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Configuration+Manager/">Configuration Manager</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Utilities/">Utilities</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tools/">Tools</category></item><item><title>Deployment Mindmaps</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/09/10/deployment-mindmaps.aspx</link><pubDate>Sat, 10 Sep 2011 00:57:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3452254</guid><dc:creator>lutz seidemann</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3452254</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3452254</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/09/10/deployment-mindmaps.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;"Why deployment is so hard?", &amp;ldquo;Where can I find all related information?&amp;rdquo; What else I need to consider?&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Those or similar questions are normal during my customer projects. After getting the same questions again and again, &amp;nbsp;&lt;br /&gt;I&amp;rsquo;ve decided to create a Mindmap with all common links you need to know if you in the deployment space. &lt;br /&gt;Since few weeks I&amp;rsquo;m sharing them now with the project teams and the amount of Questions I get is drastically reduced :-}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/2577.mindmap.JPG"&gt;&lt;img border="0" alt="" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27/2577.mindmap.JPG" width="437" height="176" /&gt;&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Lutz Seidemann&lt;/strong&gt;, a Architect with Microsoft Services - APAC.&lt;i&gt;&lt;/i&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3452254" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-45-22-54/MINDMAPS.zip" length="3365154" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Microsoft+Deployment/">Microsoft Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Configuration+Manager/">Configuration Manager</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Utilities/">Utilities</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/The+Guys/">The Guys</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/LiteTouch/">LiteTouch</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Office/">Office</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category></item><item><title>Co-existing PXE Boot for MDT standalone Image Capture &amp; ConfigMgr Image Deployment Environments</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/09/07/co-existing-pxe-boot-for-mdt-standalone-image-capture-amp-configmgr-image-deployment-environments.aspx</link><pubDate>Wed, 07 Sep 2011 15:10:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3451657</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3451657</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3451657</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/09/07/co-existing-pxe-boot-for-mdt-standalone-image-capture-amp-configmgr-image-deployment-environments.aspx#comments</comments><description>&lt;p&gt;The Microsoft Deployment Toolkit is great for building and capturing your reference images because allows you to use the copyprofile technique to configure user settings. System Center Configuration Manager 2007 is great for Zero Touch Deployments of you enterprise image. But what if you have a lab environment with one server and you want to have PXE boot work for both? Co-location of Image Engineering and Image Deployment environments usually only occurs in a lab environment on an isolated network. Here’s how to switch machines to boot from one or the other:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install the PXE service point role on the WDS Server.     &lt;br /&gt; &lt;/li&gt;    &lt;li&gt;Configure the WDS Server to respond only to known clients as below:&amp;#160; &lt;br /&gt;      &lt;br /&gt; &lt;code&gt;WDSUTIL /Set-Server /AnswerClients:Known&lt;/code&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;You can setup both the LTI and ZTI scenarios to use the same WDS server to PXE boot by changing the provider order in the registry : &lt;strong&gt;       &lt;br /&gt;        &lt;br /&gt;HKLM\System\CurrentControlSet\Services\WDSServer\Providers\WDSPXE\ProvidersOrder&lt;/strong&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0876.image_5F00_558A59F0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3426.image_5F00_thumb_5F00_21B23DD2.png" width="569" height="424" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Restart the WDS Service.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If the DHCP server is located on a different box – you can do two things:      &lt;br /&gt;a) Authorize the WDS Server in DHCP and set up an IP Helper to the WDS Server       &lt;br /&gt;b) Set up the DHCP Scope Options to redirect to the WDS Server as below:       &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2746.image_5F00_3BE28129.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2330.image_5F00_thumb_5F00_54721E79.png" width="220" height="244" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Clients will PXE boot to the ConfigMgr PXE Service Point (ZTI) unless configured otherwise. To configure a client to PXE boot to the Image Build environment (LTI) use the following command to add the reference machine to the WDS database:      &lt;br /&gt;&lt;strong&gt;wdsutil /add-device /device:&amp;lt;computername&amp;gt; /ID:00-00-00-00-00-00&amp;#160; &lt;br /&gt;&lt;/strong&gt;(where 00-00-00-00-00-00 is the Mac address of the reference machine)      &lt;br /&gt; &lt;/li&gt;    &lt;li&gt;To re-configure clients to PXE boot to the ConfigMgr service Point (ZTI) remove the machine account from the ConfigMgr DB or from Active Directory. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;(It is not recommended to build your reference images attached to the enterprise network as the reference operating system task sequence still needs to patch the deployment with the latest updates during the process.&lt;/p&gt;      &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Aly Shivji&lt;/strong&gt;, an Architect with the Datacenter &amp;amp; Private Cloud Center of Excellence in Microsoft Services&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3451657" width="1" height="1"&gt;</description></item><item><title>Adding Configurations to the Applications Pane using AppDescriptors</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/09/02/adding-configurations-to-the-applications-pane-using-appdescriptors.aspx</link><pubDate>Fri, 02 Sep 2011 16:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3450874</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3450874</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3450874</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/09/02/adding-configurations-to-the-applications-pane-using-appdescriptors.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Often times when you are presenting applications to install in the LiteTouch wizard of MDT, you may want to present configurations for each of these applications. These could include installing application features, configuring parameters like computer name, language or parameters that link to other computers.&lt;/p&gt;
&lt;p&gt;Below is an example of Office and Windows 7 Configurations added to the Applications pane&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7080.AppDescriptorDemo_5F00_355A7BE8.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="AppDescriptorDemo" border="0" alt="AppDescriptorDemo" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5342.AppDescriptorDemo_5F00_thumb_5F00_172CBE34.jpg" width="512" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Each of these configurations will become Task Sequence variables which you can use to control the task sequence or leverage in your scripts. To express these configurations, you can use an XML file called an &amp;ldquo;AppDescriptor&amp;rdquo; as below:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3683.image_5F00_3B71A2B6.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8176.image_5F00_thumb_5F00_5D8962A2.png" width="828" height="176" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2781.image_5F00_1049434A.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2210.image_5F00_thumb_5F00_2F0F915B.png" width="834" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then edit the LiteTouch wizard to call a script when rendering the Applications Pane &amp;ndash; this script will apply an XSL transform to your AppDescriptor and format it as HTML for the wizard.&lt;/p&gt;
&lt;p&gt;To make all this work:&lt;/p&gt;
&lt;p&gt;1. Download the scripts below. &lt;br /&gt;2. Make a backup of the Control and Scripts folders in your Deployment Share &lt;br /&gt;3. Copy the downloaded files to your Deployment Share (Control to Control folder, Scripts to Scripts folder). &lt;br /&gt;4. You can then add configurations by following the schema above. &lt;br /&gt;5. You can also change the style of the HTML by editing formatter:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6318.image_5F00_2E933899.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6318.image_5F00_thumb_5F00_7FCD7FF6.png" width="484" height="96" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Aly Shivji&lt;/strong&gt;, an Architect with the Datacenter &amp;amp; Private Cloud Center of Excellence in Microsoft Services&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3450874" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-45-08-74/AppDescriptors.zip" length="66969" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/LiteTouch/">LiteTouch</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category></item><item><title>Getting more into DVD Media Based Deployment</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/09/02/getting-more-into-dvd-media-based-deployment.aspx</link><pubDate>Fri, 02 Sep 2011 10:38:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3450824</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3450824</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3450824</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/09/02/getting-more-into-dvd-media-based-deployment.aspx#comments</comments><description>&lt;p&gt;One of the great features of MDT 2010/2012 is the ability to create a media based deployment&amp;#160; – this media based deployment can be placed on a USB based memory device (HDD or Fob) or onto a DVD. This allows the MDT based deployment to run from this removable media which is great for badly connected environments or portable build requirements.&lt;/p&gt;  &lt;p&gt;Many customers I work with like to use DVD media based deployment as MDT 2012/2012&amp;#160; automatically creates a .ISO file that can be burnt to DVD and in most cases this gives them up to 8.5 GB on a dual layer DVD – it’s also a cheap deployment mechanism. However there are some occasions where this amount of DVD space just isn't enough and a combination of image size and MDT distribution share content pushes the requirement for storage over the limit of the DVD. You could at this point switch to using USB based devices or you can read on and use the solution discussed in this post.&lt;/p&gt;  &lt;p&gt;The DVD Exchange tool is an application designed to extend the DVD based media deployment to a second DVD. Before you get too excited – this doesn't mean that you can split the ISO created by MDT 2010/2012 across two DVDs – but instead allows you to shift the application install source (which is usually in the applications folder of the MDT distribution share and which can be a large amount of data) from the MDT generated media deployment (which we will call DVD1) to a second DVD (which we will call DVD2). DVD2 can then be used to copy the application source to a temporary location on the local hard disk during task sequence execution&amp;#160; – where you task sequence can then install the applications from (instead of from the applications folder on DVD1) – which in turn frees up space on DVD1 for bigger images or more drivers.&lt;/p&gt;  &lt;p&gt;To achieve this a number of challenges need to be overcome:&lt;/p&gt;  &lt;p&gt;Challenge 1 - we need to pause the task sequence and eject the MDT media distribution (DVD1) from which the task sequence is running&lt;/p&gt;  &lt;p&gt;Challenge 2&amp;#160; -we need to manage the insertion of DVD2, run a script to copy the contents of DVD2 to a local folder on the hard disk&lt;/p&gt;  &lt;p&gt;Challenge 3 - when the copy of data from DVD2 has taken place, we need to prompt for the re-insertion of DVD1 so that the task sequence can continue&lt;/p&gt;  &lt;p&gt;The idea behind the DVD Exchange tool is that it allows you to create an MDT media distribution (DVD1) to which you then add a task to your task sequence to run the DVDExchange.hta (attached to this post). This HTA handles the ejection of DVD1 (the MDT media distribution) and prompts for DVD2 (pausing the task sequence). When DVD2 is inserted, DVDExchange.hta runs a script that you place on the DVD2 called &lt;strong&gt;cache.vbs&lt;/strong&gt; (attached to this post) which copies all of the content from DVD2 to a cache folder on the local hard disk (&lt;strong&gt;C:\DVDCache&lt;/strong&gt;). When this is complete the DVDExchange.hta then prompts for DVD1 to be re-inserted and the task sequence then continues. You can then add tasks (after the DVD exchange has run)&amp;#160; to install applications from the newly created data that was copied from DVD2 to &lt;strong&gt;C:\DVDCache&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Steps for use:&lt;/p&gt;  &lt;p&gt;1.&amp;#160; Create DVD2 (you can use the in-built DVD burning software provided with Windows 7 or your favourite DVD burning software – the DVD does not need to be bootable). Add your required application packages (these would usually be application install folders with the source for each application contained within each folder). Place the &lt;strong&gt;cache.vbs&lt;/strong&gt; and &lt;strong&gt;DVD2.ID&lt;/strong&gt; files (from the &lt;strong&gt;ADD TO ROOT OF DVD 2&lt;/strong&gt; folder in the zip file attached to this post) in to the root along with you application source folders. The root of DVD2 should look something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6406.image_5F00_408D086D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8737.image_5F00_thumb_5F00_4A05C6E3.png" width="329" height="620" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;cache.vbs&lt;/strong&gt; file (which is run by DVDExchange.hta) will copy all folders and data from the DVD2 to a folder on drive C: called&lt;strong&gt; C:\DVDCache&lt;/strong&gt; and will then hide this folder.&lt;/p&gt;  &lt;p&gt;2.&amp;#160; Copy the &lt;strong&gt;DVDExchange.hta&lt;/strong&gt; and the &lt;strong&gt;Images folder&lt;/strong&gt; (from the &lt;strong&gt;COPY TO MDT SCRIPTS FOLDER&lt;/strong&gt; in the zip file attached to this post) to your &lt;strong&gt;MDT Distribution Share\Scripts&lt;/strong&gt; folder. Note the &lt;strong&gt;DVDExchange.hta &lt;/strong&gt;file and the &lt;strong&gt;Images folder&lt;/strong&gt; need to be together&lt;/p&gt;  &lt;p&gt;3.&amp;#160; Add a task to your task sequence to run the &lt;strong&gt;DVDExchange.hta&lt;/strong&gt; at the point at which you want to create the cache (this is usually towards the start of the System Restore phase in the task sequence). You can achieve this by adding a &lt;strong&gt;RUN COMMAND LINE&lt;/strong&gt; task to run &lt;strong&gt;%ScriptRoot%\DVDExchange.hta &lt;/strong&gt;or &lt;strong&gt;%DeployRoot%\Scripts\DVDExchange.hta&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0638.DVDExchange_2D00_2_5F00_1CA43113.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DVDExchange 2" border="0" alt="DVDExchange 2" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7673.DVDExchange_2D00_2_5F00_thumb_5F00_13D428C7.jpg" width="660" height="587" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. After the task that you created to run the &lt;strong&gt;DVDExchange.hta&lt;/strong&gt;, add additional tasks to your task sequence to install the applications that will now be available in the &lt;strong&gt;C:\DVDCache&lt;/strong&gt; folder (using this folder as your root path)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7587.DVDExchange_2D00_3_5F00_0B04207B.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DVDExchange 3" border="0" alt="DVDExchange 3" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3884.DVDExchange_2D00_3_5F00_thumb_5F00_10065E2A.jpg" width="666" height="592" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You may want to consider adding a task to the end of the task sequence to delete the &lt;strong&gt;C:\DVDCache&lt;/strong&gt; folder if you don't want the source to remain on the local hard disk.&lt;/p&gt;  &lt;p&gt;5. Create a Media deployment folder in MDT by using the &lt;strong&gt;New Media&lt;/strong&gt; menu option on the &lt;strong&gt;Media &lt;/strong&gt;node in the &lt;strong&gt;Advanced Configuration&lt;/strong&gt; node of the MDT Workbench. Run through the wizard to create a staging folder for the media deployment. Note – this does not actually create the media deployment at this time as you need to run step 6 to copy the files and create the .ISO file.&lt;/p&gt;  &lt;p&gt;6. When the Media deployment folder has been created place the tag file &lt;strong&gt;DVD1.ID&lt;/strong&gt; (from the &lt;strong&gt;ADD TO ROOT OF DVD 1&lt;/strong&gt; folder in the zip file attached) into the &lt;strong&gt;CONTENT&lt;/strong&gt; folder&amp;#160; – then return to the MDT Workbench and right click the Media Deployment Share (it is shown in the MDT Workbench \ &amp;lt;Your_Distribution_Share&amp;gt; \ Advanced Configuration \ Media node as a CD icon and by default is called MEDIA001) and choose &lt;strong&gt;Update Media Content&lt;/strong&gt; from the right-click context menu) – this will copy all of your files from your working distribution share to the media deployment folder and will create an .ISO file based on this folder structure - which can be burned to DVD – this will be DVD1 – when you have burned the .ISO file generated by MDT to a DVD, the root of DVD1 should look like this (notice the &lt;strong&gt;DVD1.ID&lt;/strong&gt; file is in the root of the DVD because you added it to the &lt;strong&gt;CONTENT&lt;/strong&gt; folder in the Media deployment folder):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6082.DVDExchange5_5F00_3523A896.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DVDExchange5" border="0" alt="DVDExchange5" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1321.DVDExchange5_5F00_thumb_5F00_6642E336.jpg" width="228" height="310" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can now run the installation by starting your build from DVD1 – at the point in the task sequence where the &lt;strong&gt;DVDExchange.hta&lt;/strong&gt; runs – the application will load.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2705.DVDExchange1_5F00_05195715.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DVDExchange1" border="0" alt="DVDExchange1" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0257.DVDExchange1_5F00_thumb_5F00_634D7E83.jpg" width="669" height="570" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will be prompted to swap DVDs (DVD1 &amp;gt; DVD2 &amp;gt; DVD1) while &lt;strong&gt;DVDExchange.hta&lt;/strong&gt; will manage:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Pausing the task sequence &lt;/li&gt;    &lt;li&gt;Identifying the DVDs (from their DVDx.ID files) &lt;/li&gt;    &lt;li&gt;Ejecting the DVDs &lt;/li&gt;    &lt;li&gt;Running the cache.vbs script to copy all data from DVD2 to C:\DVDCache &lt;/li&gt;    &lt;li&gt;Logging actions to C:\MININT\SMSOSD\OSDLOGS\DVDExchange.log &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;DVDExchange.hta&lt;/strong&gt; will then exit when DVD1 has been re-inserted and the task sequence will continue&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Richard Smith&lt;/strong&gt;, a Principal Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3450824" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-45-08-24/DVDExchange.zip" length="97670" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Utilities/">Utilities</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/LiteTouch/">LiteTouch</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category></item><item><title>Replace Scenario alternative for USMT Migration</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/09/01/replace-scenario-alternative-for-usmt-migration.aspx</link><pubDate>Thu, 01 Sep 2011 13:44:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3450613</guid><dc:creator>Andres Springborn</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3450613</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3450613</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/09/01/replace-scenario-alternative-for-usmt-migration.aspx#comments</comments><description>&lt;p&gt;While USMT 4.0 in a Refresh Scenario provides some great advance by using Hardlinking in a Replace Scenario customers still face multiple operational challenges and potential capital costs during large scale deployments because user data needs to make its way from the legacy computer to the new computer.&amp;nbsp;&amp;nbsp; Managing that data and its transfer can be an expensive task.&lt;/p&gt;
&lt;p&gt;System Center Configuration Manager does provide some help in Replace Scenarios with their State Migration Point role, but with that approach comes several operational and hardware requirements.&amp;nbsp; In the short term, when managing an enterprise wide migration of a desktop operating system, as many customers are facing with Windows 7, the state migration point can potentially become a bottleneck during the migration.&amp;nbsp; There is a need for more storage capacity for USMT Data on the server.&amp;nbsp; Without it only so many migrations can be run at any one time.&amp;nbsp; There may be additional disk subsystem IO performance requirements as well which if not addressed could slow capture and restore of USMT data.&amp;nbsp; The data also needs to be transferred twice over the network which costs additional time and could make the NIC of the SMP server a potential bottleneck.&amp;nbsp; In remote offices transferring USMT data over WAN links would also potentially slow down network links impacting other business functions and increasing the time a given migrations may take.&amp;nbsp; Managing and tracking all of these risks is one more thing IT admins have to take into account for a migration.&lt;/p&gt;
&lt;p&gt;Some alternative approaches that enterprises use is a more manual method where a technician uses either Easy Transfer or USMT&amp;rsquo;s core tools, Scanstate.exe and Loadstate.exe, with a USB hard drive/stick to ports the user data from the legacy computer to the new one.&amp;nbsp; Those approaches do work, though operationally they can be very labor intensive and thus does not scale well when an organization is facing hundreds if not thousands of systems to migrate.&lt;/p&gt;
&lt;p&gt;There is a third approach to consider.&amp;nbsp; Both Scanstate.exe and Loadstate.exe, the core utilities for USMT have input parameters for where to save and restore data.&amp;nbsp;&amp;nbsp; Using that functionality, data could be captured from the legacy OS and saved directly to the new computer over the network.&amp;nbsp; The benefits to this are numerous.&amp;nbsp; It would defuse the network and Disk IO load across many more computers and each of their NICS and hard drives thus avoiding potential bottlenecks of a centralized server.&amp;nbsp; USMT data would only have to be moved once across the network.&amp;nbsp; The process could still be zero touch without the need for any manual processes beyond delivering the new computer to the end user&amp;rsquo;s desk.&amp;nbsp; There would be no need to purchase additional storage or manage it for state migration points.&amp;nbsp; This isn&amp;rsquo;t to say there are no costs associated with the approach, but that the engineering and infrastructure required to make it happen should be weighed carefully against other options.&amp;nbsp; For some organizations this approach does make sense and if so you&amp;rsquo;ll be interested in the processes I have outlined below to make this work.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please note the steps below are very SCCM centric as I mostly work with large enterprise customers, but they could be leveraged for Lite Touch deployments as well.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll break out the tasks to get this working into 4 sections:&lt;/p&gt;
&lt;p&gt;Section 1:&amp;nbsp; Prepare for the build&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Operationally this is the most challenging step after the engineering is complete.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Environmental/Infrastructure Preparations Requirements:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;A build workbench/build center with enough network ports to support the number of systems you want to deploy in a given time is a hard requirement.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;- This process is dependent on having both the legacy and new computer on the network at the same time.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;As both computers would be on the network concurrently, validate your DHCP scopes have enough leases to support this.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;Power and Cooling for the workbench/build center must also be taken into consideration.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;In order for the XP system to connect to the new computer, the DNS infrastructure needs to be up to date otherwise the legacy computer will not connect properly to the new computer.&amp;nbsp; In fact you&amp;rsquo;ll see in the steps below that I tend to take a &amp;ldquo;trust by verify&amp;rdquo; approach to confirming I&amp;rsquo;m connecting to the correct computer.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Associating the new and legacy computer:&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Each time a computer is deployed in a Replace Scenario build the relationship to the new computer must be determined and defined.&amp;nbsp; This work is required regardless of whether a State Migration Point is used (thus required Computer Association) or a manual approach is taken (take USB Storage Device from computer A to computer B).&amp;nbsp; This work isn&amp;rsquo;t new but how it done is bit different than the other approaches.&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;The key to redirecting where USMT captures data and where it restores it from is based on the Variable &lt;strong&gt;OSDStateStorePath&lt;/strong&gt; which both Capture and Restore steps in SCCM Task Sequences can leverage to determine where to save and restore USMT Data. The variable is also used by MDT&amp;rsquo;s &lt;strong&gt;ZTIUserState.wsf&lt;/strong&gt; and &lt;strong&gt;ZTIBackup.wsf&lt;/strong&gt; scripts so WIM backups and Lite touch deployments can leverage it as well.&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Example for the additional steps describe below:&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Let&amp;rsquo;s say you&amp;rsquo;ve determined a computer named &amp;ldquo;Desktop1XP&amp;rdquo; will be your legacy computer to be replaced by a new computer called &amp;ldquo;Laptop1-W7&amp;rdquo;.&amp;nbsp; You will now need to setup computer variables.&amp;nbsp; This could be done via an MDT Database (thus getting pulled in via a Gather step) or in SCCM by a computer variable put directly on the computer.&amp;nbsp; Mass importation of variables/computer creation is possible via the SCCM SDK, but that is a topic probably better left for another blog posting.&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;For Laptop1-W7 a computer variable named &lt;strong&gt;LegacyComputer&lt;/strong&gt; with a value of &amp;ldquo;Desktop1XP&amp;rdquo; should be created.&amp;nbsp; This will be leveraged at multiple points for validation and preparation purposes.&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;For Desktop1XP a computer variable named &lt;strong&gt;NewComputer &lt;/strong&gt;with a value of &amp;ldquo;Laptop1-W7&amp;rdquo; should be created.&amp;nbsp; This will be used to send USMT data to the new computer.&lt;/p&gt;
&lt;p&gt;Section 2:&amp;nbsp; Update your build computer task sequence&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;In your Deploy Windows 7 task sequence at the end of the build process, or as close to the end as possible add a group step for the new steps to prepare the new computer to accept USMT data.&amp;nbsp; This should be at the end of the build because if the build fails and you are planning to rebuild the system you don&amp;rsquo;t want the capture process to potentially see the computer on the network and start the capture to a system you are planning to rebuild anyway or multiple additional reboots for things like application install requirements will occur before the build is complete which could break your USMT capture.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Steps to add:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 1:&amp;nbsp; Run Command Line Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;cmd.exe /c md c:\USMT&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Create the Directory to keep the USMT Data&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 2:&amp;nbsp; Run Command Line Step:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;net share USMT$=c:\USMT /grant:%DomainName%\%LegacyComputer%$,Change&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Set Permissions so only the legacy computer account has rights to access the share.&amp;nbsp; Note this assumes the computer is domain joined.&amp;nbsp; If it isn&amp;rsquo;t then this will fail.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 3:&amp;nbsp; Run Command Line Step:&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;cmd /c copy %_SMSTSLogPath%\smsts.log c:\USMT\%OSDComputerName%-%LegacyComputer%.log&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational: This is an inelegant solution to providing for validation checking and allows techs to easily see the computer relationship without SCCM access for troubleshooting.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Other considerations:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;If the new computers have multiple hard drives you may want to configure your build scripts to put the user data on a drive other than C.&amp;nbsp; If that is the case Section 3 and 4 will need updates to support that as well.&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;You may want to add additional permissions to the share so that administrator can access the share to testing/troubleshooting purposes.&lt;/p&gt;
&lt;p&gt;Section 3:&amp;nbsp; Update your Capture USMT task sequence&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;There are a few steps you would need to add to the task sequence you use to capture USMT data from the legacy computer. &amp;nbsp;These steps are both for validation and redirecting USMT to save directly to the new computer.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Steps to add at the top of your task sequence:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 1:&amp;nbsp; Set Variable Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;OSDStateStorePath=\\%NewComputer%\USMT$&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Set Variable for &lt;strong&gt;OSDStateStorePath&lt;/strong&gt; to be used USMT Capture Process and validation step below.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 2:&amp;nbsp; Run Command Line Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp;&lt;strong&gt; cmd /c copy %_SMSTSLogPath%\smsts.log %OSDStateStorePath%\2-USMT-Validation_successful_%_SMSTSMachineName%.log&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Validate that new computer is on the network, name resolution is working correctly and permissions were setup correctly on the new system.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Steps to add after the USMT Capture steps:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 1:&amp;nbsp; Run Command Line Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;cmd /c copy %_SMSTSLogPath%\scanstate.log %OSDStateStorePath%\scanstate-%OSDComputerName%.log&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Puts the scanstate log file onto the new computer for future review and as a marker that the USMT capture has completed successfully.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Other considerations:&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Sometimes to ensure better results for USMT captures the following additional steps after the validation step and before USMT Capture are completed should be run:&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;Run Command Line Step:&amp;nbsp; &lt;strong&gt;FSUTIL dirty set c:&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;Reboot to OS&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;The &lt;strong&gt;FSUtil&lt;/strong&gt; step tells the OS to do a chkdsk on reboot.&amp;nbsp; By doing this and rebooting the computer, issues which can cause Scanstate failures/skipping of files such as memory fragmentation, fix disk corruption issues and applications locking files are avoided.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Section 4: Updates for USMT Restore&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;The following steps can be added into the build under two different methods:&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;Run as a separate task sequence that just does USMT Restore steps.&amp;nbsp; I generally create this by taking a standard MDT build template task sequence and removing all the sections above State Restore and removing most steps within State Restore which are not related to USMT (minus things like Gather and Use Toolkit Package).&amp;nbsp;This can be beneficial if as part of your deployment process you build a lot of computers ahead of time and want to put systems back on the network closer to the migration time to get USMT data.&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;-&amp;nbsp;As part of the build task sequence if you can code a loop waiting for the existence of the scanstate-%OSDComputerName%.log file you could eliminate the need for another task sequence entirely.&amp;nbsp; I haven&amp;rsquo;t provided code for this, but it is very possible.&amp;nbsp; Note:&amp;nbsp; for this approach to work the new computer would need to stay on from the time of build to the after the capture and the task sequence should be set to unknown/unlimited run time (so it will not time out).&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Steps to add before the USMT Restore Task Sequence Steps:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 1:&amp;nbsp; Run Command Line Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;cmd.exe /c copy c:\usmt\scanstate-%LegacyComputer%.log c:\usmt\starting_loadstate.log&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Validates that USMT Capture has completed successfully.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 2:&amp;nbsp; Set Variable Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;OSDStateStorePath=c:\USMT&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; Set Variable for &lt;strong&gt;OSDStateStorePath&lt;/strong&gt; to be used USMT restore process&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Steps to add after the USMT Restore Task Sequence Steps:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;Step 1:&amp;nbsp; Run Command Line Step&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Command:&amp;nbsp; &lt;strong&gt;net share usmt$ /Delete&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 60px;"&gt;Rational:&amp;nbsp; remove share no longer needed.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;With all of this in place USMT data in a Replace scenario can be done without a State Migration Point or manual processing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;This post was contributed by &amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&lt;i&gt;Andres Springborn,&lt;/i&gt; a&amp;nbsp;Senior Consultant&amp;nbsp;with Microsoft Services - U.S. West Region&lt;i&gt;.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3450613" width="1" height="1"&gt;</description></item><item><title>Querying MDT/ConfigMgr Logs in MDT Scripts</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/29/querying-mdt-configmgr-logs-in-mdt-scripts.aspx</link><pubDate>Mon, 29 Aug 2011 21:06:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3449817</guid><dc:creator>Michael Murgolo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3449817</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3449817</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/29/querying-mdt-configmgr-logs-in-mdt-scripts.aspx#comments</comments><description>&lt;p&gt;The Lite Touch Deployment Process end in a Summary Wizard pane that displays any warning or errors that were logged in the MDT master log (BDD.log).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6545.clip_5F00_image001_5F00_228AB6B2.jpg" target="_blank"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5481.clip_5F00_image001_5F00_thumb_5F00_55E67A0E.jpg" width="244" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a great feature but customers have pointed out that this summary is not preserved after the Summary Wizard is closed.&amp;nbsp; If you accidentally Finish before reading everything, you now have to open the log and start trawling through it.&lt;/p&gt;
&lt;p&gt;So what I was initially going to do to preserve this information was to change &lt;strong&gt;Summary_scripts.vbs&lt;/strong&gt; (the part of the Summary Wizard code that does the work) to write the same information to a text file.&amp;nbsp; However, as I pondered this I realized that there was no general purpose function for querying logs in SMS format.&amp;nbsp; So instead of just changing &lt;strong&gt;Summary_scripts.vbs&lt;/strong&gt; I decided to create such query functionality and then use that.&lt;/p&gt;
&lt;p&gt;The log format used by MDT and the ConfigMgr client/task sequencer has been around since Microsoft Systems Management Server.&amp;nbsp; It is an XML-like format with entries that look like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;&amp;lt;![LOG[Successfully finalized logs to E:\SMSTSLog]LOG]!&amp;gt;&amp;lt;time="06:20:42.077+240" date="05-23-2009" component="TSBootShell" context="" type="1" thread="908" file="tslogging.cpp:1635"&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The actual message text is found inside the &amp;lt;![LOG[&amp;hellip;]LOG]!&amp;gt; tags and the other information about the entry (time, date, component, type, etc.) is found in XML-like attribute entries within the second &amp;lt;&amp;hellip;&amp;gt; braces.&amp;nbsp; The message text may be a single line or multiple lines of text.&amp;nbsp; The closing ]LOG]!&amp;gt; and the attributes block will always be on the last line of the entry.&lt;/p&gt;
&lt;p&gt;Since &lt;strong&gt;Summary_scripts.vbs&lt;/strong&gt; was already doing part of the parsing of this log format, I used that code as a starting point.&amp;nbsp; The result is a new VBScript class script, &lt;strong&gt;MDTQuerySMSLog.vbs&lt;/strong&gt;, to use with MDT scripts.&amp;nbsp; This &lt;em&gt;SmsLog&lt;/em&gt; class in the script has three public methods.&amp;nbsp; The most useful is &lt;em&gt;ConvertToXmlObject&lt;/em&gt;.&amp;nbsp; This method converts the contents of an SMS-format log file into an XML object representation.&amp;nbsp; This allows you to query the contents using standard XPath queries.&amp;nbsp; For example, a log consisting of the single entry below:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;&amp;lt;![LOG[Property LogPath is now = C:\MININT\SMSOSD\OSDLOGS]LOG]!&amp;gt;&amp;lt;time="10:24:21.000+000" date="06-04-2010" component="ZTIGather" context="" type="1" thread="" file="ZTIGather"&amp;gt;&lt;/span&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;will be converted into the following XML data:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt; &lt;br /&gt;&amp;lt;LogEntries&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;Log id="1" line="1" time="10:24:21.000+000" date="06-04-2010" component="ZTIGather" context="" type="1" thread="" file="ZTIGather"&amp;gt;Property LogPath is now = C:\MININT\SMSOSD\OSDLOGS&amp;lt;/Log&amp;gt; &lt;br /&gt;&amp;lt;/LogEntries&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Every log entry is turned into an XML &lt;em&gt;Log&lt;/em&gt; node where the message text is the node text and the entry attributes are the node attributes.&amp;nbsp; There are also two additional attributes added: &lt;em&gt;id&lt;/em&gt; which is the log entry number from the original log file and &lt;em&gt;line&lt;/em&gt; which is the line number on which the entry started in the original log file.&lt;/p&gt;
&lt;p&gt;Another method, &lt;em&gt;ConvertToArray&lt;/em&gt;, converts the log contents to a two dimensional array where each row in the array contains the same attributes and message text that the XML version contains.&amp;nbsp; The last method is &lt;em&gt;LogDateTimeToVBDate&lt;/em&gt; which takes the SMS log date and time attributes and returns a VBScript Date value.&lt;/p&gt;
&lt;p&gt;To illustrate how to use this class I&amp;rsquo;ve included a sample script, &lt;strong&gt;MDTErrorWarningSummary.wsf&lt;/strong&gt;, that uses &lt;em&gt;ConvertToXmlObject, &lt;em&gt;LogDateTimeToVBDate&lt;/em&gt;&amp;nbsp;&lt;/em&gt;and XPath queries to create a more detailed version of the error and warning entries (type="3" and type="2" repectively) summary that the Summary Wizard creates. It creates this summary in &lt;strong&gt;ErrorWarningSummary.log&lt;/strong&gt; in the MDT logs folder.&amp;nbsp; The contents looks like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;Total number of entries logged in C:\MININT\SMSOSD\OSDLOGS\BDD.log: 48 &lt;br /&gt;Number of errors logged in C:\MININT\SMSOSD\OSDLOGS\BDD.log: 1 &lt;br /&gt;Number of warnings logged in C:\MININT\SMSOSD\OSDLOGS\BDD.log: 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;Warning &lt;br /&gt;======= &lt;br /&gt;Log Entry: 3 &lt;br /&gt;Log Entry stating line number: 3 &lt;br /&gt;Date/Time: 8/2/2011 2:16:18 PM &lt;br /&gt;Component: ZTIMyComponent &lt;br /&gt;Message: This is a warning message.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;" size="2" face="Courier New"&gt;Error &lt;br /&gt;===== &lt;br /&gt;Log Entry: 9 &lt;br /&gt;Log Entry stating line number: 9 &lt;br /&gt;Date/Time: 8/2/2011 2:16:18 PM &lt;br /&gt;Component: ZTIMyComponent &lt;br /&gt;Message: This is an error message.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can launch this script at the end of the task sequence or add an oShell.Run call to Summary_scripts.vbs to launch the script.&lt;/p&gt;
&lt;p&gt;If you use this class with your own custom script, be aware that &lt;em&gt;ConvertToXmlObject&lt;/em&gt; creates a point in time capture of the log contents.&amp;nbsp; So if you wanted to use this for something like repeatedly checking a log for a particular message as the log changes, you would need to call &lt;em&gt;ConvertToXmlObject&lt;/em&gt; in each iteration of you loop to recapture the full contents.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;b&gt;Michael Murgolo,&lt;/b&gt; a Senior Consultant with Microsoft Services - U.S. East Region.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3449817" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-44-98-17/MDTQuerySMSLog.zip" length="6557" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category></item><item><title>Back to basics #6 – Application Compatability: Things You Shouldn't Do But Are Tempted To</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/23/back-to-basics-6-application-compatability-things-you-shouldn-t-do-but-are-tempted-to.aspx</link><pubDate>Tue, 23 Aug 2011 08:40:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448581</guid><dc:creator>Daniel Oxley</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3448581</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3448581</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/23/back-to-basics-6-application-compatability-things-you-shouldn-t-do-but-are-tempted-to.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;I can't profess to be an Application Compatibility guru like &lt;a title="Chris Jackson" href="http://www.appcompatguy.com" target="_blank"&gt;Chris Jackson&lt;/a&gt; or &lt;a title="Aaron Margosis" href="http://blogs.msdn.com/b/aaron_margosis" target="_blank"&gt;Aaron Margosis&lt;/a&gt;, but I do work on a lot of deployment projects where I am tasked with helping the client with this area.&amp;nbsp; As such, I have compiled a list of the top 5 most common Application Compatibility mistakes/not-recommended practises &lt;em&gt;that I see&lt;/em&gt; out in the field; this list is likely to differ from the next guy though :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;Most of the items in this list are actually quick-fixes that people think are the result of one (or a combination) of the following:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;It seemed a good idea at the time&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;Not understanding completely the problem, or the future consequences that the great "solution" will have&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;The desperate need for a quick fix&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;If you know of any other common ones, feel free to add them in the comments section!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Make users local administrator on their computer in order to eliminate errors associated with a lack of permissions&lt;/strong&gt; &amp;ndash; Tracking down exactly what permissions are required can be a complex task to complete, but is always a better option to making users administrators on a computer.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Disable User Account Control (UAC)&lt;/strong&gt; &amp;ndash; The UAC can be a valuable tool for protecting a computer from unwanted changes. However, it is often disabled because it is perceived as being too verbose. But, if configured correctly, this verbosity can be reduced without compromising security.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Open up ACLs on Folders and Registry Broadly&lt;/strong&gt; &amp;ndash; This is a valid solution to an application compatibility problem if executed correctly, by only making changes where absolutely necessary. However, ACL changes are often made much higher up the tree, and then applied on all sub-objects. This grants a user too many permissions on what might be files or registry keys that should be protected.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Disable Internet Explorer Protected Mode&lt;/strong&gt; &amp;ndash; One of the hardest compatibility problems to solve is when an application requires a specific version of a browser to work, and is not compatible with later versions; usually because security is stricter in the later version of the browser than the application expects. A common approach to alleviating this issue is to lower the level of security in the browser, commonly by disabling the Protected Mode in Internet Explorer or using the Internet Zones feature. The Protected Mode feature of Internet Explorer can provide a user with a high level of protection from all the "bad stuff" lurking out on the Internet, and should be correctly configured rather than simply disabled.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Software add-ins/plug-ins are often overlooked&lt;/strong&gt; &amp;ndash; These components are equally as important as the rest of the applications, but are commonly overlooked. Not considering and evaluating these components at the right stage can result in a situation where a user has been deployed a newer version of an application, such as Microsoft Office 2010, but subsequently discovers that a business critical add-in they need/require/use in Office does not work in Office 2010, leaving them stranded!&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;There are two tools though which are indispensable when beginning any Application Compatibility assessment, the &lt;a title="Microsoft Application Compatability Toolkit" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=7352" target="_blank"&gt;Microsoft Application Compatibility Toolkit&lt;/a&gt;, and the &lt;a title="Microsoft Assessment and Planning Toolkit" href="http://technet.microsoft.com/en-us/library/bb977556.aspx" target="_blank"&gt;Microsoft Assessment and Planning Toolkit&lt;/a&gt;.&amp;nbsp; These tools are extremely helpful in getting started and working out the best approach to a problem.&amp;nbsp; Also be sure to check out the &lt;a title="Application Compatability" href="http://technet.microsoft.com/en-us/windows/aa905066.aspx" target="_blank"&gt;Application Compatibility&lt;/a&gt; section of TechNet.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;I recognise that pointing out the problems but not giving any solution to them is easy to do.&amp;nbsp; I am unable though to provide any alternatives to these quick-fixes in a single blog post as every single Application Compatibility problem is unique, and the solution to it will also be unique and personalised.&amp;nbsp; Some solutions can take extremely long times to identify and then develop, and sometimes it is also just down to a little luck.&amp;nbsp; The best approach in my opinion is that, if you really don't understand the problem or the solution, then get help; don't apply a heavy-handed solution such as those mentioned above because you &lt;em&gt;will&lt;/em&gt; be creating a future problem for yourself further down the road.&amp;nbsp; More often than most people realise an application compatibility problem can be resolved correctly without resorting the one of the fixes above and compromising security, you just need to understand the problem better and be aware of all the options!&amp;nbsp; I strongly recommended regularly reading Chris and Aaron's blogs (I provided the links above) as they both provide some great information on Application Compatibility and Microsoft Windows.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Daniel Oxley&lt;/strong&gt;, a Senior Consultant with Microsoft Services UK&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;&lt;span style="color: #0066dd;"&gt;Terms of Use&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448581" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category></item><item><title>Windows 7 Background Customization</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/22/windows-7-background-customization.aspx</link><pubDate>Mon, 22 Aug 2011 08:58:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448370</guid><dc:creator>lutz seidemann</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3448370</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3448370</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/22/windows-7-background-customization.aspx#comments</comments><description>&lt;p&gt;One of the most requested windows7 customization in every deployment projects is the OS branding. Here is a quick step by step guide.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span size="4"&gt;Windows Background Picture:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;If you want to assign a Win7 Background &amp;amp; Logon picture based on the size of the Monitor we recommend to create a picture that looks good with the FILL &lt;br /&gt;option on different screen sizes. Here are the recommendations for a nice looking picture&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a picture with a resolution of 2560x1440&lt;/li&gt;
&lt;li&gt;Use the attached win7 background template&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The black lines defines the different sizes&lt;/li&gt;
&lt;li&gt;The best place for customer Logo is in the middle white area&lt;/li&gt;
&lt;li&gt;The top and bottom area (marked with the red line) should not contain any information , this is a cut off area based on the screen size&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Push the picture to your clients via GPO&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;"\User Configuration\Policies\Administrative Templates\Desktop\Desktop\Desktop Wallpaper"&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Enable the Active Desktop Setting as described in &lt;a href="http://support.microsoft.com/kb/977944"&gt;KB977944&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;- Or you could use a .reg file:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: %value; font-size: small;"&gt;&lt;em&gt;Windows Registry Editor Version 5.00&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-size: small;"&gt;&lt;em&gt;&lt;span size="3"&gt;[HKEY_CURRENT_USER\Control Panel\Desktop]&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-weight: normal;"&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;"Wallpaper"="C:\\Windows\\Web\\Wallpaper\\MyWallpaper.jpg"&lt;/span&gt; &lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;em&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="font-weight: normal;"&gt;where "&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;Wallpaper&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;"="&amp;lt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;path to your wallpaper&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&amp;gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span size="4"&gt;Windows Logon Screen:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The graphics in the &amp;ldquo;&lt;b&gt;Windows 7 Login Screen Templates. zip&amp;rdquo;&lt;/b&gt; file show the different resolutions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure you don&amp;rsquo;t change the names, only on the default file you can have a higher resolution&lt;/li&gt;
&lt;li&gt;Again, don&amp;rsquo;t add information, logos , etc in the red area because those can have an overlapping with windows default elements&lt;/li&gt;
&lt;li&gt;Copy the jpg files to &lt;b&gt;%windir%\system32\oobe\info\Backgrounds&lt;/b&gt;. You need to create the folder if it does not exist.&lt;/li&gt;
&lt;li&gt;Open the Registry Editor&lt;/li&gt;
&lt;li&gt;Navigate to (If you cannot find the path or the key go ahead and create it) &lt;br /&gt;&lt;b&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Navigate to &lt;br /&gt;&lt;b&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background&lt;/b&gt; &lt;br /&gt;, If the key does not exist, create it&lt;/li&gt;
&lt;li&gt;Double click on key named &lt;b&gt;OEMBackground&lt;/b&gt; and change its value &lt;b&gt;dword:00000001&lt;/b&gt; If the key does not exist, create it.&lt;/li&gt;
&lt;li&gt;If you use Themes (including win7 default Theme), ensure that in the &lt;b&gt;[Theme] &lt;/b&gt;area &lt;b&gt;SetLogonBackground=1&lt;/b&gt; is set. &lt;br /&gt;This will prevent any change of the Logon screen. You can also tie your login background to a specific theme if you change themes frequently but always return to your standard. &lt;br /&gt;To do this open your favorite &lt;b&gt;.theme file&lt;/b&gt; with a text editor (notepad will do), which, if you've saved your theme, you will find in the folder at &lt;b&gt;C:\Users\Your User Name\AppData\Local\Microsoft\Windows\Themes&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;[Theme]&lt;br /&gt;&lt;/em&gt;&lt;span style="font-size: small; font-weight: normal;" size="3"&gt;&lt;em&gt;; Windows 7 - IDS_THEME_DISPLAYNAME_AERO&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size: small; font-weight: normal;" size="3"&gt;&lt;em&gt;DisplayName=Woodgrove IT Theme&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size: small; font-weight: normal;" size="3"&gt;&lt;em&gt;SetLogonBackground=1&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size: small; font-weight: normal;" size="3"&gt;&lt;em&gt;BrandImage=%systemdrive%\Windows\System32\OOBE\Info\Backgrounds\Windows 7 Background.png&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;This post was contributed by &amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&amp;shy;&lt;i&gt;Lutz Seidemann&lt;/i&gt; a Architect with Microsoft Services - APAC&lt;i&gt;. &lt;span style="font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"&gt;Inspired by the work of&amp;nbsp;german collegue Lars Iwer.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448370" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-44-83-70/Win7Backg.zip" length="82751" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Configuration+Manager/">Configuration Manager</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category></item><item><title>Supporting different build types using a single deployment share</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/17/supporting-different-build-types-using-a-single-deployment-share.aspx</link><pubDate>Wed, 17 Aug 2011 14:10:10 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3447628</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3447628</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3447628</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/17/supporting-different-build-types-using-a-single-deployment-share.aspx#comments</comments><description>&lt;p&gt;I have recently been working with a customer deploying Windows 7 using MDT. One of the requirements the customer had is to be able to use a single deployment share to capture and deploy images without having to use the MDT database. Using a single deployment share is complicated by the requirement to specify different configurations depending on whether the deployment type is a capture of a reference build or the deployment of the standard image. For example, during the deployment of the reference image, the capture settings dialog should not be displayed. &lt;/p&gt;  &lt;p&gt;The customer used a set of Virtual Machines to perform captures of the reference build, therefore we could use information specific to those Virtual Machines to determine whether a capture or deployment was taking place. We used a simple user exit script to determine whether the MAC address of the client was linked to a Virtual Machine and if so set configuration options for a capture build. Otherwise, the build was treated as a standard deployment. Below are examples of a customsettings.ini and user exit script. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;CustomSettings.ini&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[Settings]&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Priority=Default, Role&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[Default]&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;UserExit=role.vbs&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Role1=#Role(“%MACADDRESS%”)#&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[ReferenceBuild]&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;SkipCapture=NO&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;[StandardBuild]&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;SkipCapture=YES&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;DoCapture=NO&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Role.vbs&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Function UserExit(sType, sWhen, sDetail, bSkip)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;UserExit = Success&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;End Function&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Function Role(strMac)&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;If strMac = “00:00:00:00:00:00” Then&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Role = “ReferenceBuild”&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Else Role = “StandardBuild”&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;End If&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;End Function&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;This post was contributed by ­­­­­­­­­­­­­­Matt Bailey&lt;i&gt;,&lt;/i&gt; a Consultant with Microsoft Services - UK&lt;i&gt;.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3447628" width="1" height="1"&gt;</description></item><item><title>Dynamic Computer Naming in ZTI Deployments</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/05/dynamic-computer-naming-in-zti-deployments-using-mdt-and-configmgr.aspx</link><pubDate>Fri, 05 Aug 2011 02:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3445235</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3445235</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3445235</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/05/dynamic-computer-naming-in-zti-deployments-using-mdt-and-configmgr.aspx#comments</comments><description>&lt;p&gt;For a while I have been meaning to write up a solution around dynamic computer naming in Zero Touch. Many people have emailed or commenting on how useful this would be &amp;ndash; so here goes.&lt;/p&gt;
&lt;p&gt;Zero Touch Installation relies on a combination of System Centre Configuration Manager (ConfigMgr) and Microsoft Deployment Toolkit (MDT) 2010/2012. The MDT guys wrote a great integration tool that gives the ability to add extra functionality to ConfigMgr such as new tasks, task sequence templates and a new wizard for creating boot disks.&lt;/p&gt;
&lt;p&gt;The integration also allows for the MDT environment to be accessed from within the ConfigMgr task sequence through the use of MDT packages that are created by an MDT task sequence wizard installed in the ConfigMgr console. This also gives the&amp;nbsp;ability to access the MDT Deployment Database from within the ConfigMgr environment to set deployment variables (as opposed to setting them as collection variables).&lt;/p&gt;
&lt;p&gt;The dynamic computer naming process I will&amp;nbsp;outline in this post uses these integration points and the ability to run something called UserExit scripts which allows for&amp;nbsp;the extension of the MDT inbuilt logic. The UserExit script that is&amp;nbsp;attached to&amp;nbsp;this post will dynamically build the computer name, but a&amp;nbsp;UserExit script can be used to accomplish any task(s) you need to carry out where variables&amp;nbsp;need to be&amp;nbsp;combined or adapted&amp;nbsp;- as the UserExit script&amp;nbsp;exits, it&amp;nbsp;returns&amp;nbsp;its output to the task sequence process as a variable. The computer name generated by the UserExit script will be based on a location ID (two characters added as a custom property in MDT Deployment Database), the computer chassis typed (L for laptop, W for Workstation, V for Virtual and X if the chassis can not be identified), and the first 7 characters of the computer serial number (removing spaces and replacing them with minus (-) for situations where the serial number contains spaces such as virtual machines serial numbers). These three properties are then glued together and provided as the OSDComputername variable for use in the deployment process so you end up with a computer name such as: UK (location ID) L (Chassis ID) 1234567 (Serial Number ID).&lt;/p&gt;
&lt;p&gt;For the dynamic computer naming to work, we need carry out the following task&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new property in the MDT Deployment Database (for the two character location ID)&lt;/li&gt;
&lt;li&gt;Configure the CustomSettings.ini file (in the MDT settings package) to query the MDT Deployment Database and run the UserExit script&lt;/li&gt;
&lt;li&gt;Create the UserExit script that does the generation of the computer name and add it to the MDT Toolkit package&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The instructions below assume that you have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installed MDT 2010/2012 (probably on your central site server) and setup an MDT database.&lt;/li&gt;
&lt;li&gt;Run the MDT Integration (accessed through the MDT start menu folder and running Install ConfigMgr Integration)&lt;/li&gt;
&lt;li&gt;Created a task sequence in ConfigMgr using the MDT integration and utilising the MDT supplied client task sequence template &amp;ndash; if you walked through the MDT task sequence wizard you should have also created the MDT support packages (MDT Boot Image, MDT Settings, MDT Toolkit and MDT USMT packages).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; - Create a new custom property in the MDT Deployment Database (for the two character location ID)&lt;/p&gt;
&lt;p&gt;The MDT Deployment Database provided with MDT 2010/2012 on the surface looks very simple &amp;ndash; but is actually very powerful. In this database we can store all of the variables that we used in the MDT Lite Touch world as well as extra OSD based variables for use in Zero Touch and server build task sequences. The MDT Deployment Database contains four main areas for storing variables &amp;ndash; Computers, Location, Roles and Make/Model. In the underlying structure of the database a separate table stores the settings that are then made visible through the DETAILS tab in each of these areas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0624.image_5F00_7D4F17CA.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2604.image_5F00_thumb_5F00_7576FF5B.png" width="501" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To add a custom property to the MDT Deployment Database we need to edit this table. Open your MDT Deployment Database using SQL Admin Studio and navigate to the dbo.Settings table &amp;ndash; right click and select New Column&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1682.image_5F00_1525D924.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8535.image_5F00_thumb_5F00_38DF00BE.png" width="358" height="544" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the bottom of the column list create a new column called &lt;strong&gt;LocationID&lt;/strong&gt; and set the data type to nvarchar(10) &amp;ndash; this will give you a field of up to 10 characters (you may want to limit this to two or three characters in production depending on the naming convention you use and how many letters represent location)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5415.image_5F00_144D733A.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2678.image_5F00_thumb_5F00_6D132A04.png" width="359" height="632" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Save the settings to the database (using the save icon on the toolbar in SQL Admin Studio) &amp;ndash; although you have added the new container for your Location ID to the settings table &amp;ndash; it will not be visible in the MDT database interface (within the MDT Workbench) until you open a query and execute the following stored procedures&lt;/p&gt;
&lt;p&gt;EXECUTE sp_refreshview '[dbo].[ComputerSettings]' &lt;br /&gt;EXECUTE sp_refreshview '[dbo].[LocationSettings]' &lt;br /&gt;EXECUTE sp_refreshview '[dbo].[MakeModelSettings]' &lt;br /&gt;EXECUTE sp_refreshview '[dbo].[RoleSettings]'&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3757.image_5F00_33901A0D.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4341.image_5F00_thumb_5F00_456CADDA.png" width="359" height="416" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your new LocationID entry point should now be visible on all of the tables in the MDT Deployment Database viewed through the Advanced Configuration\Database node in the MDT Workbench &amp;ndash; the LocationID entry point will be at the bottom of the form in the &lt;strong&gt;Custom&lt;/strong&gt; area. Now you can create a new record in the locations table based on your networks default gateways &amp;ndash; include any location specific settings such as locale, keyboard and time zone and then add your two character location ID to your new LocationID column&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7558.image_5F00_4C1FB75D.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6813.image_5F00_thumb_5F00_52D2C0E0.png" width="674" height="395" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; &amp;ndash; Now that the MDT Deployment Database has the location part of the computer name that we need, we need to configure the CustomSettings.ini file to query the MDT Deployment Database, store the custom property added in step 1 and run the UserExit script to glue the LocationID gathered from the MDT database to a chassis ID and the adapted serial number.&lt;/p&gt;
&lt;p&gt;When you ran the MDT task sequence wizard from within the ConfigMgr environment, you would have gone through quite a long wizard (this is accessed by right clicking the task sequence node under OSD in the ConfigMgr console and choosing &amp;ldquo;Create MDT based Task Sequence&amp;rdquo;). The wizards job is to import an MDT developed task sequence template in to the ConfigMgr environment and to walk you through creating the packages required to support this task sequence. One of the packages that is generated as part of the wizard is the MDT settings package. The settings package contains a template CustomSettings.xml file and the unattend.xml that are used throughout the execution of your chosen task sequence template.&lt;/p&gt;
&lt;p&gt;Our first task is to replace the template CustomSettings.ini file in your settings package with one that contains the MDT database queries that we want to run to pull in the LocationID (and any other settings you have added to the location record). This can be achieved by right clicking the database node in the MDT Workbench and running the &lt;strong&gt;Configure Database Rules&lt;/strong&gt; wizard. This wizard will help to create the queries for each of the tables in the MDT database. In this post we are interested in the LOCATION options, however you can choose any queries to be added to Customsettings.ini if you are using other MDT variables.&lt;/p&gt;
&lt;p&gt;Deselect the options in the COMPUTER options and click next. On the LOCATIONS options, adjust so that only the first two options are ticked.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2678.image_5F00_0B7D6AEE.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4338.image_5F00_thumb_5F00_644321B8.png" width="551" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can deselect all of the queries on the MAKE/MODEL options and the ROLE options (if they are not needed) and click through to the end and select Finish. This will update the CustomSettings.ini file stored in the &lt;strong&gt;Control &lt;/strong&gt;folder of your deployment share &amp;ndash; open this folder and open the CustomSettings.ini file. It should look like the example below with the MDT Deployment Database queries added.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1207.image_5F00_31DF4E39.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1205.image_5F00_thumb_5F00_5CB7B24B.png" width="762" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The next task is to adjust the CustomSettings,ini file to deal with the new LocationID value and to run the UserExit script that will create the OSDComputerName. With the newly adjusted CustomSettings.ini file open add the following lines to the file.&lt;/p&gt;
&lt;p&gt;In the [Settings] section on the &lt;strong&gt;Priority&lt;/strong&gt; line add BuildComputerName to the end of the line (after all of the database entries but before Default)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It line should now read&amp;nbsp;&lt;strong&gt;Priority=Locations, LSettings, BuildComputerName, Default&lt;/strong&gt;&amp;nbsp; - you may have more queries on this line if you left additional queries ticked in the Configure Database Rules wizard.&lt;/p&gt;
&lt;p&gt;in the [Settings] section on the &lt;strong&gt;Properties&lt;/strong&gt; line add BuildComputerName and LocationID after MyCustomProperty&amp;nbsp;&lt;/p&gt;
&lt;p&gt;this line should now read&amp;nbsp;&lt;strong&gt;Properties=MyCustomProperty, BuildComputerName, LocationID&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a new section under the Properties line called&lt;strong&gt; [BuildComputerName]&lt;/strong&gt; and configure as follows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[BuildComputerName] &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;UserExit=MachineNameExit.vbs &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;OSDComputerName=#BuildComputerName()#&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your CustomSettings.ini file should now look something like this (but containing the connection information for your MDT Deployment Database environment):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8032.image_5F00_58413184.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0118.image_5F00_thumb_5F00_3106E84F.png" width="770" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Save your newly edited CustomSettings.ini file and then copy this file (from the control folder) to the source location of your MDT Setting Package &amp;ndash; The source location is the folder that would have been set during the MDT Wizard in ConfigMgr and is the location where the MDT Settings Package get its source files from &amp;ndash; replace the CustomSettings.ini file in the source folder and then replicate the settings package to your distribution points in ConfigMgr.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1602.image_5F00_7B8E2629.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5305.image_5F00_thumb_5F00_1732B220.png" width="770" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3 &amp;ndash; &lt;/strong&gt;Now that the MDT database is set, and the CustomSettings.ini file is configured to query the MDT Deployment Database and run the UserExit script, the final piece of the jigsaw is to add the UserExit script itself to the MDT Toolkit Package (again this should have been created when you setup your task sequence using the integrated MDT task sequence template and the package wizard). Open the source folder where your MDT Toolkit Package is stored and add the MachineNameExit.vbs file attached to this post into the SCRIPTS folder&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4331.image_5F00_68D92C72.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0118.image_5F00_thumb_5F00_6F8C35F5.png" width="775" height="290" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Replicate your MDT Toolkit Package (with this new file added) around to your ConfigMgr distribution points using the ConfigMgr console.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Outcome&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When the task sequence runs, the normal gather process that MDT uses will poulate the deployment variables with environmental information about the device being built as well as variables queried from the MDT database (as setup in the queries in CustomSettings.ini). The sample script provided will then be run as a UserExit funtion which in turn will run a function called BuildComputerName. This function has all of the logic to obtain gathered variables found during the gather process. The variables we are interested in are:&lt;/p&gt;
&lt;p&gt;oEnvironment.Item("LocationID") &lt;br /&gt;oEnvironment.Item("isLaptop") &lt;br /&gt;oEnvironment.Item("isDesktop") &lt;br /&gt;oEnvironment.Item("isVM") &lt;br /&gt;oEnvironment.Item("SerialNumber")&lt;/p&gt;
&lt;p&gt;The script then glues the pieces together as follows:&lt;/p&gt;
&lt;p&gt;Character 1 and 2 - Letters pulled from the MDT database LocationID attribute during the gather process (this will be XX if nothing is set in the database) &lt;br /&gt;Character 3 &amp;ndash; A single letter based on the chassis of the device which was discovered in the gather process (L for laptop, W for Workstation, V for Virtual and X if the variable is empty) &lt;br /&gt;Character 4 to 10 &amp;ndash; The last seven characters of the serial number (recorded in the gather process) of the machine with spaces replaced with dash (-)&amp;nbsp; The replacement of spaces is required because some virtual machines tend to have the serial number set to a GUID with spaces - the script takes care of dealing with this.&lt;/p&gt;
&lt;p&gt;NOTE - You could change from using the serial number to using the machines asset tag (if this has been set in the BIOS) by changing the code in the script to get the asset tag attribute instead of SerialNumber &amp;ndash; to do this simply change the line&lt;/p&gt;
&lt;p&gt;sSerialNumber = oEnvironment.Item("SerialNumber") to sSerialNumber = oEnvironment.Item("AssetTag")&lt;/p&gt;
&lt;p&gt;The script then passes back the compiled computer name to the UserExit as BuildComputerName which is then converted and stored as OSDComputerName for use later in the task sequence&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Richard Smith&lt;/strong&gt;, a&amp;nbsp;Principal Consultant with Microsoft Services UK&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3445235" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-44-52-35/MachineNameExit.zip" length="1545" type="application/zip" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/SCCM+2007/">SCCM 2007</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Configuration+Manager/">Configuration Manager</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Scripts/">Scripts</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tips+and+Tricks/">Tips and Tricks</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/MDT+2012/">MDT 2012</category></item><item><title>How to Limit or Restrict the Use of Bootable Media Devices for OS Deployment Using SCCM</title><link>http://blogs.technet.com/b/deploymentguys/archive/2011/08/04/how-to-limit-or-restrict-the-use-of-bootable-media-devices-for-os-deployment-using-sccm.aspx</link><pubDate>Thu, 04 Aug 2011 14:15:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448469</guid><dc:creator>btucke31</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3448469</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3448469</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2011/08/04/how-to-limit-or-restrict-the-use-of-bootable-media-devices-for-os-deployment-using-sccm.aspx#comments</comments><description>&lt;p&gt;I have been on quite a few customer engagements where I have been asked to develop a process that will restrict the use of legacy media devices, such as DVD or UFD, to deploy OS images. Many of these customers come from legacy environments where they are used to building a unique image on DVD and must have a way to ensure an outdated image is no longer able to be deployed.&lt;/p&gt;  &lt;p&gt;I will post later on how I was able to do this with a rare, non-networked, stand-alone media device, but for this post, I will focus on bootable media. Thankfully, SCCM makes this pretty easy for us.&lt;/p&gt;  &lt;p&gt;Here, I have a selected my task sequence and have selected &lt;strong&gt;Create Task Sequence Media &lt;/strong&gt;and will create Bootable Media.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/8508.image_5F00_0668F28E.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/1667.image_5F00_thumb_5F00_65094CF1.png" width="625" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On the &lt;em&gt;Security &lt;/em&gt;page of the Task Sequence Media Wizard, you will notice that Create self-signed media certificate is checked by default with a 1-year expiration date. However, since this fictional customer renews there boot images once a quarter, I have set the expiration date to 3 months in the future. I could also set a HARD date that may not be the full 3 months, but will end when the customer chooses to archive this particular boot image.&lt;/p&gt;  &lt;p&gt;It is also important to note, that if you have a PKI infrastructure, you can import your own certificate.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/0272.image_5F00_72032D02.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/1754.image_5F00_thumb_5F00_74C8E1F5.png" width="624" height="467" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once my media is created, you will notice the self-signed certificate now shows up under Site Settings&amp;gt;Certificates&amp;gt;Boot Media.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;IMPORTANT: This is only visible/manageable from the site the bootable media is created from.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/1070.image_5F00_39A20A7A.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/0804.image_5F00_thumb_5F00_6AC1451A.png" width="625" height="117" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When I want to expire this boot media, I can highlight this certificate and choose ‘Block’. It is also important to note, that if the customer has a HARD date to expire all boot images, for example, on 09/01/2011, when a new one is released, we can select all of these certificates with a Start Date prior to 09/01/2011 and block them all at once.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/8130.image_5F00_073132AB.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-59-20-metablogapi/0272.image_5F00_thumb_5F00_54612C36.png" width="627" height="102" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The next time this bootable media device is run, it will fail.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1680.CertError_5F00_0E6CFDE2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CertError" border="0" alt="CertError" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5226.CertError_5F00_thumb_5F00_26243548.png" width="540" height="310" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Brad Tucker&lt;/strong&gt;, a Senior Consultant with Microsoft Services, East Region, United States&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448469" width="1" height="1"&gt;</description></item></channel></rss>
