<?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>Michael Niehaus' Windows and Office deployment ramblings</title><link>http://blogs.technet.com/b/mniehaus/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Troubleshooting MDT 2012 Monitoring</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/05/10/troubleshooting-mdt-2012-monitoring.aspx</link><pubDate>Thu, 10 May 2012 08:28:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3497151</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3497151</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/05/10/troubleshooting-mdt-2012-monitoring.aspx#comments</comments><description>&lt;p&gt;I mentioned a while back that I wanted to do a blog post talking about how to troubleshoot the new MDT 2012 monitoring feature for Lite Touch deployments, but first I had to actually describe it.&amp;#160; If you haven’t reviewed that post, you might want to check it out first at &lt;a title="http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-monitoring.aspx" href="http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-monitoring.aspx"&gt;http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-monitoring.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So now let’s talk about troubleshooting.&amp;#160; First, let’s look at the server side.&amp;#160; You have to enable monitoring on a computer that has MDT 2012 installed.&amp;#160; When you use Deployment Workbench on that computer and check the box to enable monitoring, Workbench will first check to see if the specified monitoring host name is local:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1031.image_5F00_542BAD77.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/4274.image_5F00_thumb_5F00_79B52AD8.png" width="462" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It doesn’t really matter if you specify an IP address, a short host name, or a fully-qualified host name, as long as the clients can resolve whatever you specify.&amp;#160; If you specify a name that Workbench doesn’t think is local (because Workbench itself can’t resolve the name back to an IP address assigned to the current machine), it won’t try to install the monitoring component; instead, it will try to contact that server to see if monitoring is running on that computer.&amp;#160; If it is, great; if it isn’t, you’ll see an error message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/3187.image_5F00_0E3A7A57.png"&gt;&lt;img title="image" style="margin: 0px; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/0451.image_5F00_thumb_5F00_2DE9541F.png" width="244" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you look closely at the error “tip” at the end of the “Monitoring host” line, you’ll see a message like “Unable to connect to the specified server and port”.&amp;#160; If you think you specified the local computer name and got that error, then Workbench couldn’t figure out that it was the local computer name (something that’s harder to do than you might think).&amp;#160; If you are specifying a different server and see this error, then it’s having problems communicating with that other server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip #1:&lt;/strong&gt;&amp;#160; Make sure the name you specify in Workbench can be resolved to the IP address of the current machine.&lt;/p&gt;  &lt;h2&gt;What does the checkbox do?&lt;/h2&gt;  &lt;p&gt;You’ve checked the checkbox and can’t see that anything happened.&amp;#160; So what was actually done?&amp;#160; Two things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A new “Microsoft Deployment Toolkit Monitor Service” service was installed on the computer and started.&lt;/li&gt;    &lt;li&gt;An additional entry was added to the [Default] section of CustomSettings.ini telling the clients how to contact the server, with an entry such as:     &lt;br /&gt;      &lt;br /&gt;EventService=http://mdt-server.mdt.local:9800&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Tip #2:&lt;/strong&gt;&amp;#160; Make sure the “Microsoft Deployment Toolkit Monitor Service” is installed and running.&amp;#160; If it’s not installed and it should be, you can uncheck the box, click apply, then check the box again and click apply to reinstall it.&amp;#160; If it’s installed but not running, try to start it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip #3:&lt;/strong&gt;&amp;#160; Make sure the entry was added to CustomSettings.ini by looking at the Rules tab.&amp;#160; Because of a peculiarity with the way Workbench works, if you make any changes to the Rules tab after you’ve clicked the “Enable monitoring” checkbox but before you’ve clicked OK, it’s possible that the changes made on the Rules tab overlay the EventService entry in CustomSettings.ini, but it’s easy enough to put it back manually.&lt;/p&gt;  &lt;h2&gt;What if the service doesn’t start?&lt;/h2&gt;  &lt;p&gt;The service has two dependencies:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;.NET 3.5 SP1 needs to be installed.&amp;#160; That shouldn’t be an issue, because you can’t install MDT 2012 without .NET 3.5 SP1.&lt;/li&gt;    &lt;li&gt;The ports you specified need to be available for use.&amp;#160; (Generally that’s not an issue either, as 9800 and 9801 aren’t commonly-used TCP ports.&amp;#160; But it is possible to have another application use them.&amp;#160; Fortunately, MDT will happily use other ports.)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So there’s no dependency on IIS or SQL Server.&amp;#160; The service uses .NET to host a web server as part of the service process, and it uses a SQL Compact database (basically a set of DLLs, which ship with MDT, that run in the service process) to store the monitoring information.&amp;#160; It’s designed to be easy to install and run.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip #4:&lt;/strong&gt;&amp;#160; If you try to start the service and it won’t start, that most likely means the ports you chose were already in use.&amp;#160; (If you want to know what’s using the ports, use a tool like TCPView, available from &lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb897437" href="http://technet.microsoft.com/en-us/sysinternals/bb897437"&gt;http://technet.microsoft.com/en-us/sysinternals/bb897437&lt;/a&gt;.)&amp;#160; Pick different ports.&lt;/p&gt;  &lt;p&gt;While it’s always possible that there could be some other reason the service fails, I haven’t seen any other causes.&amp;#160; But if you know the ports are not in use and the service still won’t start, capture a trace using DebugView (&lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb896647" href="http://technet.microsoft.com/en-us/sysinternals/bb896647"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896647&lt;/a&gt;) to see if it provides any further clues.&amp;#160; If not, contact Microsoft Support for assistance.&lt;/p&gt;  &lt;h2&gt;Verifying the Monitoring Service&lt;/h2&gt;  &lt;p&gt;The monitoring service listens on the two ports that you specified.&amp;#160; The first of these ports (9800) is used by computers being deployed to send progress events.&amp;#160; The second (9801) is used by Workbench itself to query information about deployments being monitored.&amp;#160; To make sure these ports are accessible, we can manually connect to each one using Internet Explorer.&lt;/p&gt;  &lt;p&gt;To verify the “event port” from the monitor server itself, you can use a URL such as:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://localhost:9800/MDTMonitorEvent/"&gt;http://localhost:9800/MDTMonitorEvent/&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If that works, you should see a response like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/6327.image_5F00_4D982DE7.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/0451.image_5F00_thumb_5F00_78045F04.png" width="497" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s a proper response in this case – the web service doesn’t expect to be called in this way (an HTTP GET request instead of an HTTP POST request), so it’s telling you the proper way to call the service.&lt;/p&gt;  &lt;p&gt;To verify the “data port” from the monitor server itself, you can use a URL such as:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://localhost:9801/MDTMonitorData/"&gt;http://localhost:9801/MDTMonitorData/&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-52-09-metablogapi/1524.image_5F00_174705D8.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/3678.image_5F00_thumb_5F00_4FF1AFE5.png" width="501" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This response (which is an ODATA feed in case you are curious) confirms that the data feed is working as expected.&lt;/p&gt;  &lt;p&gt;But those are the easy queries – they are using “localhost”, which is almost never subject to firewall restrictions.&amp;#160; Next, you need to try these queries remotely, using the appropriate “remote” URLs:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mdt-server:9800/MDTMonitorEvent/"&gt;http://mdt-server:9800/MDTMonitorEvent/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mdt-server:9801/MDTMonitorData/"&gt;http://mdt-server:9801/MDTMonitorData/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If those work, great.&amp;#160; If they don’t, then you need to make sure that whatever firewall is running on the monitoring server allows the ports you specified (e.g. 9800 and 9801) to be accessed from remote hosts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip #5:&lt;/strong&gt;&amp;#160; Make sure you can access the monitor service ports both locally and remotely.&amp;#160; Adjust the firewall rules as necessary.&lt;/p&gt;  &lt;p&gt;Note that there are other networking “challenges” that can get in the way, e.g. IPSec domain isolation.&amp;#160; In this configuration, computers that aren’t domain-joined, e.g. running from Windows PE, can’t talk to domain-joined computers because they aren’t using encrypted IPsec communication.&amp;#160; This type of configuration will never work – you would need to set up the monitoring service on a “boundary server” that has been configured to allow non-IPsec traffic on the configured ports.&amp;#160; So don’t assume that if a “remote” URL works from a domain-joined machine, it will also work from a workgroup machine (or Windows PE) – know how your network is configured.&lt;/p&gt;  &lt;h2&gt;From the Client Side&lt;/h2&gt;  &lt;p&gt;When the EventService task sequence variable is set (via the processing of CustomSettings.ini), each MDT script executed in the task sequence will send an event to the monitor service on the “event port” URL.&amp;#160; When this succeeds, you’ll see a message 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-52-09-metablogapi/7701.image_5F00_6476FF63.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2514.image_5F00_thumb_5F00_3D3CB62E.png" width="529" height="28" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If a script is unable to send an event, you’ll see something different:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1031.image_5F00_4F1949FB.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2185.image_5F00_thumb_5F00_6ABDD5F1.png" width="530" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s a clear sign that something isn’t right.&amp;#160; Make sure the service is running, that the firewall ports are open, etc. – the same challenges we already reviewed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip #6:&lt;/strong&gt;&amp;#160; Check the client logs to make sure the clients are able to talk to the monitoring service.&lt;/p&gt;  &lt;p&gt;Another way you might notice an issue:&amp;#160; If the monitor service isn’t running, the clients will still try to connect to it, eventually timing out.&amp;#160; This timeout process will cause a delay at the end of each step in the task sequence, so if you are watching the task sequence progress dialog, you’ll see steps that you never noticed before (because they usually run so fast) now taking a long time.&lt;/p&gt;  &lt;h2&gt;From Workbench&lt;/h2&gt;  &lt;p&gt;When you try to look at the monitoring data from Workbench, it calls a PowerShell cmdlet (Get-MDTMonitorData), then that PowerShell cmdlet makes the “data port” query to retrieve the details from the monitoring service.&amp;#160; If the service is working as expected, you can see the list of monitored machines in Workbench.&amp;#160; If the service isn’t working, you’ll see something like this instead:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/3678.image_5F00_3C645044.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7220.image_5F00_thumb_5F00_2E25D754.png" width="536" height="130" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Good advice, make sure the service is running &lt;img class="wlEmoticon wlEmoticon-smile" style="style" alt="Smile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1856.wlEmoticon_2D00_smile_5F00_49CA634A.png" /&gt;&lt;/p&gt;  &lt;h2&gt;Finally&lt;/h2&gt;  &lt;p&gt;Still having issues?&amp;#160; Post them as comments here, or send me an e-mail at &lt;a href="mailto:mniehaus@microsoft.com"&gt;mniehaus@microsoft.com&lt;/a&gt; and we’ll try to figure out what’s going on.&amp;#160; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3497151" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>Trying to install ConfigMgr 2012 RTM?  Make sure you have the right SQL…</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/04/27/trying-to-install-configmgr-2012-rtm-make-sure-you-have-the-right-sql.aspx</link><pubDate>Fri, 27 Apr 2012 03:18:43 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3494859</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3494859</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/04/27/trying-to-install-configmgr-2012-rtm-make-sure-you-have-the-right-sql.aspx#comments</comments><description>&lt;p&gt;Now that Configuration Manager 2012 RTM is available, people will certainly start installing it, both in their labs and in production – and will start finding out that the SQL version check in the ConfigMgr installer is looking for some very specific SQL maintenance levels.&amp;#160; (I’ve pulled out plenty of my own hair doing this recently, just like I did with the prerelease versions.)&amp;#160; The supported versions can be found at &lt;a title="http://technet.microsoft.com/library/gg682077.aspx#BKMK_SupConfigSQLDBconfig" href="http://technet.microsoft.com/library/gg682077.aspx#BKMK_SupConfigSQLDBconfig"&gt;http://technet.microsoft.com/library/gg682077.aspx#BKMK_SupConfigSQLDBconfig&lt;/a&gt;.&amp;#160; The summary (always subject to change):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server 2008 SP2 Standard and Enterprise CU9&lt;/li&gt;    &lt;li&gt;SQL Server 2008 SP3 Standard and Enterprise CU4&lt;/li&gt;    &lt;li&gt;SQL Server 2008 R2 SP1 and CU6&lt;/li&gt;    &lt;li&gt;SQL Server Express 2008 R2 and CU4 (secondary sites only)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are running SQL 2008 SP2, install CU9 from &lt;a href="http://support.microsoft.com/kb/2673382/"&gt;http://support.microsoft.com/kb/2673382/&lt;/a&gt;.&amp;#160; If you are running SQL 2008 SP3, install CU4 from &lt;a title="http://support.microsoft.com/kb/2673383/" href="http://support.microsoft.com/kb/2673383/"&gt;http://support.microsoft.com/kb/2673383/&lt;/a&gt;.&amp;#160; If you are running SQL Server 2008 R2 SP1, use CU6 from &lt;a title="http://support.microsoft.com/kb/2679367/" href="http://support.microsoft.com/kb/2679367/"&gt;http://support.microsoft.com/kb/2679367/&lt;/a&gt;.&amp;#160; If you aren’t yet on the needed service pack levels, upgrade now, then install the cumulative updates :-)&lt;/p&gt;  &lt;p&gt;I’m still looking for a statement on ConfigMgr 2012 RTM and SQL Server 2012.&amp;#160; (ConfigMgr 2007 now supports it, see &lt;a title="http://blogs.technet.com/b/configmgrteam/archive/2012/04/17/configuration-manager-support-announcements-for-april-2012.aspx" href="http://blogs.technet.com/b/configmgrteam/archive/2012/04/17/configuration-manager-support-announcements-for-april-2012.aspx"&gt;http://blogs.technet.com/b/configmgrteam/archive/2012/04/17/configuration-manager-support-announcements-for-april-2012.aspx&lt;/a&gt;.)&amp;#160; There’s already a CU1 for SQL Server 2012, &lt;a title="http://support.microsoft.com/kb/2679368/" href="http://support.microsoft.com/kb/2679368/"&gt;http://support.microsoft.com/kb/2679368/&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=3494859" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>Inside a Task Sequence</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/04/20/inside-a-task-sequence.aspx</link><pubDate>Fri, 20 Apr 2012 18:01:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3493513</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3493513</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/04/20/inside-a-task-sequence.aspx#comments</comments><description>&lt;p&gt;I&amp;rsquo;ve done a few sessions now where I demonstrated how to put some hooks into a task sequence so that you can single step through the process and &amp;ldquo;poke around&amp;rdquo; to see exactly what is going on.&amp;nbsp; Since I&amp;rsquo;ve promised to make those scripts available, and will get lots of e-mails from people if I don&amp;rsquo;t do that, I&amp;rsquo;ll provide those at the bottom of this blog posting.&lt;/p&gt;
&lt;p&gt;But the scripts by themselves require some explanation, some instructions, and some caveats.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Some Explanation&lt;/h2&gt;
&lt;p&gt;First, let&amp;rsquo;s talk about the basic setup.&amp;nbsp; If you look at a ConfigMgr task sequence, it contains a number of steps and groups that define the sequential process that is going to be executed.&amp;nbsp; This is actually converted into XML, where each step and group becomes a series of XML entries that define:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The command line to be executed.&lt;/li&gt;
&lt;li&gt;The variables that are expected by the step (at least those that can be configured by the task sequence editor &amp;ndash; the step&amp;rsquo;s command may use others).&lt;/li&gt;
&lt;li&gt;The conditions for the step &amp;ndash; if the conditions aren&amp;rsquo;t satisfied, the step won&amp;rsquo;t run.&lt;/li&gt;
&lt;li&gt;The definition of success &amp;ndash; a list of return codes that should be considered &amp;ldquo;successful&amp;rdquo;, typically 0 and 3010.&amp;nbsp; You can also say to ignore errors, which means to ignore the return code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before the client computer begins to execute the task sequence, it receives (as part of the task sequence policy) the entire XML blob.&amp;nbsp; That XML blob is then processed by the Task Sequence Manager, TSManager.exe, which is what actually starts the commands for each step (at least those where it has decided the conditions have been met).&lt;/p&gt;
&lt;p&gt;So that&amp;rsquo;s a key part of what we want to do:&amp;nbsp; We want to intercept each of the commands that are being executed by the TSManager.exe process before they actually start. That way, we can look at the task sequence variables currently defined, the command line details, the step&amp;rsquo;s XML, etc.&amp;nbsp; How do you do this intercepting?&amp;nbsp; That&amp;rsquo;s where a debugger comes in.&amp;nbsp; A debugger can attach the TSManager.exe process, then set a breakpoint on the Windows API call, CreateProcessW, that is used by TSManager to run the command for each step.&amp;nbsp; Each time TSManager.exe then tries to run a new command, the debugger will stop the process until you manually say continue.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s where the scripts come in:&amp;nbsp; The provided &amp;ldquo;InsideTS&amp;rdquo; scripts take care of setting up the debugger (attaching to the TSManager.exe process, setting the breakpoint), watching for breakpoints (checking the log for &amp;ldquo;breakpoint hit&amp;rdquo; messages), and showing the current state (displaying the step details, task sequence variables, logs, etc.).&amp;nbsp; The pieces involved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InsideTS_Attach.wsf.&amp;nbsp; This is the script hooked into the task sequence itself.&amp;nbsp; It needs to run at the beginning of the task sequence and then each time the computer reboots.&amp;nbsp; (The debugging process doesn&amp;rsquo;t survive reboots.)&amp;nbsp; It launches the next script, InsideTS_Monitor.wsf, to do the real work, waits until the debugger process (NTSD.EXE) shows up, then exits.&lt;/li&gt;
&lt;li&gt;InsideTS_Monitor.wsf.&amp;nbsp; This script, as already mentioned, starts the debugger, NTSD.EXE.&amp;nbsp; It feeds it initial commands to attach to TSManager.exe, to set the breakpoint on CreateProcessW, and to write all the debugger output to a file.&amp;nbsp; The script then monitors the log file looking for &amp;ldquo;breakpoint hit&amp;rdquo; messages, and when that happens, it starts a wizard, InsideTS_Details, to show the details of what&amp;rsquo;s currently going on.&lt;/li&gt;
&lt;li&gt;InsideTS_DebugCommands.txt.&amp;nbsp; This file contains the initial commands that are passed to NTSD.EXE.&lt;/li&gt;
&lt;li&gt;InsideTS_Details.xml, InsideTS_Details.vbs, and InsideTS_Header.jpg.&amp;nbsp; These files form an MDT HTA wizard pane (which is why this setup requires scripts from MDT, which will be described below).&amp;nbsp; This wizard pane will show three tabs:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Task Sequence.&amp;nbsp; This will give a graphical representation of the task sequence, like you would see in the task sequence editor, and will highlight the step that is about to run.&amp;nbsp; (The breakpoint happens right before this step starts.)&lt;/li&gt;
&lt;li&gt;Variables. This will show a list of all the task sequence variables.&amp;nbsp; New variables (those that haven&amp;rsquo;t been seen before) will show up in green.&amp;nbsp; Existing variables that have new values will show up in yellow.&amp;nbsp; Those that no longer exist (e.g. local variables that are valid only for a single task sequence step) will show up in red (showing the old value that is no longer present).&amp;nbsp; And finally, those that are unchanged since the last step will not be highlighted (showing up in white).&lt;/li&gt;
&lt;li&gt;Step.&amp;nbsp; This will show the definition of the step in two ways.&amp;nbsp; First, it will show the XML definition for the step from the task sequence XML blob (which itself is stored in a task sequence variable).&amp;nbsp; It will also show the MOF definition of the step (basically, the definition that the task sequence editor uses to configure the step via the GUI).&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;InsideTS_TaskSequence.xsl.&amp;nbsp; This is an XML style sheet that converts the task sequence XML blob into displayable HTML.&amp;nbsp; The resulting HTML is displayed on the Task Sequence tab, described above, with the current step highlighted.&lt;/li&gt;
&lt;li&gt;InsideTS_Variables.xml.&amp;nbsp; This is another XML style sheet, used to convert the list of task sequence variables (which are saved into an XML file by the InsideTS_Monitor.wsf script &amp;ndash; they aren&amp;rsquo;t typically stored in this way) into HTML displayed on the Variables tab of the details wizard described above.&lt;/li&gt;
&lt;li&gt;InsideTS_MOF.xml.&amp;nbsp; This file contains the definitions for each of the steps used in ConfigMgr 2012 and MDT 2012 task sequences.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Some Instructions&lt;/h2&gt;
&lt;p&gt;In addition to the files listed above, you need to gather these additional files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows Debugger tools download (&lt;a title="http://msdn.microsoft.com/en-us/windows/hardware/hh852363" href="http://msdn.microsoft.com/en-us/windows/hardware/hh852363"&gt;http://msdn.microsoft.com/en-us/windows/hardware/hh852363&lt;/a&gt;), you need one file, NTSD.EXE.&lt;/li&gt;
&lt;li&gt;From ConfigMgr 2012, you need a copy of the CMTrace.exe.&lt;/li&gt;
&lt;li&gt;From MDT 2012, you need several files to support the scripts and wizards described above:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Computer.png, FolderIcon.png, ItemIcon1.png, MinusIcon1.png, NavBar.png, PlusIcon1.png, Wizard,ico (graphics used in the wizard pane).&lt;/li&gt;
&lt;li&gt;Wizard.hta, WizUtility.vbs, Wizard.css (the MDT HTA wizard &amp;ldquo;engine&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;ZTIDataAccess.vbs, ZTIUtility.vbs (main MDT utility scripts).&lt;/li&gt;
&lt;li&gt;ServiceUI.exe (a component from MDT that enables the MDT HTA wizard to be visible from the ConfigMgr task sequence, even when in the full OS).&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;Once you have gathered all of these files into one folder, they need to be added into the ConfigMgr boot image that you will be using and into the new OS image that you are deploying.&amp;nbsp; Create an &amp;ldquo;InsideTS&amp;rdquo; folder at the root of both of these.&amp;nbsp; (The simplest way to do this: mount both of the WIMs, XCOPY the folder to X:\InsideTS, commit the changes, then update the DPs.)&amp;nbsp; Why do I include these files in the images?&amp;nbsp; Well, it was easier to do it that way.&amp;nbsp; (More on that later.)&lt;/p&gt;
&lt;p&gt;Now that the files have been added to the boot and OS images, you then need to add commands to the task sequence to run InsideTS_Attach.wsf.&amp;nbsp; How many steps you need to insert into this depends on how many reboots you expect the task sequence to perform; you need one after each reboot.&amp;nbsp; At minimum, you will need two, one to run in Windows PE for preinstallation steps and a second to run in the new OS.&amp;nbsp; The step should look 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-52-09-metablogapi/6283.image_5F00_4B476469.png"&gt;&lt;img width="603" height="216" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/4645.image_5F00_thumb_5F00_7F7B8DAF.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Assuming you have set everything up right, you should be able to start the task sequence and see something like this show up:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1680.image_5F00_382637BD.png"&gt;&lt;img width="608" height="456" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/4237.image_5F00_thumb_5F00_65A75780.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This shows the step after the &amp;ldquo;InsideTS Attach&amp;rdquo; as being the next one to execute.&amp;nbsp; You can then click on the &amp;ldquo;Variables&amp;rdquo; button and see that all of the variables are highlighted in green because they are all considered &amp;ldquo;new&amp;rdquo; (as in &amp;ldquo;never seen before&amp;rdquo;) at this point:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7041.image_5F00_4FDD6F23.png"&gt;&lt;img width="611" height="459" title="image" style="display: inline; background-image: none;" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/4237.image_5F00_thumb_5F00_562445B1.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve poked around enough, click the &amp;ldquo;Finish&amp;rdquo; button to close the wizard.&amp;nbsp; At that point, you&amp;rsquo;ll see a strange sight: the NTSD debugger.&amp;nbsp; In a perfect world, the InsideTS_Monitor.wsf script would feed the commands to continue with the step execution once you&amp;rsquo;ve clicked &amp;ldquo;Finish&amp;rdquo; on the wizard, but after messing around with that for a couple of hours, I gave up on that and went with a lower-tech approach:&amp;nbsp; Type in the needed commands yourself.&amp;nbsp; In case you aren&amp;rsquo;t familiar with NTSD command line options, here&amp;rsquo;s a quick reference to the ones you&amp;rsquo;ll need to know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;G&amp;rdquo; means go.&amp;nbsp; Type G to run the step.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Q&amp;rdquo; means quit.&amp;nbsp; You&amp;rsquo;ll have to type Q to exit the debugger after the TSManager.exe process exits (which it does before rebooting and before the task sequence completes).&amp;nbsp; If you type Q before that point, the task sequence will die (it quits the debugger and the TSManager.exe process being debugged), so don&amp;rsquo;t do that.&amp;nbsp; (If you do want to continue the task sequence without any more breakpoints, type &amp;ldquo;bc0&amp;rdquo; to clear the breakpoint, then &amp;ldquo;g&amp;rdquo; to continue the execution.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s really all you need to know.&amp;nbsp; (I used one other command, &amp;ldquo;du rdx&amp;rdquo;, to dump out the CreateProcessW command line parameter during the session, but you can see the same value at the end of the SMSTS.LOG, which you can open by clicking the &amp;ldquo;Log&amp;rdquo; button in the wizard.)&lt;/p&gt;
&lt;h2&gt;Some Caveats&lt;/h2&gt;
&lt;p&gt;Some people know the story behind this little tool:&amp;nbsp; I originally put these scripts together for &lt;a href="http://www.bdna.com/page/index/sccm-guru-genius-series"&gt;a BDNA &amp;ldquo;SCCM Guru&amp;rdquo; webcast&lt;/a&gt; back in November.&amp;nbsp; The webcast was scheduled months in advance, so I assumed I had plenty of time to prepare.&amp;nbsp; For a variety of reasons (including procrastination) I didn&amp;rsquo;t prepare for this nearly as soon as I had hoped.&amp;nbsp; In fact, I didn&amp;rsquo;t start most of it until about 30 hours before the presentation was due to start.&amp;nbsp; And for about 18 of those hours, I was travelling back to Seattle from Moscow &amp;ndash; in coach of course.&amp;nbsp; So all the preparation work was done on the airplane, with the scripting done on the Moscow to New York flight, when there was no internet connection, and the testing (and bug fixing) happening on the flight from New York to Seattle (VPN connection from the airplane to my office Hyper-V server, thank you &lt;a title="http://www.gogoair.com" href="http://www.gogoair.com"&gt;http://www.gogoair.com&lt;/a&gt;).&amp;nbsp; The next morning, I presented the session, completely jetlagged&amp;hellip;&lt;/p&gt;
&lt;p&gt;So there&amp;rsquo;s my excuse for the following caveats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I suspect you could add the files to the MDT toolkit files package, then put the &amp;ldquo;InsideTS Attach&amp;rdquo; step after each &amp;ldquo;Use Toolkit Package&amp;rdquo; step.&amp;nbsp; That would avoid needing the files in the boot image image and OS WIMs.&amp;nbsp; That may require script changes.&lt;/li&gt;
&lt;li&gt;I think this will work for both x86 and x64, but I&amp;rsquo;ve only tried it with x64.&amp;nbsp; (Make sure you get the right platform version of NTSD.EXE and ServiceUI.EXE.)&amp;nbsp; If you want it to work for both (e.g. x86 boot image deploying an x64 OS), you will likely need to make changes to the scripts.&lt;/li&gt;
&lt;li&gt;You should be able to use this for refresh executions as well, but you&amp;rsquo;ll then need at least three &amp;ldquo;InsideTS Attach&amp;rdquo; steps (one for the original OS, one in Windows PE, one in the new OS).&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve only tried this with ConfigMgr 2012, but it should work with ConfigMgr 2007 too (although since the task sequencer runs as x86 even on an x64 OS, there might be some script updates needed to run the appropriate tools on each platform).&lt;/li&gt;
&lt;li&gt;This same process should work for Lite Touch task sequences too, but I&amp;rsquo;ve not tried that yet.&lt;/li&gt;
&lt;li&gt;I cheated on the task sequence step MOF class definitions.&amp;nbsp; While the &amp;ldquo;source&amp;rdquo; files for these are in the ConfigMgr (_TaskSequenceProvider.mof) and MDT 2012 (Microsoft.BDD.CM12Actions.mof) installation directories, these files are not easy to read from a script.&amp;nbsp; So I merged these files together, then put XML &amp;ldquo;wrapper&amp;rdquo; around each step to make it easier to display the MOF details.&lt;/li&gt;
&lt;li&gt;I tried a variety of debuggers (there are several included in the debugging tools download) to try to get one that I could drive via a script, but I had issues with them that prevented complete automation.&amp;nbsp; That&amp;rsquo;s why you have to manually type &amp;ldquo;g&amp;rdquo; and &amp;ldquo;q&amp;rdquo; to interact with the debugger directly.&amp;nbsp; I suspect this is fixable, but I haven&amp;rsquo;t had a chance to try it.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t use this with live, production task sequences.&amp;nbsp; Think of it more as a &amp;ldquo;learning&amp;rdquo; tool that you can use in your lab to figure out what happens during a task sequence.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t call Microsoft for support.&amp;nbsp; You can e-mail me with comments and suggestions if you would like.&amp;nbsp; The standard Microsoft disclaimer:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;This script code is provided as is with no guarantee or warranty concerning the usability or impact on systems and may be used, distributed, and modified in any way provided the parties agree and acknowledge the Microsoft or Microsoft Partners have neither accountability or responsibility for results produced by use of this script. Microsoft will not provide any support through any means.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Finally&lt;/h2&gt;
&lt;p&gt;If you manage to set this up successfully, or if you run into any issues, please e-mail me at &lt;a href="mailto:mniehaus@microsoft.com"&gt;mniehaus@microsoft.com&lt;/a&gt; to let me know.&amp;nbsp; I think the instructions and scripts should work, but I offer no guarantees &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2654.wlEmoticon_2D00_smile_5F00_1581F942.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3493513" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-49-35-13/InsideTS.zip" length="83101" type="application/zip" /><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>Have you tried the Application Approval Workflow solution accelerator?</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/03/31/have-you-tried-the-application-approval-workflow-solution-accelerator.aspx</link><pubDate>Fri, 30 Mar 2012 23:46:14 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3489460</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3489460</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/03/31/have-you-tried-the-application-approval-workflow-solution-accelerator.aspx#comments</comments><description>&lt;p&gt;System Center 2012 Configure Manager includes an application catalog web site, which allows end users to select the applications that they want to install.&amp;#160; As part of this, they provide the ability to specify that approval is required before the software can be installed, a required feature in most enterprises.&amp;#160; If you aren’t familiar with the application catalog, the blog posting at &lt;a title="http://blogs.technet.com/b/ptsblog/archive/2011/12/20/configuration-manager-2012-rc-configure-software-catalogue-portal-and-publish-applications.aspx" href="http://blogs.technet.com/b/ptsblog/archive/2011/12/20/configuration-manager-2012-rc-configure-software-catalogue-portal-and-publish-applications.aspx"&gt;http://blogs.technet.com/b/ptsblog/archive/2011/12/20/configuration-manager-2012-rc-configure-software-catalogue-portal-and-publish-applications.aspx&lt;/a&gt; goes through the flow (although it’s slightly out of date, it gets the point across).&lt;/p&gt;  &lt;p&gt;But out of the box, approvals come from exactly one source:&amp;#160; the ConfigMgr administrator.&amp;#160; What if you want others to do the approvals (mainly because you have better things to do)?&amp;#160; That’s where the newest free solution accelerator comes in.&amp;#160; The Application Approval Workflow solution accelerator was announced on the Service Manager blog at the beginning of this week:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/servicemanager/archive/2012/03/26/application-approval-workflow-aaw-solution-accelerator-beta-now-available.aspx" href="http://blogs.technet.com/b/servicemanager/archive/2012/03/26/application-approval-workflow-aaw-solution-accelerator-beta-now-available.aspx"&gt;http://blogs.technet.com/b/servicemanager/archive/2012/03/26/application-approval-workflow-aaw-solution-accelerator-beta-now-available.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The solution works by leveraging three different System Center 2012 products:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configuration Manager, for showing the application catalog and accepting user requests.&lt;/li&gt;    &lt;li&gt;Service Manager, which handles the approval requests using the “service request” functionality.&amp;#160; Approvers can be defined for each application, groups of applications, groups of users, etc.&lt;/li&gt;    &lt;li&gt;Orchestrator, which is responsible for doing the behind-the-scenes work coordinating the activities between Configuration Manager and Service Manager.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The beta ends soon, so download quickly.&amp;#160; Expect to see more about this at MMS 2012 too.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3489460" width="1" height="1"&gt;</description></item><item><title>MDT 2012 New Feature: Monitoring</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-monitoring.aspx</link><pubDate>Fri, 09 Mar 2012 08:40:43 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3485653</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3485653</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-monitoring.aspx#comments</comments><description>&lt;p&gt;I was going to do a blog posting talking about how to troubleshoot issues with the new monitoring feature available in MDT 2012 for Lite Touch deployments, but then I realized I’ve not yet done an initial post talking about the feature (although I did mention it in a previous blog posting talking about DaRT integration).&amp;#160; So I guess I need to start with more of an overview.&lt;/p&gt;  &lt;p&gt;Over the years, there have been requests for a way to see what deployments are presently in progress.&amp;#160; Way back when, we had a MOM management pack that tried to do this, but there were numerous challenges with that so we ended up removing it – we needed something much simpler.&amp;#160; So with MDT 2012, we implemented something simpler to monitor Lite Touch deployments.&amp;#160; To enable this, just check one box in the deployment share properties:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/5481.image_5F00_32FCD9F7.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2335.image_5F00_thumb_5F00_0B565DCD.png" width="581" height="437" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you do this, two things happen:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A new service, the “Microsoft Deployment Toolkit Monitor Service” (short name MDT_Monitor), is installed on the computer.&amp;#160; This service receives events from the computers being monitored, tracking each computer and how far it is in the deployment process.&amp;#160; It also provides this tracking data to Deployment Workbench for you, the administrator, to see.&lt;/li&gt;    &lt;li&gt;The CustomSettings.ini file is modified to add a new entry specifying the URL (a combination of the host name and port specified in the deployment share settings) to be used for monitoring.&amp;#160; This is how clients know where to send information.&amp;#160; The MDT scripts (through their use of ZTIUtility.vbs) will automatically send events to this URL.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That’s all there is to it.&amp;#160; Once you do that, you should be able to track all subsequent deployments via the “Monitoring” node in Deployment Workbench:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2656.image_5F00_38D77D90.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/5468.image_5F00_thumb_5F00_7182279D.png" width="584" height="439" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you look at the properties of any of the computers being monitored, you can see the details:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7522.image_5F00_4328A1F0.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/5700.image_5F00_thumb_5F00_57ADF16E.png" width="588" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You’ll notice that the display automatically updates every 10 seconds, so you can watch the computer progress.&amp;#160; Also, there are three possible buttons (two of which are shown below):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Remote Desktop.&amp;#160; This button runs the Remote Desktop Client (MSTSC.EXE), specifying the host name to connect to on the command line.&amp;#160; (This will only work if the computer is presently in a full OS and remote desktop is enabled and accessible through the firewall.&amp;#160; It won’t work if the computer is in Windows PE.)&lt;/li&gt;    &lt;li&gt;VM Connection.&amp;#160; This button will only show up if you are using a Hyper-V VM.&amp;#160; If you click it, it will run the Hyper-V connection tool (VMConnect.exe) to connect to the host and VM name of the machine.&amp;#160; (We gather that information from the Hyper-V integration components from ZTIGather.wsf and pass those values along to the monitor service.&amp;#160; Because the integration components don’t run in Windows PE, we can only get this information when in a full OS, so this button will not be enabled when starting a new computer deployment from Windows PE.&amp;#160; Also, this requires that the Hyper-V host be accessible from the computer running Deployment Workbench.)&lt;/li&gt;    &lt;li&gt;DaRT Remote Control.&amp;#160; This button will only show up if DaRT has been integrated into the MDT Lite Touch boot image.&amp;#160; It will run the DaRT Remote Control Viewer, passing along the computer’s IP address, DaRT ticket number, and listening port number, using those values to automatically initiate a remote control session.&amp;#160; (This will only work when the computer is in Windows PE, because the DaRT remote control agent only runs in Windows PE.)&amp;#160; See &lt;a title="http://blogs.technet.com/b/mniehaus/archive/2011/11/28/mdt-2012-new-feature-dart-integration.aspx" href="http://blogs.technet.com/b/mniehaus/archive/2011/11/28/mdt-2012-new-feature-dart-integration.aspx"&gt;http://blogs.technet.com/b/mniehaus/archive/2011/11/28/mdt-2012-new-feature-dart-integration.aspx&lt;/a&gt; for more information about the DaRT integration.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A few other details:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The computers will be automatically removed after three days, to keep the database from getting too big.&lt;/li&gt;    &lt;li&gt;If the monitoring service doesn’t hear from a computer for more than four hours, it considers the machine “unresponsive” – so if you see that status in the Workbench list, that’s why.&lt;/li&gt;    &lt;li&gt;Every time a deployment task sequence starts, completes, or fails, an event log message will be written by the service.&amp;#160; So if you want to trigger some activity based on these events, you can easily do so.&lt;/li&gt;    &lt;li&gt;You might think that IIS would be required for the MDT_Monitor service, but it’s not.&amp;#160; It’s leveraging features of the .NET Framework to run a “mini web server” as part of the service itself.&lt;/li&gt;    &lt;li&gt;You might also think that a SQL database would be required to store the details.&amp;#160; Well, there is one, but you don’t need to install SQL Server to use it.&amp;#160; MDT uses a SQL Compact database; all the files needed are installed as part of MDT (and only used if monitoring is enabled).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s the quick overview.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3485653" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>MDT 2012 New Feature: Item Sorting</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-item-sorting.aspx</link><pubDate>Fri, 09 Mar 2012 00:49:22 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3485615</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3485615</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/03/09/mdt-2012-new-feature-item-sorting.aspx#comments</comments><description>&lt;p&gt;For those of you who have already installed MDT 2012 RC1, you might notice that there is a new behavior in Deployment Workbench:&amp;#160; It will keep the list of items (applications, drivers, OS packages, task sequences) in alphabetical order.&lt;/p&gt;  &lt;p&gt;Now when you first install MDT 2012 RC1, you might notice that the items aren’t sorted right away – you have to change something in the folder first.&amp;#160; As soon as you do (e.g. add an item, rename an item), the items in that folder will be sorted.&lt;/p&gt;  &lt;p&gt;Keeping the list of folders sorted is a much bigger challenge, so at this point they will still show up in the order that they were added. That’s something we will have to look at again in a future version.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3485615" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>Trying to install ConfigMgr 2012 RC2?  Make sure you have the right SQL…</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/01/18/trying-to-install-configmgr-2012-rc2-make-sure-you-have-the-right-sql.aspx</link><pubDate>Wed, 18 Jan 2012 23:41:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3476176</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3476176</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/01/18/trying-to-install-configmgr-2012-rc2-make-sure-you-have-the-right-sql.aspx#comments</comments><description>&lt;p&gt;Now that Configuration Manager 2012 RC2 is available, people will certainly start updating their labs – and finding out that the SQL version check in the ConfigMgr installer is looking for some very specific SQL maintenance levels.&amp;#160; (I’ve pulled out plenty of my own hair doing this recently.)&amp;#160; The release notes cover the supported versions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Supported versions of SQL Server 2008 for RC2:&lt;/b&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;SQL Server 2008 SP2 Standard and Enterprise CU7&lt;/li&gt;      &lt;li&gt;SQL Server 2008 R2 SP1 and CU4&lt;/li&gt;      &lt;li&gt;SQL Server Express 2008 R2 and CU4&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;If you are running SQL 2008 SP2, install CU7 from &lt;a href="http://support.microsoft.com/kb/2617148"&gt;http://support.microsoft.com/kb/2617148&lt;/a&gt;. If you are running SQL Server 2008 R2 SP1, use CU4 from &lt;a href="http://support.microsoft.com/kb/2633146"&gt;http://support.microsoft.com/kb/2633146&lt;/a&gt;.&amp;#160; If you aren’t yet on the needed service pack levels, upgrade now, then install the cumulative updates :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3476176" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>Customizing Wizards with MDT 2012</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/01/07/customizing-wizards-with-mdt-2012.aspx</link><pubDate>Sat, 07 Jan 2012 22:57:28 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3474394</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3474394</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/01/07/customizing-wizards-with-mdt-2012.aspx#comments</comments><description>&lt;p&gt;Many of you have customized the MDT 2010 wizards, and I expect that will be fairly common with MDT 2012 as well – after all, one of the design goals with having HTA-based wizards is to enable customization by creative IT pros.&amp;#160; But the process is going to be slightly different with MDT 2012.&lt;/p&gt;  &lt;p&gt;First, let’s review the basic process most of you would go through with MDT 2010:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the MDT Wizard Editor from &lt;a title="http://mdtwizardeditor.codeplex.com/" href="http://mdtwizardeditor.codeplex.com/"&gt;http://mdtwizardeditor.codeplex.com/&lt;/a&gt;.&amp;#160; This makes editing the wizard simpler (although not necessarily trivial – there can still be a fair amount of work to do, depending on the extent of the changes that you intend to make).&lt;/li&gt;    &lt;li&gt;Open the “DeployWiz_Definition_ENU.xml” file and make the necessary changes:&amp;#160; Adding new panes, changing the HTML and properties of existing pane, etc.&lt;/li&gt;    &lt;li&gt;Using Notepad or any other text editor, add any custom scripting to DeployWiz_Initialization.vbs or DeployWiz_Validation.vbs.&lt;/li&gt;    &lt;li&gt;Test out all the changes using the MDT Wizard Editor, or if this isn’t possible (due to conditions on the wizard pane or logic contained in the pane itself) drop the changed files into the deployment share and try a deployment.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So it’s quite reasonable for you to try the same thing with MDT 2012.&amp;#160; But you’ll quickly discover that you can’t get very far.&amp;#160; You can open the file, but as soon as you click on one of the wizard panes in the left-hand column, you get this exception:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7462.image_5F00_075FFD40.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-52-09-metablogapi/6472.image_5F00_thumb_5F00_6E347D3A.png" width="327" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So what causes this?&amp;#160; Well, if you look at the files in the deployment share, you’ll notice that there are quite a few more that start with “DeployWiz”.&amp;#160; That’s because the entire wizard has been restructured.&amp;#160; Instead of having one set of large files (DeployWiz_Definition_ENU.xml, DeployWiz_Initialization.vbs, DeployWiz_Validation.vbs), there are now separate files for each wizard pane (e.g. DeployWiz_ComputerName.xml and DeployWiz_ComputerName.vbs).&amp;#160; The original files (DeployWiz_Definition_ENU.xml, etc.) are still around, but are much smaller – the bulk of the content has been separated out.&lt;/p&gt;  &lt;p&gt;Why was this done?&amp;#160; Mainly because it makes the wizard code much easier to maintain.&amp;#160; It’s now much more obvious what script pieces are used for which wizard panes.&amp;#160; Additionally, it makes the wizard easier to test, as you can work on a single pane at a time without worrying about breaking another unrelated pane.&lt;/p&gt;  &lt;p&gt;The individual panes are then tied together by the DeployWiz_Definiton_ENU.xml file.&amp;#160; If you look at this file, you’ll see that it’s pretty short, with entries like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;Pane id=&amp;quot;SelectTaskSequence&amp;quot; &lt;font style="background-color: #ffff00"&gt;reference=&amp;quot;DeployWiz_SelectTS.xml&amp;quot;&lt;/font&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Condition&amp;gt;&amp;lt;![CDATA[UCASE(Property(&amp;quot;SkipTaskSequence&amp;quot;))&amp;lt;&amp;gt;&amp;quot;YES&amp;quot; ]]&amp;gt;&amp;lt;/Condition&amp;gt;      &lt;br /&gt;&amp;lt;/Pane&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;All that is there is a reference (or link) to the separate files for each wizard pane, along with the conditions for when each wizard pane should be displayed.&amp;#160; (This helps with the testing as well:&amp;#160; By keeping the conditions in the DeployWiz_Definition_ENU.xml file instead of in the individual wizard files, those conditions don’t get in the way of “offline testing”, e.g. running just that one single wizard pane without going through a full deployment.)&lt;/p&gt;  &lt;p&gt;So why does that cause problems with the Wizard Editor?&amp;#160; Simple:&amp;#160; It doesn’t understand that the wizard pane body is in a separate file.&amp;#160; It can’t follow the reference link (highlighted in yellow above) to the separate wizard pieces.&amp;#160; So does that mean the Wizard Editor is no longer useful?&amp;#160; Not at all – you can still use it to work on (and test) individual pages like DeployWiz_ComputerName.xml:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7558.image_5F00_49A2EFB6.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-52-09-metablogapi/0537.image_5F00_thumb_5F00_142A2D91.png" width="341" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But you’ll need to edit the DeployWiz_Definition_ENU.xml file by hand.&lt;/p&gt;  &lt;p&gt;I’m working on a new version of the Wizard Editor in my “free time” so that it learns how to follow these links (with other improvements added in too), but it might take a while before I can complete that work.&lt;/p&gt;  &lt;p&gt;So what does the recommended workflow look like if you wanted to add a new wizard pane to MDT 2012?&amp;#160; Here are the basics:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the MDT Wizard Editor from &lt;a title="http://mdtwizardeditor.codeplex.com/" href="http://mdtwizardeditor.codeplex.com/"&gt;http://mdtwizardeditor.codeplex.com/&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Make a copy of files for one of the wizard pane files.&amp;#160; For example, copy DeployWiz_AdminPassword.xml as “MyPane.xml” and DeployWiz_AdminPassword.vbs as “MyPane.vbs”.&lt;/li&gt;    &lt;li&gt;Use the Wizard Editor to customize and test the new wizard pane.&lt;/li&gt;    &lt;li&gt;When you are happy with the functionality of the new wizard pane, add an entry for it into DeployWiz_Definition_ENU.xml (just like all the others, with any conditions that you might need), then test it out as part of a normal deployment.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This new flow has another advantage too:&amp;#160; It makes it much easier to integrate a new wizard pane into MDT.&amp;#160; You don’t have to worry about reintegrating your changes into the “big” XML file each time you upgrade MDT – your separate files will continue to exist, untouched, so all you will need to do is add the “link” into DeployWiz_Definition_ENU.xml again and you’re good to go.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3474394" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>Creating the ConfigMgr “System Management” Container with PowerShell</title><link>http://blogs.technet.com/b/mniehaus/archive/2012/01/05/creating-the-configmgr-system-management-container-with-powershell.aspx</link><pubDate>Thu, 05 Jan 2012 09:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3474049</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3474049</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2012/01/05/creating-the-configmgr-system-management-container-with-powershell.aspx#comments</comments><description>&lt;p&gt;One of the steps in the Configuration Manager installation process is to manually create the &amp;ldquo;System Management&amp;rdquo; container in Active Directory, then give the ConfigMgr computer account the ability to create objects in it.&amp;nbsp; Yes, even with Configuration Manager 2012, this is still something that needs to be done manually.&lt;/p&gt;
&lt;p&gt;So that was this evening&amp;rsquo;s challenge:&amp;nbsp; Automating that seemingly simple task.&amp;nbsp; As with all automation tasks, you always hope that someone has already solved the problem.&amp;nbsp; But even with searching multiple search engines (something that always pains me), I didn&amp;rsquo;t really find what I was looking for.&amp;nbsp; (No executables, no third-party tools, no ugly ADSI code, and ideally no VBScript &amp;ndash; PowerShell is the future.)&amp;nbsp; So I created a new PowerShell script, incorporating bits and pieces from several other scripts.&amp;nbsp; The basic steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Import the &amp;ldquo;ActiveDirectory&amp;rdquo; PowerShell module (which only exists in Windows Server 2008 R2, so that is required).&lt;/li&gt;
&lt;li&gt;Figure out our domain name (so we don&amp;rsquo;t have to hard-code a value in the script).&lt;/li&gt;
&lt;li&gt;Create the &amp;ldquo;System Management&amp;rdquo; container if it doesn&amp;rsquo;t already exist.&lt;/li&gt;
&lt;li&gt;Get the computer account (from the environment, so we don&amp;rsquo;t need to hard-code that either).&lt;/li&gt;
&lt;li&gt;Add the computer account to the &amp;ldquo;System Management&amp;rdquo; container&amp;rsquo;s access control list, giving it full access.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sounds simple enough, and except for the ACL part, it is.&amp;nbsp; The complete script:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;#Requires -version 2.0&lt;/p&gt;
&lt;p&gt;# *************************************************************************** &lt;br /&gt;# &lt;br /&gt;# File:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SystemManagement.ps1 &lt;br /&gt;# &lt;br /&gt;# Version:&amp;nbsp;&amp;nbsp; 1.0 &lt;br /&gt;# &lt;br /&gt;# Author:&amp;nbsp;&amp;nbsp;&amp;nbsp; Michael Niehaus &lt;br /&gt;# &lt;br /&gt;# Purpose:&amp;nbsp;&amp;nbsp; Create the AD "System Management" container needed for &lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigMgr 2007 and 2012, and grant access to the current &lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; computer account. &lt;br /&gt;# &lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This requires PowerShell 2.0 and Windows Server 2008 R2. &lt;br /&gt;# &lt;br /&gt;# Usage:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run this script as a domain administrator, from the ConfigMgr &lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server.&amp;nbsp; No parameters are required. &lt;br /&gt;# &lt;br /&gt;# ------------- DISCLAIMER ------------------------------------------------- &lt;br /&gt;# This script code is provided as is with no guarantee or waranty concerning &lt;br /&gt;# the usability or impact on systems and may be used, distributed, and &lt;br /&gt;# modified in any way provided the parties agree and acknowledge the &lt;br /&gt;# Microsoft or Microsoft Partners have neither accountabilty or &lt;br /&gt;# responsibility for results produced by use of this script. &lt;br /&gt;# &lt;br /&gt;# Microsoft will not provide any support through any means. &lt;br /&gt;# ------------- DISCLAIMER ------------------------------------------------- &lt;br /&gt;# &lt;br /&gt;# ***************************************************************************&lt;/p&gt;
&lt;p&gt;# Load the AD module&lt;/p&gt;
&lt;p&gt;Import-Module ActiveDirectory&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Figure out our domain&lt;/p&gt;
&lt;p&gt;$root = (Get-ADRootDSE).defaultNamingContext&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Get or create the System Management container&lt;/p&gt;
&lt;p&gt;$ou = $null &lt;br /&gt;try &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ou = Get-ADObject "CN=System Management,CN=System,$root" &lt;br /&gt;} &lt;br /&gt;catch &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Verbose "System Management container does not currently exist." &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;if ($ou -eq $null) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ou = New-ADObject -Type Container -name "System Management" -Path "CN=System,$root" -Passthru &lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Get the current ACL for the OU&lt;/p&gt;
&lt;p&gt;$acl = get-acl "ad:CN=System Management,CN=System,$root"&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Get the computer's SID&lt;/p&gt;
&lt;p&gt;$computer = get-adcomputer $env:ComputerName &lt;br /&gt;$sid = [System.Security.Principal.SecurityIdentifier] $computer.SID&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Create a new access control entry to allow access to the OU&lt;/p&gt;
&lt;p&gt;$ace = new-object System.DirectoryServices.ActiveDirectoryAccessRule $sid, "GenericAll", "Allow", "All"&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;# Add the ACE to the ACL, then set the ACL to save the changes&lt;/p&gt;
&lt;p&gt;$acl.AddAccessRule($ace) &lt;br /&gt;Set-acl -aclobject $acl "ad:CN=System Management,CN=System,$root"&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The same script is attached.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3474049" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-47-40-49/SystemManagement.zip" length="1114" type="application/zip" /><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>MDT 2012 New Feature: Gather improvements</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/12/02/mdt-2012-new-feature-gather-improvements.aspx</link><pubDate>Fri, 02 Dec 2011 23:31:36 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3468731</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3468731</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/12/02/mdt-2012-new-feature-gather-improvements.aspx#comments</comments><description>&lt;p&gt;Sometimes it’s the little things that most people fail to notice that need some attention.&amp;#160; In this case, we’re talking about new task sequence variables automatically set by the MDT “Gather” process (specifically, the ZTIGather.wsf script).&amp;#160; There are a few new ones in MDT 2012:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;IsOnBattery&lt;/strong&gt;.&amp;#160; This will be set to true if the machine is currently running using a battery with no AC power.&amp;#160; This can be useful in any deployment – you really don’t want a computer to turn off because the battery went dead during a deployment.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;VMHost&lt;/strong&gt;.&amp;#160; When a virtual machine is running on a Hyper-V server and has the Hyper-V integration components installed, we can determine the name of the Hyper-V server (the VM host) that the VM is running on.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;VMName&lt;/strong&gt;.&amp;#160; This also comes from the Hyper-V integration components, telling us the name of the virtual machine in Hyper-V, which might be different than the “computer name” (the name given to the OS) of the VM.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We also made a few other related changes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The “&lt;strong&gt;Make&lt;/strong&gt;” property now detects Xen, in addition to the the other platforms that could be detected in MDT 2010 Update 1 (Hyper-V, VMWare, VirtualBox).&lt;/li&gt;    &lt;li&gt;We fixed the “&lt;strong&gt;SMSDP&lt;/strong&gt;” property, so it should now always return a valid server name for the ConfigMgr distribution point that the boot image associated with the task sequence came from.&amp;#160; (The task sequence doesn’t have a distribution point, so we had to pick a package that each task sequence should have.)&lt;/li&gt;    &lt;li&gt;We changed the “&lt;strong&gt;OSVersion&lt;/strong&gt;” property so that it doesn’t generate an error on unknown OSes (e.g. Windows 8).&amp;#160; We don’t plan to add new OSes to the list set by this function, so consider this variable to be “functionally stabilized” and “obsolete”.&amp;#160; It would be better to use OSCurrentVersion or OSCurrentBuild (maybe combined with IsServerOS) instead.&lt;/li&gt;    &lt;li&gt;We added progress reporting (which works with Lite Touch and ConfigMgr deployments) so that you can see what ZTIGather is doing during the process.&amp;#160; This will be especially useful when you are doing database queries: you’ll be able to see which ones are taking too long.&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3468731" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>MDT 2012 New Feature: DaRT integration</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/11/28/mdt-2012-new-feature-dart-integration.aspx</link><pubDate>Mon, 28 Nov 2011 06:31:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3467471</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3467471</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/11/28/mdt-2012-new-feature-dart-integration.aspx#comments</comments><description>&lt;p&gt;In MDT 2012 Beta 2, a new feature has been added: the ability to integrate the &lt;a href="http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/mdop/dart.aspx"&gt;Microsoft Diagnostics and Recovery Toolset (DaRT)&lt;/a&gt; 7 into the Lite Touch boot images generated by MDT.&amp;#160; The end result is a new option when booted into Windows PE:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/5824.image_5F00_2E2349F4.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-52-09-metablogapi/7571.image_5F00_thumb_5F00_5823481C.png" width="408" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And when you choose the “Run DaRT Tools” option, you can see all the tools that DaRT offers:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/8078.image_5F00_456E4E65.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-52-09-metablogapi/8551.image_5F00_thumb_5F00_768D8905.png" width="414" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;While you will typically see DaRT positioned as more of a “recovery” tool, you can probably see the “diagnostics” benefits too, using the provided tools to inspect the current computer.&amp;#160; &lt;/p&gt;  &lt;p&gt;One of the new features in DaRT 7 is especially useful: remote control.&amp;#160; Using this you can access a remote computer even while it is in Windows PE.&amp;#160; There is a client-side agent for this that is automatically executed as soon as the MDT “Welcome” wizard completes.&amp;#160; (We don’t start it before then because you might be using static IP addressing that would be configured through the “Welcome” wizard.&amp;#160; If you aren’t planning to use static IP, you can skip the “Welcome” wizard by setting “SkipBDDWelcome=YES” in CustomSettings.ini.)&amp;#160; You’ll see this minimized on the bottom left of the screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/0243.image_5F00_5CB952D6.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-52-09-metablogapi/2210.image_5F00_thumb_5F00_3BC5E02F.png" width="417" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you restored that to a full window, you would see that it is listening for connections:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/0045.image_5F00_420CB6BD.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-52-09-metablogapi/8078.image_5F00_thumb_5F00_21194416.png" width="422" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From a computer with DaRT installed, you can run the “DaRT Remote Connection Viewer” to make the connection, just type in the ticket number, IP address, and port.&amp;#160; (If you’ve enabled the MDT 2012 monitoring feature, to be discussed more in a future blog posting, this process is automated – the connection details are automatically provided.)&amp;#160; The connection performance is good, just like you are using a typical RDP connection.&amp;#160; (Really, that’s exactly what you are doing – this uses the same underlying protocol as a typical remote desktop connection.)&lt;/p&gt;  &lt;p&gt;So how do you enable the DaRT integration?&amp;#160; The MDT documentation explains this, although there is an error in step #1, which I’ve rewritten below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h2&gt;Enable DaRT support&lt;/h2&gt;    &lt;ol&gt;     &lt;li&gt;Copy the &lt;font style="background-color: #ffff00"&gt;Tools.cab&lt;/font&gt; file from the DaRT installation &lt;font style="background-color: #ffff00"&gt;to the appropriate tools folder (either Tool\x86 or Tools\x64) in a deployment share&lt;/font&gt;. &lt;/li&gt;      &lt;li&gt;Click Start, and then point to All Programs. Point to Microsoft Deployment Toolkit, and then click Deployment Workbench. &lt;/li&gt;      &lt;li&gt;In the Deployment Workbench console tree, go to Deployment Workbench/Deployment Shares &lt;/li&gt;      &lt;li&gt;In the details pane, click deployment_share (where deployment_share is the name of the deployment share for which you want to enable DaRT support). &lt;/li&gt;      &lt;li&gt;In the Actions pane, click Properties.        &lt;br /&gt;The deployment_share Properties dialog box appears (where deployment_share is the name of the deployment share for which you want to enable DaRT support). &lt;/li&gt;      &lt;li&gt;In the deployment_share Properties dialog box, on the Windows PE tab, select platform (where deployment_share is the name of the deployment share for which you want to enable DaRT support and platform is the processor architecture platform for which you want to enable DaRT support), select the Microsoft Diagnostics and Recovery Toolkit (DaRT) check box, and then click OK. &lt;/li&gt;      &lt;li&gt;Update the deployment share.        &lt;br /&gt;As a part of updating the deployment share, the DaRT files are integrated with the Lite Touch Windows PE .wim files, which automatically include Windows RE. When the .wim files are installed on the target computer, DaRT support will automatically be included.         &lt;br /&gt;Note For more information about updating a deployment share see &lt;a href="mk:@MSITStore:C:%5CEnlistments%5Cwdv3.0%5CSource%5CDocumentation%5CCHM%5CMicrosoft%20Deployment%20Toolkit%20Documentation%20Library.chm::/UpdatingADeploymentShare.htm#_Updating_a_Deployment"&gt;Update a Deployment Share in the Deployment Workbench&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Close all open windows and dialog boxes. &lt;/li&gt;   &lt;/ol&gt; &lt;/blockquote&gt;  &lt;p&gt;So how do you know which folder to copy the “Tools.cab” into?&amp;#160; Well, when you install DaRT on an x86 OS, you get an x86 Tools.cab, so that goes into the Tools\x86 folder.&amp;#160; Conversely, when you install DaRT on an x64 OS, you get an x64 Tools.cab, so that goes into the Tools\x64 folder.&amp;#160; (Yes, that’s less than ideal as it means you need an x86 and an x64 install of DaRT to get both platform files.&amp;#160; We’re working on that.&amp;#160; In the meantime, you can cheat: you can do an administrative install of the opposite platform using “msiexec.exe /a MSDart70msi”.&amp;#160; That will end up creating the folder structure, but not any of the shortcuts, for the opposite platform install.)&lt;/p&gt;  &lt;p&gt;Once you’ve copied the files into the right place, you can then see a new Windows PE component in the deployment share properties:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7180.image_5F00_0E644A5F.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-52-09-metablogapi/8463.image_5F00_thumb_5F00_6DDD0AAC.png" width="422" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check the DaRT checkbox (for each platform), apply the changes, update the deployment share, and you’re done.&lt;/p&gt;  &lt;p&gt;A few common questions:&lt;/p&gt;  &lt;h3&gt;Q: How do I get DaRT?&lt;/h3&gt;  &lt;p&gt;DaRT is a component of the Microsoft Desktop Optimization Pack (MDOP).&amp;#160; To get DaRT, you need to get MDOP.&amp;#160; To get MDOP, you need to have Software Assurance on your client computers (or be using Windows Intune).&amp;#160; If you have any questions, contact your local Microsoft account team.&amp;#160; (Don’t know who they are?&amp;#160; Drop me an e-mail and I’ll find out.)&lt;/p&gt;  &lt;h3&gt;Q: How does monitoring help with this?&lt;/h3&gt;  &lt;p&gt;The DaRT remote control agent writes a file to the X:\Windows\system32 folder with the details needed to make a remote control connection (ticket, IP address, port).&amp;#160; This file is found by the MDT “Gather” script (you can see the values in the BDD.LOG).&amp;#160; When monitoring is enabled, those details are passed along to the monitoring server and stored, making it easy to initiate remote control with a simple button push:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/8078.image_5F00_3F8384FF.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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-52-09-metablogapi/4452.image_5F00_thumb_5F00_3F17520A.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This initiates the DaRT Remote Connection Viewer with command line parameters with the required details (ticket, IP address, port).&lt;/p&gt;  &lt;h3&gt;Q: Can this be done with Configuration Manager too?&lt;/h3&gt;  &lt;p&gt;Well, sort of.&amp;#160; If you copy the Tools.cab files into the C:\Program Files\Microsoft Deployment Toolkit\Templates\Distribution\Tools\&amp;lt;platform&amp;gt; folder, you will then see the “Microsoft Diagnostics and Recover Tools (DaRT)” option in the MDT wizard for creating a new boot image 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-52-09-metablogapi/0068.image_5F00_5EC62BD2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 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-52-09-metablogapi/8561.image_5F00_thumb_5F00_573ABC65.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So that adds the pieces into the boot image, but you would still need to run them as part of a ConfigMgr task sequence with a command line like “cmd.exe /c start /min x:\windows\system32\RemoteRecovery.exe -nomessage”.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3467471" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category></item><item><title>SCCM Guru webcast coming up soon</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/11/10/sccm-guru-webcast-coming-up-soon.aspx</link><pubDate>Thu, 10 Nov 2011 11:44:38 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3464399</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3464399</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/11/10/sccm-guru-webcast-coming-up-soon.aspx#comments</comments><description>&lt;p&gt;As part of the BDNA “SCCM Guru” webcast series, I will be presenting on November 17th from 11:00am to 12:00pm Pacific time.&amp;#160; The topic of the presentation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h1&gt;Inside a ConfigMgr 2012 OS Deployment Task Sequence&lt;/h1&gt;    &lt;p&gt;In this webcast with Michael Niehaus, Microsoft’s “Deployment Guy”, you will learn:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The inner workings of a task sequence, showing the various steps in the process &lt;/li&gt;      &lt;li&gt;How information is passed to and between each step &amp;amp; what the steps do &lt;/li&gt;      &lt;li&gt;How to troubleshoot when things don’t go as expected&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;I am planning to do something different for this session – with a week to go for preparation (and being on vacation for most of that time), it will be interesting to see how much of my “vision” I’ll be able to get ready in time.&amp;#160; (As an added complication, I will be presenting while jetlagged – I arrive back in Seattle the evening before, after a twelve-hour time change.&amp;#160; Don’t worry, I’ll have lots of caffeine handy.)&lt;/p&gt;  &lt;p&gt;To register for the session, please visit this link:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://info.bdna.com/20111116-Webcast-SCCM-Guru-Michael-Niehaus-RegistrationPage.html" href="http://info.bdna.com/20111116-Webcast-SCCM-Guru-Michael-Niehaus-RegistrationPage.html"&gt;http://info.bdna.com/20111116-Webcast-SCCM-Guru-Michael-Niehaus-RegistrationPage.html&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=3464399" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>Windows Thin PC: Another flavor of Windows 7</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/09/08/windows-thin-pc-another-flavor-of-windows-7.aspx</link><pubDate>Thu, 08 Sep 2011 07:15:16 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3451787</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3451787</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/09/08/windows-thin-pc-another-flavor-of-windows-7.aspx#comments</comments><description>&lt;p&gt;As I discovered in recent TechEd presentations in Australia and New Zealand, not too many people are familiar with the newest members of the Windows 7 family.&amp;#160; So let’s explore one of those in more detail, called Windows Thin PC. For the full marketing overview, you can review these pages:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/windows/enterprise/solutions/virtualization/products/thinpc.aspx" href="http://www.microsoft.com/windows/enterprise/solutions/virtualization/products/thinpc.aspx"&gt;http://www.microsoft.com/windows/enterprise/solutions/virtualization/products/thinpc.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/licensing/software-assurance/windows-thin-pc.aspx" href="http://www.microsoft.com/licensing/software-assurance/windows-thin-pc.aspx"&gt;http://www.microsoft.com/licensing/software-assurance/windows-thin-pc.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To summarize, Windows Thin PC is a modified version of Windows 7 (built from a Windows Embedded Standard 7 base) that is available as a Software Assurance benefit (for anyone with Software Assurance on their desktop operating systems).&amp;#160; It has a reduced footprint (1.1GB compressed WIM, under 5GB when expanded on disk), and as a result has lighter hardware requirements:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1GHz processor&lt;/li&gt;    &lt;li&gt;1GB RAM&lt;/li&gt;    &lt;li&gt;16GB hard disk space&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So it should come as no surprise that it is designed to be used as a thin client OS, enabling older or lesser hardware to connect to your VDI or terminal services infrastructure to run most applications.&lt;/p&gt;  &lt;p&gt;Windows Thin PC has licensing restrictions that allows very few applications to be installed and used locally.&amp;#160; From the &lt;a href="http://download.microsoft.com/download/1/4/8/148AD06A-B4BD-4078-8AFA-68F829A83E23/WinTPC%20FAQ%20v2%200.pdf"&gt;Thin PC FAQ&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Can I run applications on WinTPC?&lt;/h3&gt;    &lt;p&gt;Yes, you can run applications that fall into one of the following categories:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Security&lt;/li&gt;      &lt;li&gt;Management&lt;/li&gt;      &lt;li&gt;Terminal emulation&lt;/li&gt;      &lt;li&gt;Remote Desktop and similar technologies&lt;/li&gt;      &lt;li&gt;Web browser&lt;/li&gt;      &lt;li&gt;Media player&lt;/li&gt;      &lt;li&gt;Instant messaging client&lt;/li&gt;      &lt;li&gt;Document viewers&lt;/li&gt;      &lt;li&gt;.NET Framework and Java Virtual Machine&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;However, you cannot run any productivity applications, such as Microsoft Office or similar applications.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Again, this is pretty consistent with what you could do with dedicated thin client hardware, &lt;/p&gt;  &lt;p&gt;So what is it like to deploy this operating system?&amp;#160; It deploys just like any other version (SKU) of Windows 7.&amp;#160; MDT 2012 will officially support deploying this OS (since that where we’ve done all of our testing), but it’s not hard to get MDT 2010 Update 1 to deploy it too by removing the &amp;lt;UpgradeData&amp;gt; section from the unattend.xml that you use to deploy Windows Thin PC.&lt;/p&gt;  &lt;p&gt;What does it look like once installed?&amp;#160; Just like Windows 7, but with fewer items on the start menu:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/8561.image_5F00_58B4E625.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-52-09-metablogapi/0537.image_5F00_thumb_5F00_2FC9D11C.png" width="371" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So it’s not an operating system for everyone, but it does have its place.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3451787" width="1" height="1"&gt;</description></item><item><title>Hyper-V on Windows 8 Client!</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/09/08/hyper-v-on-windows-8-client.aspx</link><pubDate>Thu, 08 Sep 2011 02:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3451759</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3451759</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/09/08/hyper-v-on-windows-8-client.aspx#comments</comments><description>&lt;p&gt;Be sure to read the great new posting on the &amp;ldquo;Building Windows 8&amp;rdquo; blog:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://blogs.msdn.com/b/b8/archive/2011/09/07/bringing-hyper-v-to-windows-8.aspx" href="http://blogs.msdn.com/b/b8/archive/2011/09/07/bringing-hyper-v-to-windows-8.aspx"&gt;http://blogs.msdn.com/b/b8/archive/2011/09/07/bringing-hyper-v-to-windows-8.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Read through the comments too, which talk about support for sleep and hibernate.)&lt;/p&gt;
&lt;p&gt;There is one prominent statement made:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hyper-V requires a 64-bit system that has Second Level Address Translation (SLAT).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That means you have a great reason to consider using the 64-bit version of Windows 8, and why you should buy only hardware with 64-bit support.&amp;nbsp; But what about the second part of that, SLAT support?&amp;nbsp; Well, all you really need to understand is that SLAT is a processor feature that improves virtual machine performance, especially when using higher-end video cards (e.g. those used on client machines).&amp;nbsp; Read more about the benefits in the Hyper-V R2 announcement:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/dd446676(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd446676(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd446676(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This mentions that Intel and AMD have different implementations of this.&amp;nbsp; Intel calls theirs &lt;a href="http://en.wikipedia.org/wiki/Extended_Page_Table"&gt;&amp;ldquo;Enhanced Page Tables&amp;rdquo; (EPT)&lt;/a&gt;, while AMD refers to it as &lt;a href="http://en.wikipedia.org/wiki/NPT"&gt;&amp;ldquo;Nested Page Tables&amp;rdquo; (NPT)&lt;/a&gt;.&amp;nbsp; Regardless, what you really care about is whether or not a particular processor includes the support.&amp;nbsp; That&amp;rsquo;s not always easy to figure out from the vendor&amp;rsquo;s web sites.&amp;nbsp; Fortunately, there is a newly-updated tool available on the SysInternals web site called Coreinfo that will tell you all about a processor&amp;rsquo;s capabilities:&lt;/p&gt;
&lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/sysinternals/cc835722" href="http://technet.microsoft.com/en-us/sysinternals/cc835722"&gt;http://technet.microsoft.com/en-us/sysinternals/cc835722&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mark Russinovich updated this utility recently to add the ability to detect both Intel EPT and AMD NPT.&amp;nbsp; Here&amp;rsquo;s what the output would look like if your machine has an Intel processor with the needed support:&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-52-09-metablogapi/4530.clip_5F00_image002_5F00_0663E50B.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-52-09-metablogapi/2308.clip_5F00_image002_5F00_thumb_5F00_6CFBE1D0.jpg" width="406" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The AMD output will be slightly different (and not because it&amp;rsquo;s on a white background instead of a black one):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/6683.image_5F00_13C9F811.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-52-09-metablogapi/5826.image_5F00_thumb_5F00_0CAABB99.png" width="388" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In both cases, the asterisk (&amp;ldquo;*&amp;rdquo;) in the second column indicates that the feature is present.&amp;nbsp; (A minus, &amp;ldquo;-&amp;ldquo;, shows if it isn&amp;rsquo;t.)&amp;nbsp; Be careful if running this in a VM or on a machine currently running a hypervisor, as these will mask the real processor capabilities.)&lt;/p&gt;
&lt;p&gt;So check out your machines today to see if they are ready for Windows 8 client Hyper-V!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3451759" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+8/">Windows 8</category></item><item><title>Migrating application settings with USMT 4.0: Sample #2</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/08/25/migrating-application-settings-with-usmt-4-0-sample-2.aspx</link><pubDate>Wed, 24 Aug 2011 23:35:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3449032</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3449032</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/08/25/migrating-application-settings-with-usmt-4-0-sample-2.aspx#comments</comments><description>&lt;p&gt;So maybe migrating Angry Birds high scores and settings isn&amp;rsquo;t terribly useful to you.&amp;nbsp; Let&amp;rsquo;s try something a little more practical and self-serving.&amp;nbsp; Many of you are using Configuration Manager 2007 or testing Configuration Manager 2012.&amp;nbsp; As part of that, you have installed the ConfigMgr console and connected to one or more ConfigMgr sites.&amp;nbsp; When you refresh your own machine, you want those connections to be retained, because it&amp;rsquo;s too much trouble to have to type in a server name again.&lt;/p&gt;
&lt;p&gt;So it&amp;rsquo;s the same basic exercise as before:&amp;nbsp; Figure out where the ConfigMgr console stores that information (using ProcMon or even Bing searches), then build an XML manifest that says to migrate the data.&amp;nbsp; Fortunately, I already know where ConfigMgr stores that (we use that information in MDT):&amp;nbsp; it&amp;rsquo;s in the user&amp;rsquo;s registry.&amp;nbsp; The exact path is different for ConfigMgr 2007 vs. 2012:&lt;/p&gt;
&lt;p&gt;ConfigMgr 2012:&amp;nbsp;&amp;nbsp; HKCU\Software\Microsoft\ConfigMgr10\Admin UI\MRU&lt;/p&gt;
&lt;p&gt;ConfigMgr 2007:&amp;nbsp; HKCU\Software\Microsoft\ConfigMgr\AdminUI\MRU&lt;/p&gt;
&lt;p&gt;So the manifest needs to specify that these registry keys (and all values and subkeys) get backed up and restored if they exist.&amp;nbsp; Simple enough:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/0675.image_5F00_6370B502.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-52-09-metablogapi/4466.image_5F00_thumb_5F00_13B789B9.png" width="594" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few things to point out with this one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are two components defined in the same XML manifest.&amp;nbsp; You can put as many components in the file as you want, so whether you want 20 small XML files or one larger one (as you define more application settings to capture) is entirely up to you.&lt;/li&gt;
&lt;li&gt;Since these are user registry entries, the rules will be processed for each user that exists on the machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So what happens if the ConfigMgr 2007 console is installed in the old OS but not in the new OS?&amp;nbsp; Will the settings be restored?&amp;nbsp; Yes they will, as the detection rules are only used to determine on the source computer whether the component is present. (When it is detected, it will be put into a generated config.xml file too.)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3449032" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-44-90-32/ConfigMgrConsole.xml" length="1347" type="text/xml" /><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/USMT/">USMT</category></item><item><title>Migrating application settings with USMT 4.0: Sample #1</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/migrating-application-settings-with-usmt-4-0-sample-1.aspx</link><pubDate>Wed, 24 Aug 2011 12:18:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448899</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3448899</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/migrating-application-settings-with-usmt-4-0-sample-1.aspx#comments</comments><description>&lt;p&gt;Out of the box, USMT 4.0 migrates settings for Windows, Office, and various other applications (typically current versions as of 2009), mostly consumer-focused.&amp;nbsp; (See &lt;a title="http://technet.microsoft.com/en-us/library/dd560792(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd560792(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd560792(WS.10).aspx&lt;/a&gt; for the full list.)&amp;nbsp; So what if you want to migrate settings from additional applications?&amp;nbsp; Well, then you need to author your own migration XML file.&lt;/p&gt;
&lt;p&gt;First though, you need to figure out what application settings need to be migrated.&amp;nbsp; Does the application store its settings in a file?&amp;nbsp; In a registry key?&amp;nbsp; Per user or per system?&amp;nbsp; There&amp;rsquo;s no single right way to do this, so you have to do some investigative work to figure this out for each application.&amp;nbsp; Tools like &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;ProcMon from SysInternals&lt;/a&gt; can help with that, by capturing details of all registry and file accesses made by the process.&amp;nbsp; But there can be lots of data captured, so finding the data can be somewhat time-consuming.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s look at a real example using Angry Birds, which is available for download from &lt;a title="http://download.angrybirds.com/" href="http://download.angrybirds.com/"&gt;http://download.angrybirds.com/&lt;/a&gt;.&amp;nbsp; Install this on a computer, then start ProcMon and tell it to capture details from process name AngryBirds.exe:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/5314.image_5F00_0C07B3D6.png"&gt;&lt;img style="background-image: none; margin: 0px; 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-52-09-metablogapi/5488.image_5F00_thumb_5F00_6E558D3C.png" width="244" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then launch Angry Birds and click on &amp;ldquo;Play&amp;rdquo; to see where you left off &amp;ndash; at that point, you know it&amp;rsquo;s read the saved settings, wherever those came from.&amp;nbsp; At that point, you can stop the capture and begin scanning the captured data.&amp;nbsp; Usually I start at the bottom (most recent) and work my way up, looking for something &amp;ldquo;interesting&amp;rdquo;.&amp;nbsp; (What is &amp;ldquo;interesting&amp;rdquo; can vary by app, but you will begin to notice patterns that applications follow so the more applications you do this with, the better you&amp;rsquo;ll get at it.)&lt;/p&gt;
&lt;p&gt;From scanning the ProcMon output, I can see a few references to my user profile 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-52-09-metablogapi/2664.image_5F00_2477058C.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-52-09-metablogapi/5633.image_5F00_thumb_5F00_2A21F965.png" width="531" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Those files (&amp;ldquo;highscores.lua&amp;rdquo; and &amp;ldquo;settings.lua&amp;rdquo;) sound promising, especially since I noticed that the settings are per user (log in as someone else and you have different progress displayed) and I don&amp;rsquo;t see any relevant HKCU registry access in the trace.&lt;/p&gt;
&lt;p&gt;OK, so we know what we want to capture and restore.&amp;nbsp; Now we have to figure out how.&amp;nbsp; Using your favorite XML editor (I use Visual Studio), create a new XML file that looks 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-52-09-metablogapi/0511.image_5F00_4E04EBF1.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-52-09-metablogapi/4152.image_5F00_thumb_5F00_4D88932F.png" width="532" height="266" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A few things to point out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;urlid&amp;rdquo; value on the first line can be any URL &amp;ndash; it just needs to be unique among all XML files being used (no duplicates).&amp;nbsp; Make up whatever value you want, as it&amp;rsquo;s effectively just a text string, not used for anything beyond identification.&lt;/li&gt;
&lt;li&gt;The component type can be either &amp;ldquo;Application&amp;rdquo; or &amp;ldquo;Documents&amp;rdquo;, depending on what you are capturing.&amp;nbsp; It doesn&amp;rsquo;t really matter what you specify, as it just controls where the component shows up in the config.xml file (if you generate one).&amp;nbsp; For Angry Birds, I specified &amp;ldquo;Application&amp;rdquo;.&amp;nbsp; (If you specify an invalid value, USMT typically doesn&amp;rsquo;t complain &amp;ndash; it does end up ignoring the component though.)&lt;/li&gt;
&lt;li&gt;The context is very important.&amp;nbsp; It should be &amp;ldquo;System&amp;rdquo; if you are capturing machine-level configuration, or &amp;ldquo;User&amp;rdquo; if you are capturing user-specific configuration.&amp;nbsp; You can also specify &amp;ldquo;UserAndSystem&amp;rdquo; if you need to capture both.&amp;nbsp; In the case of Angry Birds, we&amp;rsquo;ve already determined that it is using user settings, so that&amp;rsquo;s what we need to specify.&lt;/li&gt;
&lt;li&gt;The remaining entries generally occur in this type of pattern:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;A role node.&amp;nbsp; The type can be &amp;ldquo;Data&amp;rdquo;, &amp;ldquo;Binaries&amp;rdquo;, &amp;ldquo;Settings&amp;rdquo; or &amp;ldquo;Data&amp;rdquo; &amp;ndash; really just labels for you to use, as all values are treated the same.&lt;/li&gt;
&lt;li&gt;One or more detection rules. In this case, we look for the existence of a folder to indicate that this rule should be processed.&lt;/li&gt;
&lt;li&gt;A rules node that specifies whether these are &amp;ldquo;User&amp;rdquo; or &amp;ldquo;System&amp;rdquo; settings.&amp;nbsp; (Typically this is the same as the component value, although it can be a subset, e.g. the component specified &amp;ldquo;UserAndSystem&amp;rdquo; while the rule specifies &amp;ldquo;User&amp;rdquo;.)&lt;/li&gt;
&lt;li&gt;One or more include rules that specify what to migrate.&lt;/li&gt;
&lt;li&gt;Potentially more optional elements, e.g. exclusions.&amp;nbsp; See &lt;a title="http://technet.microsoft.com/en-us/library/dd560769(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd560769(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd560769(WS.10).aspx&lt;/a&gt; for a description of all the possible XML elements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;So then lets look at the condition:&lt;/p&gt;
&lt;p&gt;MigXmlHelper.DoesObjectExist("File","%CSIDL_APPDATA%\Rovio\Angry Birds")&lt;/p&gt;
&lt;p&gt;This uses a helper function to determine if the specified directory exists.&amp;nbsp; The &amp;ldquo;%CSIDL_APPDATA%&amp;rdquo; text is a reference to one of the many &amp;ldquo;environment variables&amp;rdquo; (listed at &lt;a title="http://technet.microsoft.com/en-us/library/dd560744(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd560744(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd560744(WS.10).aspx&lt;/a&gt;) that can be used; the value will be substituted when evaluating the condition.&amp;nbsp; Because this is a per-user rule, the condition will be checked for each user, with &amp;ldquo;%CSIDL_APPDATA%&amp;rdquo; pointing to the user profile&amp;rsquo;s roaming data folder (e.g. C:\Users\&amp;lt;userID&amp;gt;\AppData\Roaming on Windows 7).&lt;/p&gt;
&lt;p&gt;The "include" rule specifies to capture all files and subfolders under the detected path.&amp;nbsp; By default, these will be put back into the same location they were captured from, doing any necessarily translation for changes in %CSIDL_APPDATA% (e.g. drive letter changes).&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all there is to it &amp;ndash; just tell Scanstate and Loadstate to use this new XML file and all of your Angry Birds progress will be preserved even through an OS refresh or replacement process.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448899" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-44-88-99/AngryBirds.xml" length="641" type="text/xml" /></item><item><title>Migrating offline files (CSC) using USMT 4.0</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/migrating-offline-files-csc-using-usmt-4-0.aspx</link><pubDate>Wed, 24 Aug 2011 11:14:58 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448881</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3448881</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/migrating-offline-files-csc-using-usmt-4-0.aspx#comments</comments><description>&lt;p&gt;One of the questions that came up after my TechEd New Zealand session on USMT 4.0 was whether USMT migrated the contents of the client-side cache (CSC) used for offline files.&amp;#160; Well, it sounds like it “sort of” does – but by default, it only moves the “dirty” files (those not yet sync’d to the network location).&amp;#160; That’s a decent default I suppose, as the remaining files can be pulled back from the network after the state is restored, and the modified files won’t be overwritten.&amp;#160; So there’s no data loss (always a good thing), but there will be extra network traffic to pull the content down to the cache again.&lt;/p&gt;  &lt;p&gt;The actual cache migration is performed by a plug-in to USMT, so the question is whether that plug-in can be influenced to capture everything, instead of just the “dirty” files.&amp;#160; From &lt;a title="http://support.microsoft.com/kb/942960" href="http://support.microsoft.com/kb/942960"&gt;http://support.microsoft.com/kb/942960&lt;/a&gt;, you can adjust the behavior by telling CSC you want to migrate everything.&amp;#160; (While this article talks about MigWiz.exe, the Windows Easy Transfer Wizard, the underlying engine being used is basically the same as that used by USMT.&amp;#160; So the end result of setting “MigrationParameters” should be the same.)&lt;/p&gt;  &lt;p&gt;But before you say “great, let’s do it” you need to understand what’s going on behind the scenes.&amp;#160; First, this CSC migration plug-in is called automatically by USMT as part of the Windows manifest processing.&amp;#160; If you search through the Scanstate log you’ll see lots of references to it, with “CscMig” in the log entries.&amp;#160; For example, here is an entry I saw on my computer for a “dirty” file (one that was created while the folder was offline, so USMT needs to capture it):&lt;/p&gt;  &lt;p&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item Created while offline (dirty).txt continueCtx = 00000000003DC480   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;But the rest of the files in that folder were skipped, as I didn’t have the MigrationParameters registry key set:&lt;/p&gt;  &lt;p&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractFile(653):Skipping item &lt;font style="background-color: #ffff00"&gt;File1.txt&lt;/font&gt; because it is in sync with remote location. ItemStatus = 00050020    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;OK, great, we see what’s happening.&amp;#160; But it’s also worth digging a little deeper and seeing what it did with that original file (something you can see from specify verbose logging, /v:5):&lt;/p&gt;  &lt;p&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigGetWorkingDirectory(837):exit: workingDir = &amp;lt;\??\C:\Users\mniehaus\AppData\Local\Temp\tmp6865.tmp\Working\agentmgr\CCSIAgent\CSC&amp;gt;, status = 0x00000000 ( EE = 0 )   &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item \\ continueCtx = 00000000003DAF00    &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item bdddev continueCtx = 00000000003DB9A0    &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item data$ continueCtx = 00000000003DC480    &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item Created while offline (dirty).txt continueCtx = 00000000003DC480    &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigWrite(446):exit: bytesWritten (743) at offset (0)    &lt;br /&gt;2011-08-24 22:53:43, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractFile(974):Backup API file content till offset 743    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;So it used the Windows Backup API to make a backup of the “dirty” file in the CSC cache and placed that backup into a folder in my %TEMP% directory named “tmp6865.tmp\Working\agentmgr\CCSIAgent\CSC”.&amp;#160; So even though I’ve specified to use hardlinks, there is data copying going on.&amp;#160; In the end, this temporary folder created by CscMig is included in the hardlinked state store, but because these are different files (the backups) you will see twice the disk space consumed, so if you have lots of cached data you better have lots of free disk space to store the data.&amp;#160; This isn’t so bad in the default configuration where it is only grabbing “dirty” files, but if you tell it to backup all files, then what happens?&lt;/p&gt;  &lt;p&gt;No better way to find out what will happen than to try it.&amp;#160; I made the MigrationParameters registry entry as described in the KB article mentioned above and repeated the Scanstate execution.&amp;#160; (No service restart was required.)&amp;#160; Upon checking the log, I can see now that each file in the CSC was backed up into the temporary folder.&amp;#160; Where before it said “skipping item File1.txt”, now it says it’s backing it up:&lt;/p&gt;  &lt;p&gt;2011-08-24 23:07:54, Info&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [0x0808fe] Plugin {0db12ccb-7cfd-46b6-b4d1-daa6ff0fbcf7}: CscMig: CscMigpExtractItem(1124):enter: Processing item &lt;font style="background-color: #ffff00"&gt;File1.txt&lt;/font&gt; continueCtx = 000000000045C480    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;And like before all of these items get backed up into a temporary folder, then that temporary folder is hardlinked into the state store folder.&amp;#160; So hardlinks or not, if you had 2GB worth of cached files, you’ll end up with those being doubled (temporarily, until the process is complete and the temporary folder and state store are cleaned up).&amp;#160; It’s actually going to be tripled if you aren’t using hardlinks:&amp;#160; first copy is the original file, second copy is the backup, third copy is contained in the compressed state store.&lt;/p&gt;  &lt;p&gt;So that definitively answers the question of whether you can get USMT to migrate the complete contents of the client-side cache.&amp;#160; It may not answer the question of whether you should do that, but hopefully the information is useful to help you make that determination yourself.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448881" width="1" height="1"&gt;</description></item><item><title>Troubleshooting the User State Migration Tool 4.0</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/troubleshooting-the-user-state-migration-tool-4-0.aspx</link><pubDate>Wed, 24 Aug 2011 09:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3448836</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3448836</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/08/24/troubleshooting-the-user-state-migration-tool-4-0.aspx#comments</comments><description>&lt;p&gt;I gave a presentation today at the TechEd New Zealand conference on &amp;ldquo;Customizing the User State Migration Tool 4.0&amp;rdquo; &amp;ndash; something I&amp;rsquo;ve talked with customers about back from my consulting days (way back when, probably with USMT 2.6 at that point &amp;ndash; remember that one and its INF-style configuration files?), but haven&amp;rsquo;t presented in public for a very long time.&amp;nbsp; Needless to say, it was somewhat nerve-wracking.&amp;nbsp; For those in attendance, I hope it was worth your time.&amp;nbsp; (I thought it was only OK.&amp;nbsp; I&amp;rsquo;ll do better the next time.)&lt;/p&gt;
&lt;p&gt;The next few blog postings will likely be related to USMT 4.0 &amp;ndash; it&amp;rsquo;s always good to write about things that are freshly in your mind.&lt;/p&gt;
&lt;p&gt;First off, I wanted to take the opportunity to pass along some of the troubleshooting items that I mentioned in the slide deck, consolidating various issues that you might run into while using USMT 4.0.&amp;nbsp; Here they are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USMT 4.0 isn&amp;rsquo;t migrating Office 2010 settings&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Make sure you install the USMT 4.0 update that adds Office 2010 support.&amp;nbsp; See &lt;a title="http://blogs.technet.com/b/mniehaus/archive/2011/02/02/usmt-4-0-support-for-office-2010.aspx " href="http://blogs.technet.com/b/mniehaus/archive/2011/02/02/usmt-4-0-support-for-office-2010.aspx"&gt;http://blogs.technet.com/b/mniehaus/archive/2011/02/02/usmt-4-0-support-for-office-2010.aspx &lt;/a&gt;for more information.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2023591"&gt;http://support.microsoft.com/kb/2023591&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;USMT fails with some half-hour time zones&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Install the USMT update for Office 2010 (see above), as it fixes this too.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Bad user profiles (usually a ProfileList registry entry that points to a non-existent folder) can cause state capture issues (delays, failures)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Clean them up or tell USMT to ignore them with MIG_IGNORE_PROFILE_MISSING=1&lt;/li&gt;
&lt;li&gt;See &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2010/03/28/usmt-failures-due-to-bad-profile-list-entries.aspx"&gt;http://blogs.technet.com/b/deploymentguys/archive/2010/03/28/usmt-failures-due-to-bad-profile-list-entries.aspx&lt;/a&gt; for a script that can help identify these and clean them up so that they don&amp;rsquo;t cause any issues.&lt;/li&gt;
&lt;li&gt;See &lt;a href="http://blogs.technet.com/b/askds/archive/2011/04/14/usmt-pauses-at-quot-starting-the-migration-process-quot-for-many-minutes-then-works.aspx"&gt;http://blogs.technet.com/b/askds/archive/2011/04/14/usmt-pauses-at-quot-starting-the-migration-process-quot-for-many-minutes-then-works.aspx&lt;/a&gt; for more details about the problem.&lt;/li&gt;
&lt;li&gt;Setting MIG_IGNORE_PROFILE_MISSING is rather challenging in ConfigMgr (you can&amp;rsquo;t set it as a process environment variable because it goes away before the &amp;ldquo;Capture User State&amp;rdquo; step runs, so you need to set it as a system variable, reboot, and then capture state).&amp;nbsp; See Michael Murgolo&amp;rsquo;s blog posting at &lt;a title="http://blogs.technet.com/b/deploymentguys/archive/2011/08/03/setting-environment-variables-in-a-task-sequence.aspx" href="http://blogs.technet.com/b/deploymentguys/archive/2011/08/03/setting-environment-variables-in-a-task-sequence.aspx"&gt;http://blogs.technet.com/b/deploymentguys/archive/2011/08/03/setting-environment-variables-in-a-task-sequence.aspx&lt;/a&gt; for details on how to do this.&amp;nbsp; (You could do a shorter way with MDT Lite Touch by modifying ZTIUserState.wsf to set the variable.)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;OS settings don&amp;rsquo;t migrate with ConfigMgr&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;This happens because USMT can only find the &amp;ldquo;DLManifests&amp;rdquo; folder necessary to do OS setting migration in the working directory, and ConfigMgr doesn&amp;rsquo;t set the working directory to the location that contains this.&amp;nbsp; See &lt;a href="http://support.microsoft.com/kb/2018593"&gt;http://support.microsoft.com/kb/2018593&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;MDT 2010 Update 1 includes a workaround for this problem, although the USMT 4.0 fix for Office 2010 (see above) breaks the workaround, requiring a script change (also described in the blog above).&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;USMT migrates user data from removable drives even with /localonly&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;It migrates USB disks even with /localonly, use an unconditional exclude to exclude undesired USB disks.&lt;/li&gt;
&lt;li&gt;See Michael Murgolo&amp;rsquo;s blog posting at &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2009/04/29/excluding-usb-firewire-and-other-drives-from-usmt-capture.aspx"&gt;http://blogs.technet.com/b/deploymentguys/archive/2009/04/29/excluding-usb-firewire-and-other-drives-from-usmt-capture.aspx&lt;/a&gt; for a scripted approach of doing this (taking into account that the drive letters can be different on each system, so you might need a different exclude list for each PC).&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Shortcuts to files on network drives don&amp;rsquo;t migrate&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Known issue, you can modify MigUser.xml to remove section with IgnoreIrrelevantLinks (but then all links are retained, even invalid ones).&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;USMT doesn&amp;rsquo;t exclude the users that I want when I specify /UE and /UEL&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;These two parameters don&amp;rsquo;t work together the way you would expect them to, acting like an &amp;ldquo;or&amp;rdquo; instead of an &amp;ldquo;and&amp;rdquo;.&amp;nbsp; See &lt;a title="http://blogs.technet.com/b/askds/archive/2009/11/30/understanding-usmt-4-0-behavior-with-uel-and-ue.aspx " href="http://blogs.technet.com/b/askds/archive/2009/11/30/understanding-usmt-4-0-behavior-with-uel-and-ue.aspx"&gt;http://blogs.technet.com/b/askds/archive/2009/11/30/understanding-usmt-4-0-behavior-with-uel-and-ue.aspx &lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;Any other good troubleshooting tips for USMT 4.0?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3448836" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Office+2010/">Office 2010</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+Vista/">Windows Vista</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/USMT/">USMT</category></item><item><title>Deploying Office 2010 with Configuration Manager 2012 Beta 2</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/08/13/deploying-office-2010-with-configuration-manager-2012-beta-2.aspx</link><pubDate>Sat, 13 Aug 2011 20:17:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3446896</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3446896</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/08/13/deploying-office-2010-with-configuration-manager-2012-beta-2.aspx#comments</comments><description>&lt;p&gt;The new application model in Configuration Manager 2012 will require administrators to study up on how best to deploy software – this isn’t anything like traditional software distribution like you would find in ConfigMgr 2007.&lt;/p&gt;  &lt;p&gt;I recently set up Office 2010 as an application in ConfigMgr 2012 Beta 2.&amp;#160; Here are the steps I used – not necessarily the only way to do it, but it worked for me.&lt;/p&gt;  &lt;h2&gt;Create the application&lt;/h2&gt;  &lt;p&gt;First you need to create a new application.&amp;#160; If this were a simple MSI, you could just choose the MSI file and the whole process would be simpler.&amp;#160; But Office 2010 is a little different than your typical application, so we need to manually define the information.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7484.image_5F00_78B561C2.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-52-09-metablogapi/3771.image_5F00_thumb_5F00_13BE0B04.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Specify general information&lt;/h2&gt;  &lt;p&gt;Now you need to specify some general identification and ownership information.&amp;#160; This information is primarily for the ConfigMgr administrator’s use, as the end user can see different information in the software catalog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7506.image_5F00_5D00AFFF.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-52-09-metablogapi/8585.image_5F00_thumb_5F00_2D821B66.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice the “Allow this application to be installed from the Install Application Task Sequence Action without being manually deployment” checkbox.&amp;#160; If you are planning to have MDT install this application dynamically in a task sequence (by specifying the application name in CustomSettings.ini, e.g. Applications001=Office 2010), you will need to check this box.&lt;/p&gt;  &lt;h2&gt;Specify how it should appear in the software catalog&lt;/h2&gt;  &lt;p&gt;ConfigMgr provides a software catalog, the Software Center, where end users can choose from optional applications (deployed as “available”, i.e. non-mandatory).&amp;#160; You need to specify how the application should show up in the catalog – you can even specify different languages.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2543.image_5F00_7011B6DE.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-52-09-metablogapi/6355.image_5F00_thumb_5F00_526FB612.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Add a new deployment type&lt;/h2&gt;  &lt;p&gt;The high-level “application” doesn’t say how to actually install the application.&amp;#160; That’s done by one or more deployment types (similar in concept to the old package/program concept, where one package can have multiple programs, but in this case each deployment type can have different content – maybe one deployment type is an MSI install and another uses App-V).&lt;/p&gt;  &lt;p&gt;Again, because Office 2010 isn’t a typical application, you need to manually specify the deployment type details.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/7776.image_5F00_70D9F6FB.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-52-09-metablogapi/0435.image_5F00_thumb_5F00_19B4E638.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;Specify the deployment type details&lt;/h1&gt;  &lt;p&gt;You need to give the deployment type a 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-52-09-metablogapi/4657.image_5F00_6A16C7AB.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-52-09-metablogapi/2526.image_5F00_thumb_5F00_330CC3A5.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Specify install and uninstall details&lt;/h2&gt;  &lt;p&gt;Now you need to specify the source files, the installation command line, and the uninstall command line.&lt;/p&gt;  &lt;p&gt;Since we are deploying Office, the install command line is pretty simple, just specify SETUP.EXE.&amp;#160; This assumes that the package source contains an “Updates” folder with an MSP patch file that is configured to install Office without any user intervention.&lt;/p&gt;  &lt;p&gt;The uninstall command line is a little harder to come up with – I just copied the command that Office placed in the registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Office14.PROPLUS or HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Office14.PROPLUS on a 64-bit computer).&amp;#160; It isn’t very complicated, just specifying “SETUP.EXE /uninstall PROPLUS”.&amp;#160; (I haven’t actually confirmed that this command line works, so test appropriately.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/2538.image_5F00_6A72D4D3.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-52-09-metablogapi/7416.image_5F00_thumb_5F00_6BA747E5.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;            &lt;h2&gt;Add a new detection rule&lt;/h2&gt;  &lt;p&gt;ConfigMgr 2012 will automatically reinstall an application targeted to a computer if it detects that it is no longer present.&amp;#160; In order for this to work, you need to specify a detection rule so that ConfigMgr can figure out if it is still installed.&lt;/p&gt;  &lt;p&gt;First add a new detection MSI detection rule.&amp;#160; In the case of Office 2010, you can check for the present of any of the MSIs that are installed by the Office Setup program. I usually pick the one for the main product, Office Professional Plus, as that uniquely identifies the specific Office SKU that is installed. You browse to the “proplusww.msi” file in the “ProPlus.WW” folder so that you don’t need to type in the MSI product GUID.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1057.image_5F00_30DF9F0F.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-52-09-metablogapi/8836.image_5F00_thumb_5F00_6C03550D.png" width="244" height="184" /&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-52-09-metablogapi/1488.image_5F00_757C1383.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-52-09-metablogapi/7380.image_5F00_thumb_5F00_101889D0.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Specify user experience settings&lt;/h2&gt;  &lt;p&gt;Typically you want to install Office in the system content and whether or not a user is logged on (both are mandatory settings for the task sequence to install the application).&amp;#160; Neither of these settings are defaults, so be sure to change them:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/8875.image_5F00_5550E0F9.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-52-09-metablogapi/0755.image_5F00_thumb_5F00_29043448.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are a few more screens, but you can take the defaults for each of them.&lt;/p&gt;  &lt;p&gt;Now you have successfully created the application, but you aren’t done yet.&lt;/p&gt;  &lt;h2&gt;Distribute content&lt;/h2&gt;  &lt;p&gt;The source files specified on the deployment type still need to be distributed to your distribution points.&amp;#160; (You don’t need to do each deployment type separately, just once for the application.)&amp;#160; There are different options you can choose for distributing the content.&amp;#160; In my case, I’ll just keep it simple and distribute it to every one of my distribution points (one of them):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1447.image_5F00_27536874.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-52-09-metablogapi/0602.image_5F00_thumb_5F00_3732876B.png" width="244" height="184" /&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-52-09-metablogapi/6574.image_5F00_079468DF.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-52-09-metablogapi/4846.image_5F00_thumb_5F00_70393EA0.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Deploy&lt;/h2&gt;  &lt;p&gt;At this point, you are ready to deploy.&amp;#160; You don’t choose to deploy a specific deployment type.&amp;#160; Instead, you deploy the application itself.&amp;#160; It’s pretty simple in this case, with only one deployment type, as it’s fairly obvious which one will be installed.&amp;#160; But if you had multiple deployment types, you would need to specify rules to determine which one is used.&lt;/p&gt;  &lt;p&gt;There’s no doubt that this will take ConfigMgr administrators some time to get used to – just one of the big changes coming in ConfigMgr 2012.g&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3446896" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Office+2010/">Office 2010</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>MDT 2012 Beta 1: Cross-Platform Deployment</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/06/11/mdt-2012-beta-1-cross-platform-deployment.aspx</link><pubDate>Sat, 11 Jun 2011 05:55:53 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3434889</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3434889</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/06/11/mdt-2012-beta-1-cross-platform-deployment.aspx#comments</comments><description>&lt;p&gt;Those of you who deploy both x86 and x64 versions of Windows 7 using MDT 2010 Lite Touch probably know that you have to use two different boot images to do it:&amp;#160; When booted from a Lite Touch x86 boot image, you only see task sequences associated with x86 operating systems; when booted from a Lite Touch x64 boot image, you only see task sequences associated with x64 operating systems.&lt;/p&gt;  &lt;p&gt;With MDT 2012 Beta 1, that’s been changed.&amp;#160; Now, if you boot from a Lite Touch x86 boot image you will see all task sequences, whether x86 or x64.&amp;#160; &lt;/p&gt;  &lt;p&gt;But there is one “gotcha”:&amp;#160; If you choose a task sequence that deploys an x64 OS, MDT will need to find a copy of the corresponding x86 setup files and it will then use those to install the x64 OS.&amp;#160; So you need to make sure that you have x86 setup files in the deployment share (with one of the operating systems), even if you aren’t deploying that operating system.&amp;#160; It needs to match the version (e.g. 6.1.7601.17514) of the x64 OS that you are deploying.&amp;#160; (This is the really the same as if you were deploying a custom image.&amp;#160; Now, we just make sure we pick a copy of setup files that match the Windows PE platform being used, ignoring those that don’t, even if they are provided with the OS being deployed.)&lt;/p&gt;  &lt;p&gt;The other combination, booting from an x64 boot image and deploying an x86 OS, isn’t supported by Windows Setup, so we still hide x86 task sequences when you have booted into an x64 boot image.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434889" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category></item><item><title>MDT 2012 Beta 1:  UEFI Support</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/06/11/mdt-2012-beta-1-uefi-support.aspx</link><pubDate>Sat, 11 Jun 2011 05:39:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3434888</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3434888</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/06/11/mdt-2012-beta-1-uefi-support.aspx#comments</comments><description>&lt;p&gt;One of the new features that has been added to Lite Touch Installation in MDT 2012 Beta 1 is support for deploying 64-bit Windows to machines configured to use UEFI.&amp;#160; So what exactly does that mean?&amp;#160; That’s no simple question.&lt;/p&gt;  &lt;h1&gt;What is UEFI?&lt;/h1&gt;  &lt;p&gt;The “Unified Extensible Firmware Interface” (UEFI) specification, created by an &lt;a href="http://www.uefi.org/"&gt;industry consortium&lt;/a&gt; that includes many influential companies from the PC industry, including Intel, AMD, Apple, Microsoft, Lenovo, Hewlett-Packard, Dell, IBM, American Megatrends, Phoenix Technologies, and Insyde.&amp;#160; What common interest do those companies have?&amp;#160; They either make firmware for PCs, create operating systems for PCs, or use firmware and operating systems on PCs. &lt;/p&gt;  &lt;p&gt;Today, most computers use firmware called the BIOS, the “basic input output system”.&amp;#160; This has been around since the original IBM PC.&amp;#160; Although hardware has advanced quite a bit, today’s BIOSes still have some serious limitations, including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;16-bit code (where most OSes are now 32-bit or 64-bit)&lt;/li&gt;    &lt;li&gt;1MB of addressable memory (regardless of how much the computer actually has)&lt;/li&gt;    &lt;li&gt;Slower option ROM initialization&lt;/li&gt;    &lt;li&gt;2.2TB boot disk limitation (an MBR limitation)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;UEFI addresses all of these, so it’s only a matter of time before these “legacy BIOSes” make way for UEFI replacements.&amp;#160; In fact, many computers have already move to UEFI, including all the latest laptops from Dell, HP, and Lenovo, most Dell and IBM servers, etc.&amp;#160; But if these computers (which many of you are probably using today) already have moved to UEFI, how are they still working?&amp;#160; Simple, they include a “compatibility support module” (CSM) that enables UEFI firmware to emulate a “legacy BIOS”.&amp;#160; With this in place, the operating system can’t even tell the computer supports UEFI.&lt;/p&gt;  &lt;p&gt;On most of the UEFI-enabled computers shipping today, “native” UEFI (running without the CSM) is disabled through the configuration of the machine, so you typically need to turn it on in order to get the choice to install using “native” UEFI or “legacy” BIOS emulation.&lt;/p&gt;  &lt;p&gt;To make matters a little more confusing, you’ll see references to “UEFI BIOSes” and “BIOS configuration” even with UEFI-enabled computers.&amp;#160; It’s not really a “BIOS” any more, but since everyone is used to calling it that, it is bound to happen.&lt;/p&gt;  &lt;h1&gt;What benefits do you get from UEFI?&lt;/h1&gt;  &lt;p&gt;As you can probably gather from the list of limitations above, UEFI is designed to eliminate the limitations of today’s “legacy” BIOS.&amp;#160; It provides:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Full memory access (32-bit or 64-bit)&lt;/li&gt;    &lt;li&gt;CPU independence (enabling UEFI on x86, x64, ia64, and even ARM computers)&lt;/li&gt;    &lt;li&gt;Faster initialization&lt;/li&gt;    &lt;li&gt;Support for larger boot disks (larger than 2.2TB)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;From a Windows perspective, there are some specific benefits that result:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Faster initial boot times, because the operating system can use large IOs to read the operating system files (instead of using the 16-bit Int13 interrupts)&lt;/li&gt;    &lt;li&gt;Faster resume from hibernate (since it can read data faster from the hibernation file, again because of large IOs instead of Int13 calls)&lt;/li&gt;    &lt;li&gt;Multicast boot, because WDS can send down processor-independent UEFI bytecode to be executed to perform the multicast receiving (although this does require that the UEFI implementation in the PCs supports PXE for the NICs, many don’t currently support this)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As we move forward, you will likely see more UEFI-only Windows features.&amp;#160; Also, don’t be surprised if some future PCs are UEFI-only, providing no BIOS compatibility model at all – once that happens, you must use “native” UEFI.&lt;/p&gt;  &lt;p&gt;One additional note:&amp;#160; Today, Windows only supports UEFI for 64-bit installations of Windows Vista SP1, Windows 7, Windows Server 2008, and Windows Server 2008 R2.&amp;#160; 32-bit installs, and older OSes, must continue to use the “legacy” BIOS support.&lt;/p&gt;  &lt;h1&gt;What is different about the UEFI deployment process?&lt;/h1&gt;  &lt;p&gt;There are a few differences that need to be taken into account to deploy Windows to a computer running “native” UEFI.&amp;#160; First, there is a different disk layout, shifting from the master boot record (MBR) structure to the new GUID partition table (GPT) structure.&amp;#160; GPT supports much larger boot volumes (up to 9.4 zettabytes, or 9.4 billion terabytes) and up to 128 partitions (whereas MBR had a limit of 4).&lt;/p&gt;  &lt;p&gt;Next, there is also a different recommended disk layout, as described at &lt;a title="http://technet.microsoft.com/en-us/library/dd744301(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd744301(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd744301(WS.10).aspx&lt;/a&gt;, that involves three partitions:&lt;/p&gt;  &lt;p&gt;&lt;img alt="Diagram of the default UEFI partition structure" src="http://i.technet.microsoft.com/dd744301.6cd21726-99cf-4343-b11f-8a9dd03e2fdb(en-us,WS.10).gif" width="549" height="170" /&gt;&lt;/p&gt;  &lt;p&gt;The “EFI System Partition” (ESP) is roughly equivalent to the small boot partition typically used with Windows 7 today, holding the boot files needed to “bootstrap” the loading of the operating system.&amp;#160; Interestingly enough, this partition is formatted as a FAT32 volume because that’s required by UEFI – it can’t read NTFS-formatted volumes.&amp;#160; What would you expect to find on this partition?&amp;#160; Think of it like the old OEM partitions:&amp;#160; It can contain boot loaders (like the ones used to load Windows), OEM firmware utilities, etc.&amp;#160; But instead of each OEM using a different setup, all can share this volume.&amp;#160; (There are even specific subdirectories that each vendor has agreed to use, see &lt;a title="http://www.uefi.org/specs/esp_registry" href="http://www.uefi.org/specs/esp_registry"&gt;http://www.uefi.org/specs/esp_registry&lt;/a&gt;.)&amp;#160; There are even “EFI shells” that can be loaded onto this partition (for configuration, browsing, or whatever other creative uses you might find).&lt;/p&gt;  &lt;p&gt;There is one thing that you won’t find on the EFI System Partition:&amp;#160; a BCD file.&amp;#160; When booting from a “legacy” BIOS, the Windows boot loader (bootldr) reads the boot configuration data from the \BOOT\BCD file on the active partition, but with UEFI that information is stored in and read from non-volatile RAM (NVRAM) on the motherboard.&amp;#160; The same BCDEDIT.EXE utility that is used to manipulate the BCD file also knows how to manipulate the NVRAM – not surprisingly as the BCD structure was built in anticipation of UEFI.&lt;/p&gt;  &lt;p&gt;The next partition, the Microsoft Reserved (MSR) partition, reserves some disk space for Windows to use for certain operations (e.g. converting a basic disk to a dynamic disk).&lt;/p&gt;  &lt;p&gt;Overall, these partitions are fairly small, with the ESP at 100MB and the MSR partition at 128MB, so there isn’t much overhead here.&lt;/p&gt;  &lt;p&gt;The next challenge then involves bootable CDs and DVDs.&amp;#160; Today, you would typically set up an ISO using the &lt;a href="http://en.wikipedia.org/wiki/El_Torito_(CD-ROM_standard)"&gt;El Torito specification&lt;/a&gt;, specifying the ETFSBOOT.COM boot sector for the “legacy” BIOS to call to initiate the CD/DVD boot process.&amp;#160; With UEFI, there is a new boot sector called EFISYS.BIN.&amp;#160; This isn’t an “either-or” proposition though, as you can actually configure a bootable CD or DVD to have both ETFSBOOT.COM and EFISYS.BIN at the same time.&amp;#160; (See &lt;a title="http://support.microsoft.com/kb/947024" href="http://support.microsoft.com/kb/947024"&gt;http://support.microsoft.com/kb/947024&lt;/a&gt; for an example of the OSCDIMG command line syntax to do that.)&amp;#160; If the computer supports UEFI and “native” UEFI is enabled, then it will typically choose the UEFI boot sector by default (or prompt and ask which one you want to use), while computers that don’t support UEFI or those that don’t have “native” UEFI enabled will revert to the ETFSBOOT.COM “legacy” boot sector.&lt;/p&gt;  &lt;p&gt;The final challenge then is USB media.&amp;#160; As with CDs and DVDs, you probably want them to support both “legacy” BIOS and UEFI booting.&amp;#160; This is pretty simple to do, formatting the USB media using FAT32 (so it can be read by UEFI) and setting up both “legacy” BIOS and UEFI boot files.&lt;/p&gt;  &lt;p&gt;One other complication to mention:&amp;#160; What if you have a computer that supports UEFI, but it is currently running an operating system (e.g. Windows XP or Windows 7) through the legacy BIOS compatibility module (CSM), and you want to move it to UEFI.&amp;#160; Can you perform a typical “refresh” operation?&amp;#160; No, because the “refresh” process can’t even see that the machine supports UEFI when running in compatibility mode, plus there is no way to convert an MBR disk to a GPT disk while preserving the data.&amp;#160; So in order to do this type of migration, you need to move the user data off of the disk, then boot from UEFI-enabled media, reformat the disk as GPT, install the new OS, and then restore the user data.&lt;/p&gt;  &lt;p&gt;It’s also worth noting that you may need to upgrade any imaging or disk partitioning tools that you are using today to versions that understand GPT disk structures.&amp;#160; (This isn’t an issue with Windows AIK and ImageX, as ImageX uses file-based images that don’t care about MBR vs. GPT.)&lt;/p&gt;  &lt;h1&gt;What about MDT 2012?&lt;/h1&gt;  &lt;p&gt;All of that background information and we still haven’t really talked about what MDT 2012 does in regards to UEFI.&amp;#160; So let’s quickly review what MDT 2012 does to enable UEFI support:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MDT will build all ISOs and media folders with both “legacy” BIOS and UEFI boot files.&amp;#160; (It’s up to you to make sure you copy the media content to USB devices that are formatted as FAT32, if you expected UEFI to be able to read them.)&lt;/li&gt;    &lt;li&gt;MDT will build all ISOs with dual “legacy” BIOS and UEFI boot sectors.&lt;/li&gt;    &lt;li&gt;MDT is able to detect when a computer is running in “native” UEFI mode (see the “IsUEFI” property – it’s set to false when running in “legacy” BIOS compatibility mode, true if in “native” UEFI mode).&lt;/li&gt;    &lt;li&gt;MDT will automatically format the boot disk using GPT (even if the task sequence says MBR) so that you can use the same task sequences with both “legacy” BIOS and UEFI computers.&lt;/li&gt;    &lt;li&gt;MDT will automatically create the needed ESP and MSR partitions when running in “native” UEFI mode.&lt;/li&gt;    &lt;li&gt;MDT can refresh a computer running an OS in “native” UEFI mode to a new OS in “native UEFI” mode (but not “legacy” to “native” or “native” to “legacy”).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the end, that means that this becomes sort of a “ho-hum” exercise:&amp;#160; It should just work, as soon as you figure out how to enable UEFI “native” mode in the firmware (BIOS) settings and then boot in “native” mode.&amp;#160; That’s not always as simple as it seems, as the UEFI firmware available today isn’t terribly obvious.&amp;#160; (I’ve tried it with Dell and HP laptops.&amp;#160; The Dell machine isn’t too hard to figure out, but getting the HP to boot in “native” mode is a little more challenging.&amp;#160; See below for more details.)&lt;/p&gt;  &lt;h1&gt;Can you really tell the difference?&lt;/h1&gt;  &lt;p&gt;Some computers will benefit more from UEFI than others, due to the specific hardware, the UEFI firmware being used, etc.&amp;#160; So I’ve run a few timings with an HP EliteBook 8440p laptop to illustrate the differences on a typical machine.&amp;#160; First, let’s compare the Windows PE boot time, reading the same boot image from a USB key using “legacy” and “native” boot options (stopping the timer once the initial MDT wizard is displayed):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Legacy boot:&amp;#160; 50 seconds (to initial MDT wizard) &lt;/li&gt;    &lt;li&gt;Native boot:&amp;#160; 40 seconds (to initial MDT wizard)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The next test then is operating system installation (measuring how long from finishing the MDT deployment wizard until the summary wizard appears in Windows 7 SP1 x64):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Legacy boot:&amp;#160; 14 minutes, 40 seconds&lt;/li&gt;    &lt;li&gt;Native boot:&amp;#160; 13 minutes, 55 seconds&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;(Note that both of these times should be one minute shorter, but due to a bug in the task sequencing engine there is an extra minute of “nothing going on” added to the end of the deployment process, before the summary wizard is displayed.&amp;#160; We’re still working to get that fixed.)&lt;/p&gt;  &lt;p&gt;Now let’s compare the “cold boot” time (from powered off to the logon prompt appearing):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Legacy boot:&amp;#160; 30 seconds&lt;/li&gt;    &lt;li&gt;Native Boot:&amp;#160; 27 seconds&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And finally, time to resume from hibernate (with no applications running, from powered off to the lock screen appearing):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Legacy boot: 17 seconds&lt;/li&gt;    &lt;li&gt;Native boot:&amp;#160; 14 seconds&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So it’s not a huge difference, at least with the current UEFI revision on this machine, the USB key performance, and the SATA (non-SSD) hard drive in the system.&amp;#160; Imagine though if you were using an SSD…&lt;/p&gt;  &lt;h1&gt;Caveat Lector&lt;/h1&gt;  &lt;p&gt;It was interesting using UEFI on the HP EliteBook 8440p, not nearly as “refined” as I would have expected.&amp;#160; First, when you enable UEFI in the BIOS, you get an interesting warning:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/6014.03_2D00_2_5F00_04E98798.jpg"&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="03 (2)" border="0" alt="03 (2)" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-52-09-metablogapi/1222.03_2D00_2_5F00_thumb_5F00_11E367A9.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The “UEFI Boot” option on this system is provided for development purposes only and is currently NOT fully supported or warranted by HP.&amp;#160; Preboot Authentication and Drive Lock are currently NOT supported under UEFI Boot mode.&amp;#160; HP strongly recommends disabling Preboot Authentication and Drive Lock before enabling UEFI boot on this system.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then (ignoring the warning), the UEFI firmware doesn’t seem to be able to detect UEFI-bootable USB keys, so you have to browse to the “bootx64.efi” file on the USB key and explicitly tell the machine to boot from that.&lt;/p&gt;  &lt;p&gt;You would think that this “temporary boot choice” would only apply for this single boot (so that when the computer reboots after Windows is installed it will boot from the hard drive), but that’s not the case:&amp;#160; It keeps booting from the USB key if you leave it inserted.&amp;#160; So I’ve gotten used to pulling the USB key every time the computer reboots, then reinserting it before MDT wants it back so it doesn’t pause and prompt.&lt;/p&gt;  &lt;p&gt;And as mentioned previously, there is no UEFI PXE support provided on this computer.&amp;#160; (I hope it will work as expected with a dual-boot CD/DVD, offering a choice, but I didn’t have one handy to try.)&lt;/p&gt;      &lt;p&gt;I have previously tried this on a Dell Latitude E6410 laptop, which seems to be a little better behaved (although it doesn’t seem to support UEFI PXE boot either).&amp;#160; Your mileage may vary, based on computer manufacturer and model, UEFI firmware version, etc.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434888" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category></item><item><title>ConfigMgr 2007 Driver Management Revisited (Again)</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/06/10/configmgr-2007-driver-management-revisited-again.aspx</link><pubDate>Fri, 10 Jun 2011 20:41:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3434860</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3434860</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/06/10/configmgr-2007-driver-management-revisited-again.aspx#comments</comments><description>&lt;p&gt;After MMS 2010, I had posted a series of blog postings talking about different mechanisms for managing drivers with ConfigMgr 2007.&amp;#160; You can read through that at &lt;a title="http://blogs.technet.com/b/mniehaus/archive/2010/04/29/configmgr-2007-driver-management-the-novel-part-1.aspx" href="http://blogs.technet.com/b/mniehaus/archive/2010/04/29/configmgr-2007-driver-management-the-novel-part-1.aspx"&gt;http://blogs.technet.com/b/mniehaus/archive/2010/04/29/configmgr-2007-driver-management-the-novel-part-1.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Then a hotfix was released that changed the way ConfigMgr 2007 handled duplicate drivers when importing.&amp;#160; I talked about that in the post at &lt;a title="http://blogs.technet.com/b/mniehaus/archive/2010/10/15/configmgr-driver-management-a-new-development.aspx" href="http://blogs.technet.com/b/mniehaus/archive/2010/10/15/configmgr-driver-management-a-new-development.aspx"&gt;http://blogs.technet.com/b/mniehaus/archive/2010/10/15/configmgr-driver-management-a-new-development.aspx&lt;/a&gt;.&amp;#160; One point called out in that posting:&amp;#160; driver categories would be overwritten when a duplicate driver was imported specifying a different category.&amp;#160; That made the “Added Predictability” model described in the first posting very difficult to implement (without using something like the PowerShell script I posted in the first series).&lt;/p&gt;  &lt;p&gt;Now, there is a new development:&amp;#160; Another hotfix that affects driver importing:&lt;/p&gt;  &lt;h3&gt;Category is incorrectly overwritten when you import the same driver on to a System Center Configuration Manager 2007 SP2 site server   &lt;br /&gt;&lt;a title="http://support.microsoft.com/kb/2513499" href="http://support.microsoft.com/kb/2513499"&gt;http://support.microsoft.com/kb/2513499&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;From the title, you can probably guess what it fixes:&amp;#160; Now, when importing duplicate drivers, if you specify a different category, it will be added to the list of categories instead of overwriting the list that is already there.&amp;#160; As a result, the “Added Predictability” model is fairly simple to implement (without the need for scripting).&amp;#160; Look at this basic scenario:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download all the drivers for a Dell Latitude E6410 and import those, specifying a category of “Latitude E6410”.&lt;/li&gt;    &lt;li&gt;Download all the drivers for a Dell Latitude E6510 and import those, specifying a category of “Latitude E6510”.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Without the hotfix, all the common drivers would end up with a category of “Latitude E6510”.&amp;#160; With the hotfix, they would have both categories specified.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434860" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item><item><title>MDT 2010 and Windows AIK Supplement Revisited</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/06/09/mdt-2010-and-windows-aik-supplement-revisited.aspx</link><pubDate>Thu, 09 Jun 2011 03:30:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3434487</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3434487</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/06/09/mdt-2010-and-windows-aik-supplement-revisited.aspx#comments</comments><description>&lt;p&gt;In my previous post titled &lt;a href="http://blogs.technet.com/b/mniehaus/archive/2011/03/12/issue-with-mdt-2010-update-1-and-windows-aik-for-windows-7-sp1-supplement.aspx"&gt;Issue with MDT 2010 Update 1 and Windows AIK for Windows 7 SP1 Supplement&lt;/a&gt;, I mentioned some challenges if you wanted to use Windows PE 3.1 and still use Windows RE from a Windows 7 SP1 BOOT.WIM file.&amp;nbsp; One possibility proposed for dealing with this is to manually modify the Windows AIK version so that MDT knows a new version has been installed.&amp;nbsp; That sounds easy enough, renaming HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ComponentStudio\6.1.7600.16385 to instead be HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ComponentStudio\6.1.7601.17514.&lt;/p&gt;
&lt;p&gt;I did try this out, and encountered two issues to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deployment Workbench doesn&amp;rsquo;t really like the change.&amp;nbsp; After changing this key, you&amp;rsquo;ll get warnings from Deployment Workbench saying that the version of WIMGAPI (6.1.7600.16386) is different than the version of Windows AIK (6.1.7601.17514).&amp;nbsp; There&amp;rsquo;s no workaround for this &amp;ndash; you would just need to live with the annoyance of the warning, which will be displayed any time Deployment Workbench needs to use Windows AIK components. &lt;/li&gt;
&lt;li&gt;The Windows AIK team can&amp;rsquo;t support the change, primarily because it&amp;rsquo;s not something they have tested to see if there are any other unexpected side effects. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So while the workaround of editing the registry key may work, we can&amp;rsquo;t really recommend it.&lt;/p&gt;
&lt;p&gt;For a longer-term solution, we have modified the Deployment Workbench code in MDT 2012 Beta 1 (see &lt;a href="http://blogs.technet.com/b/msdeployment/archive/2011/06/01/microsoft-deployment-toolkit-2012-beta-1-now-available.aspx"&gt;http://blogs.technet.com/b/msdeployment/archive/2011/06/01/microsoft-deployment-toolkit-2012-beta-1-now-available.aspx&lt;/a&gt; if you missed that announcement) so that it checks the version of the Windows AIK WINPE.WIM file, rather than checking the Windows AIK version in the registry.&amp;nbsp; As a result, MDT 2012&amp;rsquo;s behavior is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows PE 3.0 WINPE.WIM present in the Windows AIK folder and Windows 7 RTM or Server 2008 R2 RTM source files in the deployment share?&amp;nbsp; MDT will create a boot image from the Windows 7 RTM BOOT.WIM and it will include Windows RE. &lt;/li&gt;
&lt;li&gt;Windows PE 3.1 WINPE.WIM present in the Windows AIK folder and Windows 7 SP1 or Server 2008 R2 SP1 source files in the deployment share?&amp;nbsp; MDT will create a boot image from the Windows 7 SP1 BOOT.WIM and it will include Windows RE. &lt;/li&gt;
&lt;li&gt;Any other combination?&amp;nbsp; MDT will create a boot image from the Windows AIK WINPE.WIM file and it won&amp;rsquo;t contain Windows RE. &lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3434487" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category></item><item><title>Creating a fully-patched image using MDT 2010 Lite Touch</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/05/16/creating-a-fully-patched-image-using-mdt-2010-lite-touch.aspx</link><pubDate>Mon, 16 May 2011 21:10:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3429564</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3429564</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/05/16/creating-a-fully-patched-image-using-mdt-2010-lite-touch.aspx#comments</comments><description>&lt;p&gt;I’ve always been a fan of the thinnest image possible.&amp;#160; Taking that to an extreme, that means using the original image straight off the Microsoft media.&amp;#160; But over time if you did this you’d find that the time required to apply patches to that image becomes unmanageable.&amp;#160; (Case in point:&amp;#160; I started up a new laptop for the first time with an OEM-installed image that had hooks to require all patches be applied before first logon.&amp;#160; It took three hours for that to happen.)&lt;/p&gt;  &lt;p&gt;I’ve also been a fan of doing “just in time” patching, which is something that MDT can do too:&amp;#160; Instead of patching the image in advance, you can inject updates offline after the image has been applied to the disk but before it boots for the first time.&amp;#160; That does often improve the time required, but it doesn’t eliminate it – it adds time when initially injecting the updates offline, and then more time on first boot as the “online actions” for those “offline patches” are completed (you’ll see the messages on the screen during the first boot showing a percentage complete while this is happening).&lt;/p&gt;  &lt;p&gt;So reading between the lines, that means I would suggest always creating your own master image containing at least all the current service packs and patches.&amp;#160; (Don’t try to install the OS service pack yourself – just download “slipstreamed” media from the Microsoft licensing website, as that’s the ultimate time-saving technique.)&amp;#160; So how should you do this?&amp;#160; Well, there are a few ways:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mount the existing WIM image and just inject the updates offline with DISM.&amp;#160; This is certainly doable, but there are three challenges:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;The online actions for these updates will still take some time&lt;/li&gt;      &lt;li&gt;It introduces a “human touch” into the process, unless you go through the effort of automating this to make it a repeatable process.&lt;/li&gt;      &lt;li&gt;It only works for operating system updates.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Build a new image and install all the updates into that image before sysprepping and capturing the image using a completely automated process.&amp;#160; This is my preferred approach, because it’s a consistent process for any other type of update being made to the image.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Not surprisingly, MDT 2010 Lite Touch provides a way to implement my preferred method above – and actually multiple methods that can be used.&amp;#160; Let’s go through those methods.&lt;/p&gt;  &lt;h2&gt;Install all updates from Microsoft Update directly&lt;/h2&gt;  &lt;p&gt;This is the easy way, as long as you have good internet bandwidth (all updates are downloaded from the internet) and a direct path to these downloads (as we don’t really support proxy servers in the MDT task sequence), and always want to install all critical updates.&amp;#160; (We skip language packs, drivers, and service packs by default, and you can exclude additional updates, but the exclusion process requires a little work.)&lt;/p&gt;  &lt;p&gt;To use this method, all you need to do is search your task sequence for the following steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Update (Pre-Application Installation)&lt;/li&gt;    &lt;li&gt;Windows Update (Post-Application Installation)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enable both of them, and then build a new image – that’s all there is to it.&amp;#160; (Why are there two steps you ask?&amp;#160; Well, the first might be required in order for the subsequent application installs to complete; the second might be required to patch the applications, e.g. Office, after it’s installed.&amp;#160; If the second step doesn’t need to install any additional patches, it won’t take very long.)&lt;/p&gt;  &lt;h2&gt;Install all updates approved on your WSUS server&lt;/h2&gt;  &lt;p&gt;To give you better control over patched put into your image, you may only want to install approved updates.&amp;#160; If you are using Windows Server Update Services (WSUS), then you already have such an approval mechanism in place, all you need to do is tell the task sequence to talk to WSUS instead of going to the internet.&amp;#160; This is pretty simple too:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enable the same “Windows Update” task sequence steps listed in the previous section (two of them).&lt;/li&gt;    &lt;li&gt;Add an entry into the [Default] section of CustomSettings.ini that says:     &lt;br /&gt;WsusServer=http://SERVERNAME:PORT      &lt;br /&gt;where “SERVERNAME” is the fully-qualified name of your WSUS server and “PORT” is the port number that WSUS was configured to use (only needed if that is something other than port 80).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Make sure that you have configured WSUS to install updates on unknown computers, because when building a reference computer it is indeed unknown to WSUS at the point the task sequence is executing.&lt;/p&gt;  &lt;h2&gt;Download all updates and import into your deployment share&lt;/h2&gt;  &lt;p&gt;This one is probably the most work, primarily because you need to manually download all the updates that you want to install, and it only works for OS updates (as they are the only ones that can be injected offline). The steps required:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;From the monthly security bulletin, or using a site such as &lt;a href="http://catalog.update.microsoft.com"&gt;http://catalog.update.microsoft.com&lt;/a&gt;, download all the updates which are typically packaged as MSU files.&amp;#160; (If they come down as executables, you’ll need to extract the MSU files from the executable.)&lt;/li&gt;    &lt;li&gt;Import the MSU files into Deployment Workbench from the “OS Packages” node.&amp;#160; (This will extract a CAB file that is contained in the MSU file, since that’s the piece that gets installed offline.)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When the task sequence runs, the “Apply Patches” will identify all the updates for the OS and platform being deployed, download them to the client, and update the unattend.xml to inject them.&amp;#160; (SETUP.EXE will later call DISM.EXE to do the actual injection after the image has been extracted and applied to the hard drive.)&amp;#160; If you want to apply a particular set of patches, you can configure a selection profile with one or more folders containing those updates, then configure the “Apply Patches” step to use that selection profile.&lt;/p&gt;  &lt;h2&gt;How often should I do this, and what should I do in between?&lt;/h2&gt;  &lt;p&gt;Well, that’s a completely different discussion.&amp;#160; Some people do a new image monthly (and probably don’t do much testing on that image each time they recreate it).&amp;#160; Some do it every few months.&amp;#160; Some do it once a year.&amp;#160; You just need to balance the efforts required to build it (easy), test it (not quite so easy), and distribute it (can be really painful) against the added time of applying some updates later.&lt;/p&gt;  &lt;p&gt;You can actually use any (or all) of the above methods in that “later” deployment task sequence too:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enable the “Windows Update” steps in the deployment task sequence to download and install any updates released since the last image was created (from Microsoft Update or from WSUS if you set the WsusServer variable).&lt;/li&gt;    &lt;li&gt;Download and import any new MSU files into Workbench (but keep these separate from all the ones in the image as MDT won’t know which are installed and which aren’t so it will download all of them and let DISM figure it out).&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;For more information&lt;/h2&gt;  &lt;p&gt;Some additional links that might be useful:&lt;/p&gt;  &lt;p&gt;&lt;a title="Windows Update in MDT 2010 « Xtreme Deployment" href="http://deployment.xtremeconsulting.com/2009/11/09/windows-update-in-mdt-2010/"&gt;Windows Update in MDT 2010 « Xtreme Deployment&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Approving Windows Updates in an MDT 2010 Standalone Environment" href="http://blogs.technet.com/b/deploymentguys/archive/2009/10/22/approving-windows-updates-in-an-mdt-2010-standalone-environment-from-a-configmgr-software-update-point.aspx"&gt;Approving Windows Updates in an MDT 2010 Standalone Environment&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=3429564" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/MDT/">MDT</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/Office+2010/">Office 2010</category></item><item><title>Got orphaned collections in ConfigMgr?</title><link>http://blogs.technet.com/b/mniehaus/archive/2011/04/21/got-orphaned-collections-in-configmgr.aspx</link><pubDate>Thu, 21 Apr 2011 08:35:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3423313</guid><dc:creator>Michael Niehaus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/mniehaus/rsscomments.aspx?WeblogPostID=3423313</wfw:commentRss><comments>http://blogs.technet.com/b/mniehaus/archive/2011/04/21/got-orphaned-collections-in-configmgr.aspx#comments</comments><description>&lt;p&gt;This one goes back several years to when I was routinely writing code that used the ConfigMgr SDK (although in an odd coincidence, I was writing such code again yesterday).&amp;#160; It was pretty easy to run some buggy code that didn’t quite do what was intended, and as a result ConfigMgr might be left in an odd state.&lt;/p&gt;  &lt;p&gt;One example of this: orphaned collections.&amp;#160; These exist in ConfigMgr, and if you look via WMI you can see them.&amp;#160; But they don’t exist in the console anywhere – they are invisible.&amp;#160; This would happen because those collections were not “rooted” to the top-level collection called “COLLROOT” (or any other collection, if you build collection hierarchies).&lt;/p&gt;  &lt;p&gt;Other than “buggy code”, how else could these orphaned collections happen?&amp;#160; Good question, hard to say.&lt;/p&gt;  &lt;p&gt;So how do you fix these?&amp;#160; Well, simple:&amp;#160; You “re-root” them by creating a new SMS_CollectToSubCollect WMI instance that says “this collection is a subcollection of COLLROOT”.&amp;#160; A long time ago, I wrote a script to do this.&amp;#160; After enough digging around, I found it again, so I’ll provide it here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Set services = Getobject(&amp;quot;winmgmts://YOURSERVER/root/sms/site_XXX&amp;quot;)&lt;/p&gt;    &lt;p&gt;' Just in case we need to re-root a collection, get the class instance     &lt;br /&gt;Set theClass = services.Get(&amp;quot;SMS_CollectToSubCollect&amp;quot;)&lt;/p&gt;    &lt;p&gt;' Get a list of collections.&amp;#160; Make sure each one has a parent.&amp;#160; If not, connect it to COLLROOT.     &lt;br /&gt;Set collList = services.ExecQuery(&amp;quot;select * from SMS_Collection where CollectionID &amp;lt;&amp;gt; 'COLLROOT' &amp;quot;)      &lt;br /&gt;For each c in collList&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; ' WScript.Echo &amp;quot;Checking &amp;quot; &amp;amp; c.CollectionID&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; ' See if this collection is already associated with the root collection.&amp;#160; If not, fix it.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set result = services.ExecQuery(&amp;quot;select * from SMS_CollectToSubCollect where subCollectionID = &amp;quot;&amp;quot;&amp;quot; &amp;amp; c.CollectionID &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If result.Count = 0 Then      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WScript.Echo &amp;quot;No parent found for &amp;quot; &amp;amp; c.CollectionID&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set theRelationship = theClass.SpawnInstance_()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; theRelationship.parentCollectionID = &amp;quot;COLLROOT&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; theRelationship.subCollectionID = c.CollectionID      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set path = theRelationship.Put_      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set path = Nothing      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set theRelationship = Nothing&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; WScript.Echo &amp;quot;Added &amp;quot; &amp;amp; c.CollectionID &amp;amp; &amp;quot; (&amp;quot; &amp;amp; c.Name &amp;amp; &amp;quot;) to the root collection&amp;quot;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set result = Nothing&lt;/p&gt;    &lt;p&gt;Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Paste this into a text file, change the server name (from “YOURSERVER”) and site code (from “XXX”), save it as “ReRoot.vbs”, and run it using “cscript.exe ReRoot.vbs”.&amp;#160; It will check every collection, and if it finds one that is orphaned, it will “re-root” it to to the root collection, telling you what collection (ID and name) was fixed.&amp;#160; After the script is finished, you can find the “re-rooted” collections in the admin console, and you can decide what to do with them from there.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3423313" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/mniehaus/archive/tags/ConfigMgr/">ConfigMgr</category></item></channel></rss>
