<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Xtreme Deployment</title>
	<atom:link href="http://deployment.xtremeconsulting.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://deployment.xtremeconsulting.com</link>
	<description></description>
	<lastBuildDate>Wed, 14 Jul 2010 08:00:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='deployment.xtremeconsulting.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/b9093c8c9e93cd7e588b4bcd70ac2032?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Xtreme Deployment</title>
		<link>http://deployment.xtremeconsulting.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://deployment.xtremeconsulting.com/osd.xml" title="Xtreme Deployment" />
	<atom:link rel='hub' href='http://deployment.xtremeconsulting.com/?pushpress=hub'/>
		<item>
		<title>UserTile Automation</title>
		<link>http://deployment.xtremeconsulting.com/2010/06/23/usertile-automation-part-1/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/06/23/usertile-automation-part-1/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 20:35:23 +0000</pubDate>
		<dc:creator>Micah Rowland</dc:creator>
				<category><![CDATA[USMT]]></category>
		<category><![CDATA[VBscript]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://deployment.xtremeconsulting.com/?p=298</guid>
		<description><![CDATA[Recently a customer requested that two accounts be created during the MDT process and required each to have a preset user account picture (referred to by Windows as the User Tile). There are a number of ways to accomplish this, USMT/Easy Transfer wizard being the easiest. However, due to the processes they already had built [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=298&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently a customer requested that two accounts be created during the MDT process and required each to have a preset user account picture (referred to by Windows as the User Tile). There are a number of ways to accomplish this, USMT/Easy Transfer wizard being the easiest. However, due to the processes they already had built into the base image, I decided the best tack was to investigate the actual process employed in storing the User Tile and build automation that could quickly accomodate changes to the specifications of which image to use. After a quick search of the web, it seems that this particular problem, programatically changing the User Tile has not yet found a solution. I present to you my findings along with a sample script to tackle this seemingly simple manual process.</p>
<p>The first step in automating any process is to do it manually first and watch what happens. I rely on the Sysinternals tool Process Monitor as well as Process Explorer for most of my research. Launching Process Explorer as an administrator led me down a few dead ends. It was only after running Process Explorer in the System context using PSExec with the -s and -i switches that I was able to locate the location that Windows 7 uses to store the user tile.</p>
<p>The User Tiles configuration information is stored in Windows registry at <em>HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\########</em>, where ######## is a unique 8 digit hexadecimal ID, in as a binary value named UserTile. But how can we cross reference a username to this 8-digit ID? Glad you asked!</p>
<p>Taking a further look at the registry key, you&#8217;ll notice that beneath the user ids, there is another key called Names. If you expand this key you&#8217;ll see a list of all local user accounts on the system. Upon opening any of the user keys you&#8217;ll notices that only a default value exists. However, take a look at the value type&#8230; It is not a standard type, but a hexidecimal number 0x### where the ### id crossreferences nicely with the list of user ids above. In our script we need only pad this value with leading 0&#8242;s until it reaches the desired 8-digits. Trying to retrieve this hexidecimal &#8220;type&#8221; throws exceptions in nearly every method I tried. Exporting the key to a .reg file gave me the output I needed to be able to search for a specific username and retrieve its id.</p>
<p>The SAM Hive of the registry is not generally accessible to any user accounts and is configured, by default, to only be accessed by the System account. To maintain security, both the read and the write operations necessary to modify the UserTiles programmatically are accomplished by executing the operations in the System context. Execution in the system context is accomplished by utilizing the PSExec tool.</p>
<p>When a user interactively changes the UserTile by means of the User Account control panel, Windows resizes the image specified by the user to 128&#215;128 and saves new image as a 24-bit bitmap file in the C:\ProgramData\Microsoft\User Account Pictures\ folder as USERNAME.bmp. The bitmap is then stored in the registry in the SAM and the user’s contact card is updated.</p>
<p>The binary data is composed of a header followed by a payload containing the binary graphic used for the UserTile and closed with a footer that contains the path to the file used as the UserTile. The header is 16 bytes long.</p>
<ol>
<li>12-bytes (seem to be constant at 01 00 00 00 03 00 00 00 01 00 00 00)</li>
<li>4-byte field representing the size of the payload</li>
</ol>
<p>The payload data reveals that the image stored in the registry is 126&#215;126 pixels, presumably to make up for the 1 pixel wide border around the image when displayed on the logon screen and on the start menu. Further, the image is stored in 16-bit color depth using BI_BITFIELDS compression.</p>
<p>The footer contains the type of image file used and the location of the file used using Unicode (2-bytes per character). The format is as follows:</p>
<ol>
<li>4-byte field (purpose unknown, possibly the length of the following field)</li>
<li>A null-terminated Unicode string representing the file type
<ol>
<li>Eg. “bmp” = 62 00 6D 00 70 00 00 00</li>
</ol>
</li>
<li>4-byte field (purpose unknown, always 02 00 00 00)</li>
<li>4-byte field representing the payload (bitmap) size in bytes</li>
<li>A null-terminated Unicode string representing the file location padded to the nearest 4 bytes.</li>
</ol>
<p>Phew! Needless to say, this level of detail is not necessary for part 1 of this post, however in crafting a truely dynamic programmatic approach to changing the uer tile, we will need this information.</p>
<h2>Solution:</h2>
<p>It should be possible to engineer an application that accepts a username and a bitmap file to use. However, for part 1, it is simpler to export the registry keys from a sample machine using either the reg.exe or the regedit.exe utility under the System context using PSExec.</p>
<p>When scripting this automation, we must be aware that the first time PSExec is run, a EULA must be accepted. To avoid this, the following registry file is imported (AcceptPSExecEULA.reg):</p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Sysinternals\PsExec]
"EulaAccepted"=dword:00000001</pre>
</td>
</tr>
</tbody>
</table>
<p>The following script was created to accomplish the goal of changing the UserTiles:</p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'   Title:   User Tile Change Script
'   Author:  Micah Rowland (Xtreme Consulting)
'   Date:    07/14/2010
'   Desc:    This script is designed to programatically replace
'            a single local user's User Tile on Windows Vista
'            and above.
'   Prereq:  This script requires the use of PSExec available
'            from <a href="http://live.sysinternals.com/psexec.exe">http://live.sysinternals.com/psexec.exe</a>
'   Usage:   UserTile.vbs USERNAME USERTILEFILE
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
CONST FORREADING = 1
CONST FORWRITING = 2

set objShell = CreateObject("Wscript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")
set objArgs = Wscript.Arguments
set objShell = CreateObject("Wscript.shell")
if CheckArgs() &lt;&gt; "" then
     Wscript.echo Checkargs() &amp; vbcrlf
     wscript.echo "Arguments Invalid. Usage: ChangeUserPicture.vbs USERNAME UserTileFile"
     wscript.quit()
end if

strUsername = objArgs(0)
strUserTileFile = objArgs(1)
strUserIndex = GetUserIndex()
set objFile = objFSO.GetFile(strUserTileFile)
set objTS = objFile.OpenAsTextStream(1)
strUserTile = objTS.ReadAll
wscript.echo strUserTile
strRegFile = objShell.ExpandEnvironmentStrings("%temp%") &amp; "\UserIndexes2.reg"
set objRegFile = objFSO.OpenTextFile(strRegFile, ForWriting, true)
contents = "Windows Registry Editor Version 5.00" &amp; vbcrlf &amp; vbcrlf &amp; "[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\" &amp; strUserIndex &amp; "]" &amp; vbcrlf &amp; strUserTile
objRegFile.Write contents
objRegFile.Close

strImport = "PSEXEC -S -I reg import " &amp; strRegFile
objShell.Run strImport

Function GetUserIndex

     ' This function exports the Names key of the SAM from the registry to determine a match between the user account provided
     ' and its hex ID for use in creating the new registry file for import. Because the .reg file is exported in Unicode format
     ' we use the type command to pipe it from stdout to a new text file.

     strUsername = objArgs(0)
     strUserTileFile = objArgs(1)
     objShell.run "cmd /c reg export HKLM\SAM\SAM\Domains\Account\Users\Names %temp%\UserIndexes.reg /y"
     wscript.sleep(500)
     objShell.run "CMD /C type %temp%\userindexes.reg &gt; %temp%\userindexes.txt"
     wscript.sleep(500)
     set objFile = objFSO.GetFile(objShell.ExpandEnvironmentStrings("%temp%") &amp; "\userindexes.txt")
     set objRegExport = objFile.OpenAsTextStream(FORREADING)
     curLine = objRegExport.ReadLine()
     do until instr(lcase(curLine), lcase(strUserName)) or objRegExport.atendofStream
          curLine = objRegExport.ReadLine
     loop
     if objRegExport.AtEndOfStream then
          wscript.echo "Username not found."
          wscript.quit()
     else
          curLine = ObjRegExport.ReadLine
          tmpGetUserIndex = mid(curLine, instr(curLine, "(") + 1, len(curline) - instr(curline, "(") - (len(curLine) - instr(curline, ")")+1))
          do until len(tmpGetUserIndex) = 8
               tmpGetUserIndex = "0" &amp; tmpGetUserIndex
          loop
          GetUserIndex = tmpGetUserIndex
     end if
End Function

Function CheckArgs()
     ' This function makes sure that 2 arguments were provided and that the filename provided exists
     if objArgs.Count &lt;&gt; 2 then
          CheckArgs = "Exactly 2 arguments must be specified."
     elseif not objFSO.FileExists(objArgs(1)) then
          CheckArgs = "File not found."
     else
          CheckArgs = ""
     end if
 End Function</pre>
</td>
</tr>
</tbody>
</table>
<p>The script syntax is: <em>SetUserTile.vbs USERNAME FILE</em></p>
<p>The file used by this script consists of only the UserTile value from a registry export of a preconfigured UserTile. This can be accomplished by setting a local user account&#8217;s picture, opening regedit using the <strong>psexec -s -i regedit.exe </strong>command, navigating to the SAM key mentioned above, determining the correct user account as detailed above, and exporting the key. Then remove <em>all </em>data in the .reg file <strong>except the &#8220;UserTile=hex:&#8230;&#8221; entry.</strong></p>
<p>To leverage this script, a command-script file was created and added to the Software Installation task sequence.</p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<pre>reg import AcceptPSExecEULA.reg
cscript SetUserTile.vbs "USERNAME" DATAFILE.txt</pre>
</td>
</tr>
</tbody>
</table>
<p>I hope to have a commandline based program developed in the future to tackle this which will accept any sized bitmap image as it&#8217;s input as opposed to using a captured registry value. I hope you have enjoyed this post. If you have any questions feel free to ask!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=298&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/06/23/usertile-automation-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e5d625f8daa701b969ef654f169de4e5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ioamnesia</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction</title>
		<link>http://deployment.xtremeconsulting.com/2010/06/23/introduction/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/06/23/introduction/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 19:53:32 +0000</pubDate>
		<dc:creator>Micah Rowland</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://deployment.xtremeconsulting.com/?p=295</guid>
		<description><![CDATA[My name is Micah Rowland and I have been added to the Xtreme Deployment consulting group as an expert in automation and reverse engineering. As we all know, some of the tasks that customers ask of us to accomplish during the MDT process are very simple to do manually, but in the background, are tricky [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=295&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My name is Micah Rowland and I have been added to the Xtreme Deployment consulting group as an expert in automation and reverse engineering. As we all know, some of the tasks that customers ask of us to accomplish during the MDT process are very simple to do manually, but in the background, are tricky to nail down when we go to automate the same processes.  In my posts, I hope to reveal undocumented aspects to the Windows operating system and show how to develop automation around these processes. Let&#8217;s get started!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=295&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/06/23/introduction/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e5d625f8daa701b969ef654f169de4e5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ioamnesia</media:title>
		</media:content>
	</item>
		<item>
		<title>Xtreme Consulting at MMS 2010!</title>
		<link>http://deployment.xtremeconsulting.com/2010/04/08/xtreme-consulting-at-mms-2010/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/04/08/xtreme-consulting-at-mms-2010/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 17:48:23 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MDT 2010]]></category>
		<category><![CDATA[Speaking Engagements]]></category>

		<guid isPermaLink="false">http://deployment.xtremeconsulting.com/?p=290</guid>
		<description><![CDATA[Xtreme Consulting Group is going to have a great presence at the Microsoft Management Summit 2010 in Las Vegas Nevada on April 19th through April 23rd. We have Speakers, Consultants, and Technical Professionals there to assist with Hands on Labs (Fun stuff). Microsoft Deployment Toolkit Developer/Gurus Tim Mintner and Keith Garner will be there too. Get the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=290&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://deployment.xtremeconsulting.com/">Xtreme Consulting Group</a> is going to have a great presence at the Microsoft Management Summit 2010 in Las Vegas Nevada on April 19<sup>th</sup> through April 23<sup>rd</sup>.</p>
<p>We have Speakers, Consultants, and Technical Professionals there to assist with Hands on Labs (Fun stuff).</p>
<p><a href="http://microsoft.com/deployment">Microsoft Deployment Toolkit</a> Developer/Gurus Tim Mintner and Keith Garner will be there too. Get the inner workings of MDT 2010, and find out what&#8217;s going to be in MDT 2010 Update 1!</p>
<p>See you there!</p>
<p>Two &#8220;Birds-of-a-Feather&#8221; sessions you can count on us to be at:</p>
<p><strong>OE01 Ask the Experts: Microsoft Deployment Toolkit (MDT) 2010</strong></p>
<p>Tuesday, April 20 5:30 PM &#8211; 6:30 PM, Marco Polo 702 </p>
<p><strong>Speaker(s):</strong> <span style="text-decoration:underline;">Michael Niehaus</span></p>
<p><strong>Track(s):</strong> Client Management Technologies, Solution Accelerators, Systems Management</p>
<p><strong>Session Type(s):</strong> Birds-of-a-Feather</p>
<p><strong>Products(s):</strong> Configuration Manager 2007, Microsoft Deployment Toolkit, Windows Client</p>
<p>Here&#8217;s your chance to sit down with the team who are building MDT 2010, troubleshooting customer scenarios, blogging about the latest and greatest solutions and planning the next generation of deployment tools. Bring your questions about MDT 2010 to this Birds-of-a-feather session and find out how to apply the latest solutions to your specific scenarios.</p>
<p><strong>OE31 Open Forum Discussion: Microsoft Deployment Toolkit 2010 (MDT) and Configuration Manager 2007 OSD</strong></p>
<p>Tuesday, April 20 6:45 PM &#8211; 7:45 PM, Marco Polo 702 </p>
<p>Speaker(s): Chris Nackers</p>
<p>Track(s): Client Management Technologies, Solution Accelerators, Systems Management</p>
<p>Session Type(s): Birds-of-a-Feather</p>
<p>Products(s): Configuration Manager 2007, Microsoft Deployment Toolkit, Windows Client</p>
<p>Time to sit down with fellow OSD/MDT users and share your experiences around OSD/MDT in the real world. Come join Chris Nackers and others to discuss lessons learned around MDT and OSD in general in an Open Forum discussion.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=290&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/04/08/xtreme-consulting-at-mms-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>Assign Drivers to Computer Makes and Models</title>
		<link>http://deployment.xtremeconsulting.com/2010/03/11/assign-drivers-to-computer-makes-and-models/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/03/11/assign-drivers-to-computer-makes-and-models/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 17:00:35 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=284</guid>
		<description><![CDATA[Speaking of Make and Models&#8230; one of the things I&#8217;ve been experimenting with lately is mixing driver management styles (grouping by Make+Model vs PnPID).     Make/Model Match Historically, if you had different hardware platforms, and you wanted to install drivers on each type, you would create separate packages for each Make and Model. Then [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=284&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">Speaking of Make and Models&#8230; one of the things I&#8217;ve been experimenting with lately is mixing driver management styles (grouping by Make+Model vs PnPID). </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<h3>Make/Model Match</h3>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">Historically, if you had different hardware platforms, and you wanted to install drivers on each type, you would create separate packages for each Make and Model. Then you could query the Make and Model information from the BIOS to determine which package to install.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">For example here are four Make+Model examples:</span></p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="200" valign="top"><strong>Make</strong></td>
<td width="200" valign="top"><strong>Model</strong></td>
</tr>
<tr>
<td width="200" valign="top">Dell</td>
<td width="200" valign="top">D630</td>
</tr>
<tr>
<td width="200" valign="top">Dell</td>
<td width="200" valign="top">D830</td>
</tr>
<tr>
<td width="200" valign="top">HP</td>
<td width="200" valign="top">DC7800</td>
</tr>
<tr>
<td width="200" valign="top">HP</td>
<td width="200" valign="top">DC7900</td>
</tr>
</tbody>
</table>
<p><span style="font-family:&amp;font-size:10pt;"></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">The disadvantage of this method is that you have to update the driver packages when new Models come along, and it’s also possible that you might keep multiple instances of the same driver package across many Make and Model repositories.</span> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<h3>PnP-ID Match</h3>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">With MDT, ZTIDrivers.wsf was designed to do things in a different manner. Instead of downloading drivers and grouping them based on Make/Model, you would import the driver directly into MDT, MDT would parse the driver package, and MDT would install the driver package on the machine if the Plug and Play ID matched. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">For example, Windows might search for Plug and Play ID’s that look like:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<pre>PCI\VEN_1099&amp;DEV_0242&amp;SUBSYS_02429005&amp;REV_01
PCI\VEN_1099&amp;DEV_0242&amp;SUBSYS_02429005
PCI\VEN_1099&amp;DEV_0242&amp;CC_010401
PCI\VEN_1099&amp;DEV_0242&amp;CC_0104
PCI\VEN_1099&amp;DEV_0242&amp;REV_01
PCI\VEN_1099&amp;DEV_0242
PCI\VEN_1099&amp;CC_010401
PCI\VEN_1099&amp;CC_0104
PCI\VEN_1099
PCI\CC_010401
PCI\CC_0104</pre>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">Generally this system works better than copying based on Make and Model except for a few points: </span></p>
<ul>
<li>
<div class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">You must import the drivers in a correct fashion so MDT can parse the INF files, and so each driver package is a seperate entry (</span><span style="font-family:&amp;font-size:10pt;">more on importing drivers later…)</span></div>
</li>
<li>
<div class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">Some PC Makers only certify (support?) a subset of driver versions, so it is possible that MDT <em>may</em> give Windows the latest non-certified version of a driver.</span></div>
</li>
<li>
<div class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">There also may be compatibility problems with specific drivers. When placed on some other platforms. (However IMHO, if a driver *can* be installed on a machine, but crashes the machine, then that is a bug of the driver).</span></div>
</li>
</ul>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<h3>Hybrid Make-Model + PnPID Match Solution</h3>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">For my MDT environments, </span><span style="font-family:&amp;font-size:10pt;">I don&#8217;t want to place all drivers into Make/Model groupings by <span style="font-family:&amp;"><em>default</em></span>, since I loose the advantages of ZTIDrivers.wsf where it copy by PnPID. </span><span style="font-family:&amp;font-size:10pt;">For example, I have the drivers for my Dell D620 integrated now, but it&#8217;s good to know that I probably have good coverage for any D820&#8242;s out there since they share mostly the same components. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:&amp;font-size:10pt;">I&#8217;ve seen some MDT implementations that totally throw away the ZTIDrivers.wsf PnPID style in favor of maintaining a manual mapping of drivers to Make+Model. However, I do concede, that there are some drivers out there that &#8220;&#8230; do not play nicely with others&#8230;&#8221;, and need to be quarantined somehow, and according to a make+model works well.</span><span style="color:black;"> </span></p>
<p></span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="color:black;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:black;">Create a Folder Structure in MDT Workbench:</span></p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="400" valign="top"><strong>Common</strong></p>
<p>    Audio</p>
<p>    Networking</p>
<p>        Intel</p>
<p>        Marvel</p>
<p>    Storage</p>
<p>    Video</p>
<p><strong>Dell</p>
<p></strong>    <strong>Common</strong></p>
<p>        Audio</p>
<p>        Networking</p>
<p>        Storage</p>
<p>    D620</p>
<p><strong>Hewlett-Packard</strong><strong></p>
<p></strong>    <strong>Common</strong></p>
<p>    DC7800</p>
<p>        Audio</p>
<p>        Networking</p>
<p>        Storage</p>
<p><strong>WinPE</strong></td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="color:black;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:black;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:black;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:black;">Then in your CustomSettings.ini file, you can add the following:</span> </p>
<pre>DriverGroups001=Common

DriverGroups002=%Make%\Common

DriverGroups003=%Make%\%Model%

DriverSelectionProfile=Nothing</pre>
<p>(Note that DriverSelectionProfile=nothing is required if using DriverGroups).</p>
<p>%Make% and %Model% will be auto-expanded in the customsettings.ini file with the Make and Model values from the system BIOS.</p>
<ul>
<li>If you have a driver that will work for all Makes and Models, then place it under \Common.</li>
<li>If you have a driver that is only supported for a single Manufacturer, then place it under \%Make%\Common.</li>
<li>If you have a driver that only works on a specific Make and Model, then place it under \%Make%\%Model%.</li>
</ul>
<p>This should allow you to use generic drivers by default, moving drivers to specific makes and models when required.</p>
<p>Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/284/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/284/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/284/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=284&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/03/11/assign-drivers-to-computer-makes-and-models/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>Keith Garner on MDT 2010</title>
		<link>http://deployment.xtremeconsulting.com/2010/03/10/keith-garner-on-mdt-2010/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/03/10/keith-garner-on-mdt-2010/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 23:37:46 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MDT 2010]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Speaking Engagements]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=283</guid>
		<description><![CDATA[(It&#8217;s been busy around here at Xtreme Consulting)&#8230; Keith was interviewed on the PowerScripting Podcast last week! MDT 2010 uses Powershell quite extensively for Server Management, and Xtreme Deployment has been developing custom scripts for MDT 2010. You can hear the podcast here. - Keith Keith Garner is a Deployment Specialist with Xtreme Consulting Group<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=283&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>(It&#8217;s been busy around here at Xtreme Consulting)&#8230;</em></p>
<p>Keith was interviewed on the <a href="http://powerscripting.wordpress.com">PowerScripting Podcast</a> last week!</p>
<p>MDT 2010 uses Powershell quite extensively for Server Management, and Xtreme Deployment has been developing custom scripts for MDT 2010.</p>
<p>You can hear the podcast <a href="http://powerscripting.wordpress.com/2010/03/07/episode-104-keith-garner-on-mdt-2010/">here</a>.</p>
<p>- Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/283/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=283&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/03/10/keith-garner-on-mdt-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>Bitlocker Recovery Password saved to file</title>
		<link>http://deployment.xtremeconsulting.com/2010/01/22/bitlocker-recovery-password-saved-to-file/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/01/22/bitlocker-recovery-password-saved-to-file/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 17:00:21 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[MDT 2010]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=276</guid>
		<description><![CDATA[Saw a question posted recently: In MDT deployment I have Bitlocker set to save the recovery key to AD.  However, I am noticing that it is also copying the recovery key to either C: root or the USB flash drive.  How do I control this behavior? In MDT 2010, the ZTIBDE.wsf script will perform most [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=276&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Saw a question posted recently:</p>
<blockquote><p>In MDT deployment I have Bitlocker set to save the recovery key to AD.  However, I am noticing that it is also copying the recovery key to either C: root or the USB flash drive.  How do I control this behavior?</p></blockquote>
<p>In MDT 2010, the ZTIBDE.wsf script will perform most nasty administrative tasks in the background automatically. That is the beauty of MDT. However, some administrators may wish to control this Recovery File in a manner other than the default, which is to save the file to the C: drive or to a USB Key.</p>
<p>MDT Saves the recovery key even though the administrator told MDT to save the Password into Active Directory, as a backup process, just in case AD was *not* able to save the data to AD.</p>
<h3>Disable Key Save</h3>
<p>There are two ways to prevent ZTIBDE.wsf from saving the Administrator password in Active Directory.</p>
<p>Either:</p>
<p>Comment out lines 722 – 724 in the ZTIBDE.wsf script. (MDT 2010 Only).</p>
<p>or:</p>
<p>Set the variable in your customsettings.ini file to point to a location that is cleaned at the end of the Task Sequence process:</p>
<p>BDEKeyLocation=%SystemDrive%\minint\</p>
<p>If you don’t save the Password, and the AD backup of the recovery key fails for some reason, you will have no record of the recovery key.</p>
<p>Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=276&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/01/22/bitlocker-recovery-password-saved-to-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>How MDT does Application Installation</title>
		<link>http://deployment.xtremeconsulting.com/2010/01/20/how-mdt-does-application-installation/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/01/20/how-mdt-does-application-installation/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:00:57 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[MDT 2010]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[VBscript]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=268</guid>
		<description><![CDATA[Been working lately on adding some Application Installation packages to MDT, and I’ve seen some good, bad, and ugly packages. So, what makes an application installation compatible with MDT (or other scripted installation methods, for that matter)? Good question. Microsoft Installer (MSI) The good! More and more products are being released lately as MSI packages. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=268&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Been working lately on adding some Application Installation packages to MDT, and I’ve seen some good, bad, and ugly packages.</p>
<blockquote><p>So, what makes an application installation compatible with MDT (or other scripted installation methods, for that matter)?</p></blockquote>
<p>Good question.</p>
<h3>Microsoft Installer (MSI)</h3>
<p>The good!</p>
<p>More and more products are being released lately as MSI packages. Most MSI Packages are easy to automate. For example, I typically use the following parameters:</p>
<p>Msiexec.exe /qb- /l*vx  %LogPath%\&lt;file&gt;.log REBOOT=ReallySuppress UILevel=67 ALLUSERS=2 /i &lt;File&gt;.msi</p>
<p>MDT will easily handle this installation script, and install properly for most MSI packages. Yea!</p>
<h3>Non-MSI Packages</h3>
<p>However, it is possible that you are working with a custom installation package, or perhaps developing your own. What are the rules necessary to make the package work in MDT?</p>
<h3>Rule 1: Provide unattended installs</h3>
<p>The install program should have a way to install in a unattended manner. Typically this is done by some sort of command line switch to the installer program or script: /quiet /silent /q whatever. MDT 2010 is a fully automated installation system, and the automation will break if there are any user prompts blocking installation.</p>
<p>For example, if you have a MSI installer package, you can call MSIExec.exe with the /q[bn][-] parameter.</p>
<p>This also equally important for errors. If the install package generates errors, it should provide a method to log the errors to a file for analysis later, rather than prompting the user for interaction with a blocking Error Message Box.</p>
<h3>Rule 2: Do not exit until done</h3>
<p>The install programs should not exit until all setup tasks have finished. If the setup program returns, yet there are still installation tasks being performed in the background, MDT has no way to determine this. So MDT may continue with the next installation, or perhaps a reboot thus causing conflicts with the installation running in the background.</p>
<p>For example, say you have two installation packages, A.Exe and B.Msi. A.Exe is just a Self Extracting Executable that expands A.MSI to the %temp% folder, and kicks off msiexec.exe. However, A.Exe calls msiexec.exe and doesn’t wait, instead A.Exe promptly exits. MDT does not know what is running in the background, and instead continues installing the next package in the list B.Msi. However since A.Msi is running in the backgound, and MSIExec only allows one installation at a time, B.Msi will fail.</p>
<p>Instead A.Exe should wait until Msiexec.exe /i A.msi has finished.</p>
<h3>Rule 3: No rebooting</h3>
<p>Sometimes an install package will need to reboot to complete the installation. Reboots, for example, are required to update any file that is already open and in use. It’s a common misconception that you need to reboot to install a device driver, you don’t (unless the driver is in use).</p>
<p>However problems arise if the setup program, when running in an unattended matter, decides to reboot on it’s own, without letting the calling script (in this case MDT), know before hand. It may be a couple of seconds before all processes have a chance to shutdown. It’s possible that MDT may try to continue installing the next program in the order or other cleanup tasks, when it shouldn’t.</p>
<p>Instead, a program should return <a href="http://msdn.microsoft.com/en-us/library/ms819773.aspx">Windows.h</a> Error Code: 3010 ( ERROR_SUCCESS_REBOOT_REQUIRED ).</p>
<p>This will let MDT know that a reboot is required, reboot the machine, and *then* continue with the rest of the installation packages.</p>
<h3>Other Notes</h3>
<p>There are a few other notes that I wish I could mention to the authors of installation packages:</p>
<ul>
<li>Be aware that the installation may be performed under one user account, but the program may be used under another account. When calling MSIExec.exe, I usually call it with the ALLUSERS=2 property.</li>
<li>Please make it easy to determine what the unattended/silent installation procedures are. It’s not always easy to determine what the command line parameters are.</li>
<li>If you have a Self Extracting Executable that calls msiexec.exe, please provide a way to pass logging and other properties (see above) to msiexec.exe.</li>
<li>Speaking of Self Extracting Exe files that call *.msi packages. Please just provide the *.msi install package, it’s much easier.</li>
<li>On your web site, please provide direct access to your install packages, rather than going through some web logic. Several populat sites, for example will attempt to offer you *only* the x86 or x64 binaries depending on which platform you are running on, even though I may need both for packaging.</li>
<li>Please keep the desktop free from links/icons, or provide a property in MSI to disable shortcuts creation on the desktop (I’m talking to you Adobe Reader). I like keeping my desktop clean.</li>
<li>Speaking of options, please provide ways on the command line to enable/disable most common features.</li>
</ul>
<p> </p>
<p>Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/268/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=268&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/01/20/how-mdt-does-application-installation/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>Great Overview on Windows Deployment A-Z&#8230;</title>
		<link>http://deployment.xtremeconsulting.com/2010/01/18/great-overview-on-windows-deployment-a-z/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/01/18/great-overview-on-windows-deployment-a-z/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 01:27:55 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MDT 2010]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=273</guid>
		<description><![CDATA[Our friend Jeremy Chapman has written a whitepaper: Deploying Windows 7 from A to Z.doc http://www.microsoft.com/downloads/details.aspx?displaylang=en&#38;FamilyID=dfafb346-97dd-4fca-947e-3d9149834da6 It’s a good introductory reference to MDT, SCCM, and Deployment in general. Keith Keith Garner is a Deployment Specialist with Xtreme Consulting Group<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=273&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Our friend Jeremy Chapman has written a whitepaper:</p>
<p>Deploying Windows 7 from A to Z.doc<br />
<a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=dfafb346-97dd-4fca-947e-3d9149834da6">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=dfafb346-97dd-4fca-947e-3d9149834da6</a></p>
<p>It’s a good introductory reference to MDT, SCCM, and Deployment in general.</p>
<p>Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=273&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/01/18/great-overview-on-windows-deployment-a-z/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>
	</item>
		<item>
		<title>This week in OS Deployment</title>
		<link>http://deployment.xtremeconsulting.com/2010/01/15/this-week-in-os-deployment/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/01/15/this-week-in-os-deployment/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 22:20:29 +0000</pubDate>
		<dc:creator>tmintner</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[MDT 2010]]></category>
		<category><![CDATA[MDT]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/2010/01/15/this-week-in-os-deployment/</guid>
		<description><![CDATA[Hey Everyone! &#160; There has been several items posted in the OS Deployment community this week that you should definitely know about: &#160; New KB Article published on USMT and MDT 2010.&#160; This will fix issues when migrating items such as Operating System specific settings like network shares, printers, and EFS certificates.&#160; This is a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=267&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hey Everyone!</p>
<p>&#160;</p>
<p>There has been several items posted in the OS Deployment community this week that you should definitely know about:</p>
<p>&#160;</p>
<p><a href="http://support.microsoft.com/kb/977565">New KB Article published on USMT and MDT 2010</a>.&#160; This will fix issues when migrating items such as Operating System specific settings like network shares, printers, and EFS certificates.&#160; This is a must have fix for MDT 2010!</p>
<p>&#160;</p>
<p>The <a href="http://blogs.technet.com/deploymentguys">Deployment Guys</a> also posted two great stories this week:</p>
<p><a href="http://blogs.technet.com/deploymentguys/archive/2010/01/15/added-support-for-802-1x-in-windows-pe.aspx">802.1x Security for Windows PE</a>!&#160; This has been a much requested feature to add 802.1x security to Windows PE.&#160; </p>
<p>They also posted a great article on how to migrate time zone settings from an existing computer during an installation:</p>
<p><a href="http://blogs.technet.com/deploymentguys/archive/2010/01/11/setting-mdt-time-zone-variables-from-the-source-os-time-zone.aspx">http://blogs.technet.com/deploymentguys/archive/2010/01/11/setting-mdt-time-zone-variables-from-the-source-os-time-zone.aspx</a></p>
<p>&#160;</p>
<p>Enjoy and have a great week!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=267&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/01/15/this-week-in-os-deployment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/240858a50784c41cedfbc35048e21064?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tmintner</media:title>
		</media:content>
	</item>
		<item>
		<title>Water Water everywhere&#8230;</title>
		<link>http://deployment.xtremeconsulting.com/2010/01/07/water-water-everywhere/</link>
		<comments>http://deployment.xtremeconsulting.com/2010/01/07/water-water-everywhere/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 07:30:58 +0000</pubDate>
		<dc:creator>keithga</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tmintner.wordpress.com/?p=263</guid>
		<description><![CDATA[I was walking in through the Lobby of Microsoft building 18 yesterday, and someone came in to tell the receptionist that there was a burst water main leaking in the building. Unfortunately, this is a normal occurrence in Microsoft Building 18. And has happened every year since 2007, and typically localized arround the Microsoft Deployment [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=263&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was walking in through the Lobby of Microsoft building 18 yesterday, and someone came in to tell the receptionist that there was a burst water main leaking in the building. Unfortunately, this is a <strong><em>normal</em></strong> occurrence in Microsoft Building 18. And has happened <strong><em>every</em></strong> year since 2007, and typically localized arround the Microsoft Deployment Toolkit team members.</p>
<p>Luckily, this year, we found most Team Members, and we were disconnecting machines from power before the flood waters came. And were also able to get critical machines out before the moving crews came to cart the equipment out to an undisclosed location during repairs.</p>
<p>For example, here is what the office of Mike Niehaus looked like yesterday.</p>
<p><a href="http://tmintner.files.wordpress.com/2010/01/img_1625.jpg"><img style="display:inline;border:0;" title="IMG_1625" src="http://tmintner.files.wordpress.com/2010/01/img_1625_thumb.jpg?w=244&#038;h=184" border="0" alt="IMG_1625" width="244" height="184" /></a></p>
<p>His entire office is now completely bare, and cleaning crews are doing their thing.</p>
<p>It’s been a crazy start to 2010! Hopefully things will calm down and I&#8217;ll start posting more soon.</p>
<p>Keith</p>
<address><a href="http://keithga.com"><span style="color:#993300;">Keith Garner</span></a><span style="color:#993300;"> is a Deployment Specialist with </span><a href="http://deployment.xtremeconsulting.com/"><span style="color:#993300;">Xtreme Consulting Group</span></a></address>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tmintner.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tmintner.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tmintner.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=deployment.xtremeconsulting.com&blog=9840217&post=263&subd=tmintner&ref=&feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://deployment.xtremeconsulting.com/2010/01/07/water-water-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba37c28620c8ba69ccbbfad7a905e203?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">keithga</media:title>
		</media:content>

		<media:content url="http://tmintner.files.wordpress.com/2010/01/img_1625_thumb.jpg" medium="image">
			<media:title type="html">IMG_1625</media:title>
		</media:content>
	</item>
	</channel>
</rss>