<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Ken Brumfield's Blog</title><subtitle type="html" /><id>http://blogs.technet.com/ken_brumfield/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/ken_brumfield/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-08-08T21:44:00Z</updated><entry><title>Return of the Little Shop of Drivers</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2009/10/30/return-of-the-little-shop-of-drivers.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2009/10/30/return-of-the-little-shop-of-drivers.aspx</id><published>2009-10-30T17:19:00Z</published><updated>2009-10-30T17:19:00Z</updated><content type="html">&lt;P&gt;It's been a while since I've posted.&amp;nbsp; Just over a year actually...&amp;nbsp; I have this long list of half started posts, but just somehow can never seem to find the time to finish them up.&amp;nbsp; However, with the exciting new release of Win7, I have managed to update my scripts to automatically add stuff to the WIMs for deployment.&amp;nbsp; As such, here is the updated script deprecating IMAGEX and PEIMG for DISM.&amp;nbsp; Hope this helps with some of your automation needs.&lt;/P&gt;
&lt;P&gt;Editorial comments:&amp;nbsp;&amp;nbsp;I do like DISM much better as it is a little easier in the syntax, plus searches directory heirarchies for drivers.&amp;nbsp;&amp;nbsp;This makes it a little easier when I toss stuff into %DRIVERS_ROOT_PATH% so I don't have to waste time figuring out which directory contains the actual drivers (as you may have noticed, there is sometimes a whole bunch of other stuff in driver downloads).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;@echo off&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Check Inputs&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;IF "%1"=="" (&lt;BR&gt;Echo Enter the directory root for the drivers and packages to add to the image.&lt;BR&gt;GOTO END&lt;BR&gt;)&lt;/P&gt;
&lt;P&gt;IF "%2"=="" (&lt;BR&gt;Echo Enter WIM file name.&amp;nbsp; This must be in the root of the &lt;BR&gt;GOTO END&lt;BR&gt;)&lt;/P&gt;
&lt;P&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::SET Variables&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;SET REFERENCENAME=%1&lt;BR&gt;SET MOUNTPOINT=D:\FOO\%REFERENCENAME%&lt;BR&gt;SET FILES_ROOT_PATH=D:\%REFERENCENAME%&lt;BR&gt;SET IMAGEFILE=%FILES_ROOT_PATH%\%2&lt;BR&gt;SET DRIVERS_ROOT_PATH=%FILES_ROOT_PATH%\Drivers&lt;BR&gt;SET PACKAGES_ROOT_PATH=%FILES_ROOT_PATH%\Packages&lt;BR&gt;SET LOGS_ROOT_PATH=%FILES_ROOT_PATH%\Logs&lt;BR&gt;::SET WIN_AIK_INSTALL_PATH=C:\Program Files\Windows AIK\Tools&lt;BR&gt;::echo %WIN_AIK_INSTALL_PATH%&lt;/P&gt;
&lt;P&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Ensure needed directories exist and are ready to be used&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;if not exist %MOUNTPOINT% (md %MOUNTPOINT%) ELSE (DISM /Unmount-Wim /MountDir:%MOUNTPOINT% /discard)&lt;BR&gt;if not exist %LOGS_ROOT_PATH% (md %LOGS_ROOT_PATH%) ELSE (del /s /q %LOGS_ROOT_PATH%&amp;gt;NUL)&lt;/P&gt;
&lt;P&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Identify number of images in WIM and process each image&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;for /f "tokens=1,2 delims=: " %%i in ('dism /get-wiminfo /wimfile:%IMAGEFILE%') do if "%%i"=="Index" SET IMAGE_COUNT=%%j&lt;BR&gt;Echo This WIM contains %IMAGE_COUNT% image(s).&lt;BR&gt;For /l %%i in (1,1,%IMAGE_COUNT%) do call :update %IMAGEFILE% %%i&lt;BR&gt;GOTO END&lt;/P&gt;
&lt;P&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Process per image steps&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;:update&lt;BR&gt;Echo Updating %1 - Image #%2&lt;BR&gt;DISM /Mount-WIM /WimFile:%1 /Index:%2 /MountDir:%MOUNTPOINT%&lt;BR&gt;DISM /Image:%MOUNTPOINT% /Add-Driver /Driver:%DRIVERS_ROOT_PATH% /recurse /ForceUnsigned&lt;BR&gt;::for /f %%i in ('dir /ad /b %PACKAGES_ROOT_PATH%') do Call :InstallPackage %%i %2&lt;BR&gt;DISM /Unmount-Wim /MountDir:%MOUNTPOINT% /Commit&lt;BR&gt;goto :EOF&lt;/P&gt;
&lt;P&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Install a specified package&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;:InstallPackage&lt;BR&gt;Echo Installing Package %PACKAGES_ROOT_PATH%\%1&lt;BR&gt;ECHO DISM /Image:%MOUNTPOINT% /Apply-Unattend:%PACKAGES_ROOT_PATH%\%1\%1.xml /Log-Path:%LOGS_ROOT_PATH%\%2-%1&amp;gt;NUL&lt;BR&gt;IF ERRORLEVEL 1 ECho&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERROR:&amp;nbsp; Couldn't Install Package "%1"&lt;BR&gt;GOTO :EOF&lt;/P&gt;
&lt;P&gt;:END&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;::Clean up variables&lt;BR&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;BR&gt;SET IMAGE_COUNT=&lt;BR&gt;SET REFERENCENAME=&lt;BR&gt;SET IMAGEFILE=&lt;BR&gt;SET MOUNTPOINT=&lt;BR&gt;SET FILES_ROOT_PATH=&lt;BR&gt;SET DRIVERS_ROOT_PATH=&lt;BR&gt;SET PACKAGES_ROOT_PATH=&lt;BR&gt;SET WIN_AIK_INSTALL_PATH=&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3290439" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author></entry><entry><title>Getting the most out of the redundancy native to AD when making applications "AD Aware"</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2009/02/09/getting-the-most-out-of-the-redundancy-native-to-ad-when-making-applications-ad-aware.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2009/02/09/getting-the-most-out-of-the-redundancy-native-to-ad-when-making-applications-ad-aware.aspx</id><published>2009-02-10T02:11:00Z</published><updated>2009-02-10T02:11:00Z</updated><content type="html">&amp;nbsp; 
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Many customers ask how they can best configure applications so that the applications can take full advantage of the fault tolerance built into Active Directory (AD).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;While there is no one right answer to this question, there are several common strategies that are frequently used.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, these strategies are not without their own shortcomings and thus deserve some discussion around the shortcomings of each of these strategies.&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;To set the context, in all strategies that must be employed the application developer (yes we are talking about the other guy/gal, and not the AD guy) must handle the following scenarios in some fashion or another within their code:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Server inaccessible - Whether the server isn't online at all, or it goes down at some point after the connection was established&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Concurrency - Since AD is loosely convergent, it may take several seconds to several hours (depending on the replication interval) for the data to replicate from one DC to another.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If there is the need to read the data immediately after it is written, or ensure consistency between multiple applications for any reason, all sensitive operations should occur on one box.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pointing all LDAP enabled applications to a DNS Alias - i.e. "activedirectory.contoso.com"&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Easy for the developers to grasp and use.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also a very low cost from the infrastructure perspective&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Breaks Kerberos - To use Kerberos to authenticate against LDAP, the Service Principal Name of "LDAP/requestedserver.contoso.com" is queried.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this case, "LDAP/activedirectory.contoso.com" would be searched for and would not be found.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Kerberos authentication thus fails and the application then tries NTLM.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;While NTLM will work, it is well known that NTLM is less secure than Kerberos and we thus should avoid unless absolutely necessary.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Enabling Kerberos by registering the ServicePrincipalNames "LDAP/activedirectory.contoso.com" and "LDAP/activedirectory" on all DCs is not the best way to fix this.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The reasons not to are a Kerberos discussion, and are out of scope for this conversation.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Costly to setup and maintain from a labor perspective.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Every time a DC is added to or removed from the environment, this must be updated.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also, if a DC is taken down for an extended period, this DNS record should be cleaned up.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Breaks concurrency since there is no guarantee that any two applications that require consistency of the data will communicate with the same box.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Not site aware.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Depending on the administrators' configuration of the alias, the LDAP searches may traverse a WAN link.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Does not distinguish between Global Catalog and non-Global Catalog Domain Controllers.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Unpredictable selection of DCs&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.75in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Using the FQDN of the domain (i.e. contoso.com):&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Easy for the developers to grasp and use.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also a very low cost from the infrastructure perspective&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;DNS 'A' records are automatically maintained by the Domain Controllers and are registered by the NETLOGON service&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Not site aware.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;All DCs register here (unless otherwise tuned) reference &lt;/SPAN&gt;&lt;A href="http://support.microsoft.com/kb/258213" mce_href="http://support.microsoft.com/kb/258213"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;http://support.microsoft.com/kb/258213&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Does not distinguish between Global Catalog and non-Global Catalog Domain Controllers&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.75in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Using the FQDN of the domain to locate Global Catalogs (i.e. gc._msdcs.contoso.com):&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;All the same concerns relating to the FQDN of the domain are relevant except that this record distinguishes a list of GCs.&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Using site specific SRV records:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;_ldap._tcp.SITENAME._sites.dc._msdcs.contoso.com&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;_ldap._tcp.SITENAME._sites.gc._msdcs.contoso.com&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Ensures a DC or GC is located near the calling application.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;DNS 'SRV' records are automatically maintained by the Domain Controllers and are registered by the NETLOGON service&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Requires more code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since this returns SRV type records, name resolution must be done separately and each record returned must be attempted individually to accommodate a system that might not be online at any point in time.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Accuracy is dependant on the efficiency of the AD site design.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, this will affect clients above and beyond the current application&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Using non-site specific SRV records:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;_ldap._tcp.dc._msdcs.contoso.com&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;_ldap._tcp.gc._msdcs.contoso.com&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;DNS 'SRV' records are automatically maintained by the Domain Controllers and are registered by the NETLOGON service&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;See "Using site specific SRV records"&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Not site specific.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.75in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Using &lt;A href="http://msdn.microsoft.com/en-us/library/ms675987(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms675987(VS.85).aspx"&gt;DsGetDomainControllerInfo&lt;/A&gt;:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Provides extensive detail about the Domain Controller&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Requires more code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since this returns a list of servers, name resolution must be done separately and each record returned must be attempted individually to accommodate a system that might not be online at any point in time.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Can accommodate site awareness, since the site the DC is in is returned.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, this site awareness must be implemented in code.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.75in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Hard coding to a specific DC:&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Pros:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Predictable&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=disc&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Cons:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in; unicode-bidi: embed; DIRECTION: ltr; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 0.375in" type=circle&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Requires specific knowledge of the AD environment.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Should be a configuration option of the application.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We all know how many problems we can run into if we are hard coding values inside of an application and have to change them later.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle"&gt;&lt;SPAN style="FONT-FAMILY: Calibri; FONT-SIZE: 11pt"&gt;Need to figure out a strategy to keep the application on line when the server goes down.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3199674" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author><category term="Finding domain controller" scheme="http://blogs.technet.com/ken_brumfield/archive/tags/Finding+domain+controller/default.aspx" /></entry><entry><title>Managing netbootGuid</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/11/13/managing-netbootguid.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/11/13/managing-netbootguid.aspx</id><published>2008-11-13T16:19:00Z</published><updated>2008-11-13T16:19:00Z</updated><content type="html">&lt;P&gt;The attribute on AD computer objects netbootGuid is very important to allowing some deployment options (RIS and WDS) to locate the computer object the hardware belongs to.&amp;nbsp; Unfortunately certain activities, such as replacing the system board or swapping in new hardware but using a pre-existing computer name, can invalidate the accuracy of the netbootGuid attribute stored in AD.&lt;/P&gt;
&lt;P&gt;I wrote the script below (more precisely cobbled together since my VBScript is very rusty) to automatically check to make sure the netbootGuid is correct and update it if it isn't.&amp;nbsp; This script can be deployed as a startup script via Group Policies to ensure every time the computer boots, the netbootGuid will be updated if needed.&amp;nbsp; However, in order for this to work, the ACLs on the computer objects must be changed to allow SELF to write to the netbootGuid property.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;References (from whence I cobbled):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" title="How to prestage an RIS client computer by using ADSI" href="http://support.microsoft.com/kb/302467" mce_href="http://support.microsoft.com/kb/302467"&gt;How to prestage an RIS client computer by using ADSI&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" title="Working with Binary Data (GUIDs) in VBScript" href="http://theessentialexchange.com/blogs/michael/archive/2007/11/13/working-with-binary-data-guids-in-vbscript.aspx" mce_href="http://theessentialexchange.com/blogs/michael/archive/2007/11/13/working-with-binary-data-guids-in-vbscript.aspx"&gt;Working with Binary Data (GUIDs) in VBScript&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/ericlippert/archive/2004/05/25/141525.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/2004/05/25/141525.aspx"&gt;Eric Lippert's Blog&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Note:&amp;nbsp; I'm not entirely fond of having to write out to a temp file to turn the GUID into a byte array.&amp;nbsp; But it works.&amp;nbsp; I'm open to feedback on alternate methods as to how I can rewrite the function baConvertGuidToByteArray without writing out to the temporary file.&amp;nbsp; Thanks in advance.&lt;/P&gt;
&lt;P&gt;&amp;lt;VBScript&amp;gt;&lt;/P&gt;
&lt;P&gt;'http://support.microsoft.com/kb/302467&lt;BR&gt;'The sample uses WMI to return the UUID on the system.&lt;BR&gt;'If a UUID can not be found on the system it returns all F's.&lt;BR&gt;'What RIS does in this case is it uses a zero'd out version of the MAC &lt;BR&gt;'address of the NIC the machine is booting off of. &lt;BR&gt;'This sample will return the value required to set the &lt;BR&gt;'netbootGUID attribute&lt;/P&gt;
&lt;P&gt;Option Explicit&lt;/P&gt;
&lt;P&gt;Call UpdateNetbootGuid(guidGetUUID, szGetDn)&lt;/P&gt;
&lt;P&gt;Function guidGetUUID&lt;BR&gt;&amp;nbsp;Dim SystemSet, SystemItem, NetworkAdapterSet, NetworkAdapter&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Set SystemSet = GetObject("winmgmts:").InstancesOf ("Win32_ComputerSystemProduct")&lt;BR&gt;&amp;nbsp;For Each SystemItem In SystemSet&lt;BR&gt;&amp;nbsp;&amp;nbsp;If SystemItem.UUID = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF" Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Set NetworkAdapterSet = GetObject("winmgmts:").InstancesOf ("Win32_NetworkAdapter")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For Each NetworkAdapter In NetworkAdapterSet&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If NetworkAdapter.AdapterType = "Ethernet 802.3" And NetworkAdapter.Description &amp;lt;&amp;gt; "Packet Scheduler Miniport" Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;guidGetUUID = "00000000-0000-0000-0000-" &amp;amp; Replace(NetworkAdapter.MACAddress, ":", "")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next&lt;BR&gt;&amp;nbsp;&amp;nbsp;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;guidGetUUID = SystemItem.UUID&lt;BR&gt;&amp;nbsp;&amp;nbsp;End If&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Next&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;Function szGetDN&lt;BR&gt;' Use the NameTranslate object to convert the NT name of the computer to&lt;BR&gt;' the Distinguished name required for the LDAP provider. Computer names&lt;BR&gt;' must end with "$". Returns comma delimited string to calling code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Dim objTrans, objDomain, wshNetwork, strComputerName &lt;BR&gt;&amp;nbsp;' Constants for the NameTranslate object.&lt;BR&gt;&amp;nbsp;Const ADS_NAME_INITTYPE_GC = 3&lt;BR&gt;&amp;nbsp;Const ADS_NAME_TYPE_NT4 = 3&lt;BR&gt;&amp;nbsp;Const ADS_NAME_TYPE_1779 = 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Set wshNetwork = CreateObject("WScript.Network")&lt;BR&gt;&amp;nbsp;strComputerName = wshNetwork.ComputerName&lt;BR&gt;&amp;nbsp;Set objTrans = CreateObject("NameTranslate")&lt;BR&gt;&amp;nbsp;Set objDomain = getObject("&lt;A href="ldap://rootDse/"&gt;LDAP://rootDse&lt;/A&gt;")&lt;BR&gt;&amp;nbsp;objTrans.Init ADS_NAME_INITTYPE_GC, ""&lt;BR&gt;&amp;nbsp;objTrans.Set ADS_NAME_TYPE_NT4, wshNetwork.UserDomain &amp;amp; "\" _&lt;BR&gt;&amp;nbsp;&amp;amp; strComputerName &amp;amp; "$"&lt;BR&gt;&amp;nbsp;szGetDN = objTrans.Get(ADS_NAME_TYPE_1779)&lt;BR&gt;&amp;nbsp;'Set DN to upper Case&lt;BR&gt;&amp;nbsp;szGetDN = UCase(szGetDN)&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;Sub UpdateNetbootGuid(guidUUID, szComputerDn)&lt;BR&gt;&amp;nbsp;Dim oComputer&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Get parentcontainer&lt;BR&gt;&amp;nbsp;Set oComputer = GetObject("LDAP://" &amp;amp; szComputerDn)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;If ByteArrayToGuid(oComputer.netbootGuid) &amp;lt;&amp;gt; guidUUID Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;oComputer.Put "netbootGuid", baConvertGuidToByteArray(guidUUID)&lt;BR&gt;&amp;nbsp;&amp;nbsp;oComputer.SetInfo&lt;BR&gt;&amp;nbsp;End If&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Clean up&lt;BR&gt;&amp;nbsp;&amp;nbsp;Set oComputer = Nothing&lt;BR&gt;End Sub&lt;/P&gt;
&lt;P&gt;Function ByteArrayToGuid(arrbytOctet)&lt;BR&gt;If Not IsEmpty(arrbytOctet) Then&lt;BR&gt;&amp;nbsp;ByteArrayToGuid = _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 4, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 3, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 2, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 1, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;"-" &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 6, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 5, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;"-" &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 8, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 7, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;"-" &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 9, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 10, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;"-"&amp;nbsp; &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 11, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 12, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 13, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 14, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 15, 1))), 2) &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;Right("0" &amp;amp; Hex(AscB(MidB(arrbytOctet, 16, 1))), 2)&lt;BR&gt;&amp;nbsp;End If&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;Function baConvertGuidToByteArray(ByVal strHexString)&lt;BR&gt;&amp;nbsp;Dim fso, stream, temp, ts, n, szScrubbedString&lt;BR&gt;&amp;nbsp;Set fso = CreateObject ("scripting.filesystemobject") &lt;BR&gt;&amp;nbsp;Set stream = CreateObject ("adodb.stream")&lt;BR&gt;&amp;nbsp;Const TemporaryFolder = 2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;temp = fso.GetSpecialFolder(TemporaryFolder) &amp;amp; fso.gettempname () &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Set ts = fso.createtextfile (temp) &lt;/P&gt;
&lt;P&gt;&amp;nbsp;szScrubbedString = Replace(strHexString, "-", "")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 7, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 5, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 3, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 1, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 11, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 9, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 15, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 13, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 17, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 19, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 21, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 23, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 25, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 27, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 29, 2))&lt;BR&gt;&amp;nbsp;ts.write Chr("&amp;amp;h" &amp;amp; Mid(szScrubbedString, 31, 2))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;ts.close &lt;/P&gt;
&lt;P&gt;&amp;nbsp;stream.type = 1 &lt;BR&gt;&amp;nbsp;stream.open &lt;BR&gt;&amp;nbsp;stream.loadfromfile temp &lt;/P&gt;
&lt;P&gt;&amp;nbsp;baConvertGuidToByteArray = stream.read &lt;/P&gt;
&lt;P&gt;&amp;nbsp;stream.close &lt;BR&gt;&amp;nbsp;fso.deletefile temp &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Set stream = Nothing &lt;BR&gt;&amp;nbsp;Set fso = Nothing &lt;BR&gt;End Function&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/VBScript&amp;gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3152448" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author></entry><entry><title>Little Shop of Drivers</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/10/18/little-shop-of-drivers.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/10/18/little-shop-of-drivers.aspx</id><published>2008-10-19T02:26:00Z</published><updated>2008-10-19T02:26:00Z</updated><content type="html">&lt;p&gt;I take all my drivers and put them in %DRIVERS_ROOT_PATH% (see batch code below) and the install images I want to mess with in %FILES_ROOT_PATH%.&amp;#160; One folder per driver, the script iterates through each of the folders, and runs imagex /inf for each folder.&amp;#160; As I'm testing, this makes it much easier to start over from scratch as I was trying to get different stuff to work.&lt;/p&gt;  &lt;p&gt;&lt;strike&gt;Note:&amp;#160; I wrote this for the x64 Install.wim which only has 4 images in it, the x86 has 7, but it will work for x86 WIM if the bold/italicized number below is changed.&amp;#160; Then all the images within the WIM will be updated.&lt;/strike&gt;&lt;/p&gt;  &lt;p&gt;Note:&amp;#160; I have put some work into this since my initial posting, and determined updating, rather than reposting made the most sense.&amp;#160; This will now also automate adding packages to the image so long as the packages are in %PACKAGES_ROOT_PATH% (Ensure the Directory name is the same as the .CAB file from the package so that it knows which CAB to install).   &lt;br /&gt;This has also been generalized to work with a WIM that has any number of images.&amp;#160; This script assumes that the WIM file is in root of the folder structure that the drivers and packages are in, but that can easily be changed using the SET statements below.&lt;/p&gt;  &lt;p&gt;@echo off   &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;::Check Inputs    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;IF &amp;quot;%1&amp;quot;==&amp;quot;&amp;quot; (    &lt;br /&gt;Echo Enter the directory root for the drivers and packages to add to the image.    &lt;br /&gt;GOTO END    &lt;br /&gt;) &lt;/p&gt;  &lt;p&gt;IF &amp;quot;%2&amp;quot;==&amp;quot;&amp;quot; (   &lt;br /&gt;Echo Enter WIM file name.&amp;#160; This must be in the root of the     &lt;br /&gt;GOTO END    &lt;br /&gt;) &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::SET Variables    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;SET REFERENCENAME=%1    &lt;br /&gt;SET MOUNTPOINT=D:\FOO\%REFERENCENAME%    &lt;br /&gt;SET FILES_ROOT_PATH=D:\%REFERENCENAME%    &lt;br /&gt;SET IMAGEFILE=%FILES_ROOT_PATH%\%2    &lt;br /&gt;SET DRIVERS_ROOT_PATH=%FILES_ROOT_PATH%\Drivers    &lt;br /&gt;SET PACKAGES_ROOT_PATH=%FILES_ROOT_PATH%\Packages    &lt;br /&gt;SET LOGS_ROOT_PATH=%FILES_ROOT_PATH%\Logs    &lt;br /&gt;SET WIN_AIK_INSTALL_PATH=C:\Program Files\Windows AIK\Toolsecho %WIN_AIK_INSTALL_PATH%    &lt;br /&gt;Goto :End &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::Ensure needed directories exist and are ready to be used    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;if not exist %MOUNTPOINT% (md %MOUNTPOINT%) ELSE *&amp;quot;c:\Program Files\Windows AIK\Tools\x86\imagex.exe&amp;quot; /unmount %MOUNTPOINT%)    &lt;br /&gt;if not exist %LOGS_ROOT_PATH% (md %LOGS_ROOT_PATH%) ELSE (del /s /q %LOGS_ROOT_PATH%&amp;gt;NUL) &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::Identify number of images in WIM and process each image    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;for /f &amp;quot;tokens=1,2 delims=:&amp;quot; %%i in ('imagex /info %IMAGEFILE%') do if &amp;quot;%%i&amp;quot;==&amp;quot;Image Count&amp;quot; SET IMAGE_COUNT=%%j    &lt;br /&gt;Echo This WIM contains%IMAGE_COUNT% image(s).    &lt;br /&gt;For /l %%i in (1,1,%IMAGE_COUNT%) do call :update %IMAGEFILE% %%i    &lt;br /&gt;GOTO END &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::Process per image steps    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;:update    &lt;br /&gt;Echo Updating %1 - Image #%2    &lt;br /&gt;&amp;quot;c:\Program Files\Windows AIK\Tools\x86\imagex.exe&amp;quot; /mountrw &amp;quot;%1&amp;quot; %2 %MOUNTPOINT%    &lt;br /&gt;for /f %%i in ('dir /ad /b %DRIVERS_ROOT_PATH%') do Call :InstallDriver %%i    &lt;br /&gt;for /f %%i in ('dir /ad /b %PACKAGES_ROOT_PATH%') do Call :InstallPackage %%i %2    &lt;br /&gt;&amp;quot;%WIN_AIK_INSTALL_PATH%\x86\imagex.exe&amp;quot; /unmount /commit %MOUNTPOINT%    &lt;br /&gt;goto :EOF &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::Install a specified driver    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;:InstallDriver    &lt;br /&gt;Echo Installing Drivers from %DRIVERS_ROOT_PATH%\%1    &lt;br /&gt;&amp;quot;C:\Program Files\Windows AIK\Tools\PETools\peimg.exe&amp;quot; /verbose /inf=%DRIVERS_ROOT_PATH%\%1\*.inf /image=%MOUNTPOINT%&amp;gt;NUL    &lt;br /&gt;IF ERRORLEVEL 1 ECho&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ERROR:&amp;#160; Couldn't Install Driver &amp;quot;%1&amp;quot;    &lt;br /&gt;goto :EOF &lt;/p&gt;  &lt;p&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   &lt;br /&gt;::Install a specified package    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;f:InstallPackage    &lt;br /&gt;Echo Installing Package %PACKAGES_ROOT_PATH%\%1    &lt;br /&gt;&amp;quot;%WIN_AIK_INSTALL_PATH%\Servicing\pkgmgr&amp;quot; /n:&amp;quot;%PACKAGES_ROOT_PATH%\%1\%1.xml&amp;quot; /o:%MOUNTPOINT%;%MOUNTPOINT%\Windows /s:%TEMP% /l:%LOGS_ROOT_PATH%\%2-%1&amp;gt;NUL    &lt;br /&gt;IF ERRORLEVEL 1 ECho&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ERROR:&amp;#160; Couldn't Install Package &amp;quot;%1&amp;quot;    &lt;br /&gt;:: /m:&amp;quot;%PACKAGES_ROOT_PATH%\%1\%1.cab&amp;quot;     &lt;br /&gt;GOTO :EOF &lt;/p&gt;  &lt;p&gt;:END   &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;::Clean up variables    &lt;br /&gt;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    &lt;br /&gt;SET IMAGE_COUNT=    &lt;br /&gt;SET REFERENCENAME=    &lt;br /&gt;SET IMAGEFILE=    &lt;br /&gt;SET MOUNTPOINT=    &lt;br /&gt;SET FILES_ROOT_PATH=    &lt;br /&gt;SET DRIVERS_ROOT_PATH=    &lt;br /&gt;SET PACKAGES_ROOT_PATH=    &lt;br /&gt;SET WIN_AIK_INSTALL_PATH=&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3138460" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author></entry><entry><title>Idiosyncratic Windows Deployment Server Vista Setup Options</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/10/18/idiosyncratic-vista-setup-automation-options.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/10/18/idiosyncratic-vista-setup-automation-options.aspx</id><published>2008-10-18T21:58:00Z</published><updated>2008-10-18T21:58:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-weight: bold"&gt;I found getting both of the below topics to work the way I wanted in Windows Deployment Server (WDS) to be surprisingly tricky and fraught with unexpected results that took me quite a while to figure out.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;After all, one has to run through some large portion of the OS install before finding out that it fails.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Multiple mistakes = multiple OS Installs, which drag out this learning curve rather significantly.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I hope to save people some of these reboots and time lost by sharing what I learned.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"&gt;Computer Naming and Domain Join (applies to Windows 2008 Server as well):&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;I really like eliminating the majority of repetitive trivial tasks.&amp;nbsp; When managing desktops in an enterprise, something as simple as&amp;nbsp;A) logon and change the computer name, B) reboot, C) join the computer to the domain, and D) reboot, which only takes 10 minutes can have a significant impact.&amp;nbsp;&amp;nbsp;Even on a deployment as small as 5000 computers, this can add up to a significant cost.&amp;nbsp; 5000 systems * 10 minutes per system / 60 minutes per hour = ~833 man hours, just renaming the computer and joining&amp;nbsp;it to the domain.&amp;nbsp; SYSPREP and the mini setup do a lot to help reduce this impact, but that still means that some administrator&amp;nbsp;has to revisit the computer after the OS is deployed to&amp;nbsp;the box and before a user can work.&amp;nbsp; This seems an incredibly inefficient use of labor to me.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;As a result of this, I like to have the system join the domain during the install process.&amp;nbsp; Unfortunately, this was a little more challenging in the Vista automation than one would suspect, and there are several postings on this throughout various forums.&amp;nbsp; Unfortunately, the bits of the information are scattered about in&amp;nbsp;a fashion that doesn't really help to put the full picture together.&amp;nbsp; The key items I learned are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;%MACHINENAME% will pick up the computer name from AD if the netbootGUID attribute is populated for the system UUID as expected (See earlier posting regards this).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;%MACHINENAME% will function as "*" if the above case is not true.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;"*" will give the computer a random name (as documented).&amp;nbsp; However, even if the "Microsoft-Windows-UnattendedJoin" element of the XML is populated correctly, the computer will not be joined to the domain when the system has to generate a name.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Within the WDS/AIK space, this forces an administrator to pre-stage each and every machine.&amp;nbsp; Of course, joining the domain can be managed outside of the WDS/AIK space either by manual methods or scripting (i.e. use netdom and batch files) to overcome this limitation, but I wanted to avoid using “Autologon” functionality and writing “code” in order to accomplish something that could be taken care of during the install process.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I may, at some point, end up working on this in order to address the scenarios where it won’t fail above, but I have my learning curve on the “Microsoft Deployment Toolkit” to go through first to see if it provides the level of functionality I desire.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Note:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;At some point we seem to have updated Windows so that the computer can be renamed and joined to a domain in one shot, though it seems that many people either don't know or don't use this.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is a little tricky too; the computer name must be changed first, then the domain membership.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If this is done in the reverse order, it won’t rename the computer account in AD that was created when the domain was joined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Required Unattend.XML settings:&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Symbol; FONT-SIZE: 10pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;·&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: Symbol"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Specialize Pass&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc749460.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc749460.aspx"&gt;Microsoft-Windows-Shell-Setup\ComputerName&lt;/A&gt; = %MACHINENAME%&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc748904.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748904.aspx"&gt;Microsoft-Windows-UnattendedJoin\Identification\JoinDomain&lt;/A&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter Domain Name&amp;gt;&lt;/I&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc748848.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748848.aspx"&gt;Microsoft-Windows-UnattendedJoin\Identification\MachineObjectOU&lt;/A&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter OU&amp;gt;&lt;/I&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc766038.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc766038.aspx"&gt;Microsoft-Windows-UnattendedJoin\Identification\Credentials\Domain&lt;/A&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter Domain Name&amp;gt;&lt;/I&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc749010.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc749010.aspx"&gt;Microsoft-Windows-UnattendedJoin\Identification\Credentials\Password&lt;/A&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter Domain Name&amp;gt;&lt;/I&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Wingdings; FONT-SIZE: 10pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;§&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: Wingdings"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Note:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This password will not be encrypted when the following setting is enabled.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc722019.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc722019.aspx"&gt;Hide Sensitive Data in an Answer File&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 1in; mso-add-space: auto" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;o&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 7pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc748919.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748919.aspx"&gt;Microsoft-Windows-UnattendedJoin\Identification\Credentials\UserName&lt;/A&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter Account Name&amp;gt;&lt;/I&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"&gt;Eliminating the Mid-Install Wizard (&lt;/SPAN&gt;&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Out-Of-the-Box-Experience)&lt;/SPAN&gt;&lt;/B&gt;&lt;B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt"&gt;:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Also, within my continued endeavors to make installs as low touch as possible, I feel having the computer pause for human intervention somewhere in the middle of installing the OS undermines much of the other automation.&amp;nbsp; Thus, a wizard that pops up mid-install to ask what language it is desired to run the computer in and to create a local account is something I would seek to eliminate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Though the dialog the wizard presents a reasonable question (locality settings) that the average user could handle, it&amp;nbsp;wouldn't bother me so much if there wasn't another delay that prevented the system from being used immediately afterwards (the computer goes through the performance tests to determine the Windows Performance Index).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Having a user or administrator sit through that progress bar is also a productivity impact, again the reason I seek to eliminate that interim step.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also, since the workstation is joined to a domain, I do not want to create additional and unused accounts for no good reason in order to make the box just disappear from the user experience (though I would have settled with doing so and saw some suggestions on forums to this end).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Normally it will show the wizard if regional settings and creation of a local account are not both configured.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As I stated above, I wanted to avoid creating a user account, thus as a work around, I found that setting &lt;A href="http://technet.microsoft.com/en-us/library/cc765947.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc765947.aspx"&gt;Microsoft-Windows-Shell-Setup/OOBE/SkipMachineOOBE&lt;/A&gt; to “true” in the oobeSystem pass bypassed this mid-install wizard.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The nice part is that this did allow me to set the settings I desired (i.e. regional settings) and bypass the others (local user account).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;As a warning, the help context states that &lt;/SPAN&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc765947.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc765947.aspx"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;SkipMachineOOBE&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt; is deprecated and shouldn’t be used, which may cause additional issues as the install process may be changed in future versions of Windows, but it currently works for my needs.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also, heed the warning in the article, and setting &lt;A href="http://technet.microsoft.com/en-us/library/cc765947.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc765947.aspx"&gt;SkipMachineOOBE&lt;/A&gt; to true may leave the machine in an unusable state, see the next step.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Required Unattend.XML settings:&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo2; tab-stops: list .5in; mso-add-space: auto" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Symbol; FONT-SIZE: 10pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;oobeSystem&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l2 level1 lfo3; mso-add-space: auto" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc765947.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc765947.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\OOBE\SkipMachineOOBE&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; = True&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Suggested Unattend.XML settings:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo1; tab-stops: list .5in; mso-add-space: auto" class=MsoListParagraphCxSpFirst&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: Symbol; FONT-SIZE: 10pt; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;oobeSystem&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc748926.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748926.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-International-Core\InputLocale&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter SelectedLocale&amp;gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc766324.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc766324.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-International-Core\SystemLocale&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter SelectedLocale&amp;gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc766421.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc766421.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-International-Core\UILanguage&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter SelectedLocale&amp;gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc748973.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748973.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-International-Core\UserLocale&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter SelectedLocale&amp;gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc749231.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc749231.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\OOBE\HideEULAPage&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; = true&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc749278.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc749278.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\OOBE\ProtectYourPC&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;= 3&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc749283.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc749283.aspx"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\OOBE\NetworkLocation&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; = Work&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc765947.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc765947.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\OOBE\SkipMachineOOBE&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; = True&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 1in; mso-list: l1 level2 lfo1; tab-stops: list 1.0in; mso-add-space: auto" class=MsoListParagraphCxSpLast&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;o&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family: Arial; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc766409.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc766409.aspx"&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft-Windows-Shell-Setup\UserAccounts\AdministratorPassword&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; = &lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;Enter a Password&amp;gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;Administrator account warning:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;By default, &lt;A href="http://blogs.msdn.com/windowsvistasecurity/archive/2006/08/27/windowsvistasecurity-.aspx" mce_href="http://blogs.msdn.com/windowsvistasecurity/archive/2006/08/27/windowsvistasecurity-.aspx"&gt;on Vista the administrator account is disabled&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Thus, if no local account is created and the computer does not get properly joined to the domain, the machine will appear to be useless.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is not as bad as it seems, by following the guidance on &lt;A href="http://blogs.msdn.com/windowsvistasecurity/archive/2006/08/27/windowsvistasecurity-.aspx" mce_href="http://blogs.msdn.com/windowsvistasecurity/archive/2006/08/27/windowsvistasecurity-.aspx"&gt;Windows Vista Security : Built-in Administrator Account Disabled&lt;/A&gt; the computer can still be joined to the domain.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In short, boot into “Safe Mode with Networking” and join the computer to the domain.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Note:&amp;nbsp; I found&amp;nbsp;in the documentation for the unattended install settings&amp;nbsp;where it states&amp;nbsp;that the administrator account can be enabled via &lt;A href="http://technet.microsoft.com/en-us/library/cc748862.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc748862.aspx"&gt;Microsoft-Windows-Shell-Setup\AutoLogon\Username&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I didn’t have any luck getting this to work on (using Vista SP1 was the only&amp;nbsp;version I tried), but it doesn't matter since there is another workaround.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;On Windows 2008 Server, if the domain join fails the administrator is prompted to set the Administrator account password, so this is not a concern.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3138519" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author></entry><entry><title>Trials and Tribulations of Learning the Vista Automated Installation Functionality</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/10/18/trials-and-tribulations-of-learning-the-vista-automated-installion-functionality.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/10/18/trials-and-tribulations-of-learning-the-vista-automated-installion-functionality.aspx</id><published>2008-10-18T17:17:00Z</published><updated>2008-10-18T17:17:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;I've pretty much come to the end of my initial learning curve on how to automate Vista installations using the AIK.&amp;nbsp;&amp;nbsp;There is some great documentation out there on how to execute the specific tasks necessary to add drivers and packages&amp;nbsp;to the image.&amp;nbsp; However, there are some gaps on how to tie it all together.&amp;nbsp; It's the subtlties that really hurt my learning curve (and installing the OS over and over and over... to test the effect of each change) that don't seem to be well documented anywhere.&amp;nbsp; I'm hoping to share at least the trickiest items that I encountered in order to save someone else many hours of learning.&amp;nbsp; As a note, I have not tried to use what used to be called "&lt;A href="http://technet.microsoft.com/en-us/desktopdeployment/default.aspx" mce_href="http://technet.microsoft.com/en-us/desktopdeployment/default.aspx"&gt;Business Desktop Deployment&lt;/A&gt;" (BDD) and is now "&lt;A href="http://technet.microsoft.com/en-us/desktopdeployment/default.aspx" mce_href="http://technet.microsoft.com/en-us/desktopdeployment/default.aspx"&gt;Microsoft Deployment Toolkit&lt;/A&gt;" (MDT) and some of the challenges I have below may be addressed in that.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I'm doing my deployments via Windows Deployment Server (WDS), the replacement for Remote Installation Server (RIS).&amp;nbsp; In RIS, I never really used the RIPREP functionality because I found the administrative burden of creating a new RIPREP image for each hardware platform and every time I needed to deploy new software excessive.&amp;nbsp; Though RIPREP could push the complete OS and applications much faster than going through the install process, I just found it easier to deal with one scripted install I could add drivers for all the hardware to, and deploy applications via SMS.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;First off, for anyone who has used RIS and the "unattend.txt" methods of installs in the past, there are a couple of features I really miss or have not yet figured out how to do in WDS:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;What I miss most from RIS: If it did not find a computer object with the &lt;A title=http://msdn.microsoft.com/en-us/library/ms678867(VS.85).aspx href="http://blogs.technet.com/controlpanel/blogs/netbootGUID" mce_href="http://blogs.technet.com/controlpanel/blogs/netbootGUID"&gt;netbootGuid&lt;/A&gt;&amp;nbsp;attribute populated with the machine's &lt;A title=http://msdn.microsoft.com/en-us/library/aa394105.aspx href="http://blogs.technet.com/controlpanel/blogs/UUID" mce_href="http://blogs.technet.com/controlpanel/blogs/UUID"&gt;UUID&lt;/A&gt;, it would prompt for a computer name during the initial startup screens. This meant I did not have to pre-stage the system before the user or SA installed it, but if it ever had to be re-installed it would keep the same name and OU location in the hierarchy (very useful in DR scenarios) since RIS would populate the netbootGUID with the UUID upon creation (WDS has an approval process scenario that requires manual intervention, but doesn't have a "auto approval" mode). Additionally, since computer name is really the only unique piece of information needed for each and every system I really liked the fact that I could deliver a 4 step install process to users and administrators and leave them with a fully provisioned system:&lt;/LI&gt;&lt;/UL&gt;
&lt;UL type=disc&gt;
&lt;OL type=1&gt;
&lt;LI&gt;Press F12 on boot&lt;/LI&gt;
&lt;LI&gt;Log in&lt;/LI&gt;
&lt;LI&gt;Enter computer name&lt;/LI&gt;
&lt;LI&gt;Go do something else for several hours&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;In RIS, if the security on the images was managed in such that a user was only allowed to see one image, RIS automatically selected that image and installed it.&amp;nbsp; Regardless as whether or not only one image is available, WDS prompts the end user to select an image.&lt;/LI&gt;
&lt;LI&gt;In the "unattend.txt" install automation method, the disk configuration options were tied to the image being deployed.&amp;nbsp; I really liked this feature since I could have both a server OS image and a client OS image on the deployment server and allow the server operator to create the partitions they wanted according to their needs while automating the partitioning of the client system disks.&amp;nbsp; Now I think I need two WDS servers to provide the same level of functionality.&amp;nbsp; I don't think this is WDS limitation, but more a limitation related to the 2 stage install process Vista uses.&amp;nbsp; I still miss this functionality, regardless of where it falls.&lt;/LI&gt;
&lt;LI&gt;The ability to have one OS build/WIM and multiple configuration files if the only difference, for example, is that one department doesn't want their users to have certain windows features installed by default (think the default Windows games).&lt;/LI&gt;
&lt;LI&gt;The RIS UI loaded very fast, this cut down the time an administrator was sitting idle on a system rebuild, cutting operational costs.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;What I really like about the new tools:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Multi-cast - large deployments = nuff said.&lt;/LI&gt;
&lt;LI&gt;The administrative tools are much better.&lt;/LI&gt;
&lt;LI&gt;The tools and documentation for generating the scripted installs made life a lot easier than the initial learning curve I recall going through with unattend.txt.&lt;/LI&gt;
&lt;LI&gt;Driver management.&amp;nbsp; Run a couple of command lines and the image is updated. There is no longer a need to have to manually update a text file (typos... grrr) and build out a folder structure for every image/driver set&amp;nbsp;managed.&amp;nbsp; Adding in new drivers&amp;nbsp;to the boot image is much easier than in RIS and uses the same methodology as the install images, which is a very nice win.&amp;nbsp; And no more drivers all using oemsetup.inf tripping over each other in the boot image and fighting with that.&lt;/LI&gt;
&lt;LI&gt;Drive partitioning tools are much better.&amp;nbsp; Even if the UI can't provide the functionality needed, the ability to drop to a command line and use diskpart for the fine grained configuration desired is awesome.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3138386" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author><category term="Windows Deployment Server WDS Remote Installation Server" scheme="http://blogs.technet.com/ken_brumfield/archive/tags/Windows+Deployment+Server+WDS+Remote+Installation+Server/default.aspx" /></entry><entry><title>Identifying Stale User and Computer Accounts</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/09/16/identifying-stale-user-and-computer-accounts.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/09/16/identifying-stale-user-and-computer-accounts.aspx</id><published>2008-09-16T19:20:00Z</published><updated>2008-09-16T19:20:00Z</updated><content type="html">&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Using AD to determine whether or not people are still working for the company and are allowed to logon to the systems is not the ideal, and account management should happen based on knowing what accounts should and should not be use, and not by figuring out which haven’t been used.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Realistically, if a fired employee is still logging on to the system we are not going to pick up the account that is stale and disable/delete it like actually needs to be done.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;That said, in the real world things aren't always quite that easy.&amp;nbsp; As such, regardless of whether the account is a user account or computer account we have several attributes that are stored with the account that help us determine if it is used recently.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Unfortunately they all are potentially inaccurate in one fashion or another.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These attributes are pwdLastSet, lastLogon, and lastLogonTimeStamp (as of Windows 2003 DFL).&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Essentially you can determine if the account is stale by ensuring all of the attributes are over a designated threshold.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A starting threshold for users is 3 times the maximum user password age and for computers is also 3 times the maximum computer password age.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In short, if both pwdLastSet and lastLogonTimeStamp are greater than the threshold, it is pretty safe to delete the account, unless you are in academia and the faculty member may be on sabbatical.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;If you don’t have both of those, it gets a little more questionable as to whether or not the account is still in use, as each attribute can incorrectly report&amp;nbsp;how recently the account was used in the following fashions: &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;pwdLastSet &lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This is systemically is inaccurate if either the domain has no password policy specifying an age limit or the account has the userAccountControl attribute PASSWD_CANT_CHANGE bit set.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Note, computer accounts can be configured to not change their password, but I have not observed many environments which change this setting.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This can be also misrepresent the recentness of account usage if, for example, the user or computer has not authenticated to the network in the intervening time between when the password needed to be changed and any threshold you may specify.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Think user is on vacation or sabbatical (common in academic environments).&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This is also inaccurate if a user has a laptop and travels for extended periods.&amp;nbsp; Since the system is not&amp;nbsp;on the network to communicate with the Domain Controller at boot, it can not reset the account.&amp;nbsp; This can be addressed by several methods, restarting the netlogon service after VPN has been established or using nltest or netdom to reset the password in a VPN startup script.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;lastLogon&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The data in this attribute is not replicated, thus this is only accurate on the DC the user last logged into.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Unless all DCs for the domain are queried, the data may be inaccurate.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Since AD clients are site aware, this also means that if there was only one DC in a remote location (or as happens sometimes, only one DC listed in WINS or DNS if they aren’t configured properly) and that system is decommissioned or lost due to some sort of outage it is entirely possible any indication the account ever logged in no longer exists.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This only tracks interactive logons.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This essentially means that a user has to press Ctrl+Alt+Del in order for this to register.&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;Terminal services logons are a different type of logon in the SECURITY_LOGON_TYPE enumeration, of type RemoteInteractive and may not update lastLogon.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;At some point I will test this and update the blog (possibly, “best laid plans of mice and men” and all that).&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This is updated only when a client logs on.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If a user does not log off their machine for 90 days and the machine does not reboot, this will report the user has last logged on 90 days ago, which is exactly the truth.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It does not update in order to report that the user has been accessing the system and the network for the last 90 days.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Updating only when logon occurs also affects computers if they are not rebooted.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If the computers have remained up and running, the lastLogon is when they booted up.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is highly unlikely to impact client systems, but may impact servers if they are up for greater than a specified threshold.&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=3 face=Calibri&gt;Extremely long uptimes are much less likely if security updates are being deployed regularly.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;lastLogonTimeStamp&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This requires Windows 2003 domain functional level (DFL).&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Prior to Windows 2003 SP1 this did not track all network logons.&lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://support.microsoft.com/kb/886705" mce_href="http://support.microsoft.com/kb/886705"&gt;&lt;FONT size=3 face=Calibri&gt;http://support.microsoft.com/kb/886705&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;This can be up to 14 days off, though by adjusting your threshold but this shouldn’t be a problem if the number is sufficiently high.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;As with pwdLastSet, this is also inaccurate if a user has a laptop and travels for extended periods.&amp;nbsp;&amp;nbsp;The concerns and methods to address this&amp;nbsp;are the&amp;nbsp;same methods as pwdLastSet.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Also, when pulling this data you could also run into null values and these cause the following concerns:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;pwdLastSet – the password gets set, updating this attribute,&amp;nbsp;if you use any of the native Microsoft tools to create the account or when the computer is first joined to the domain.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If this is "0" (zero), some 3&lt;SUP&gt;rd&lt;/SUP&gt; party code probably created the account and the computer never joined.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Except for a minor inconvenience to whomever pre-created the account, this account can be safely deleted unless one of the other timestamps is not null&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;lastLogon – this could be null for any number of reasons.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The user never logged on interactively (think user who only uses web based e-mail), the user never logged on to the DC(s) queried, or the user last logged on to a DC that no longer exists.&lt;BR&gt;If this is null on all DCs and lastLogonTimeStamp is not available, do not assume the account is stale unless no decommissions of DCs have occurred within the threshold.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;lastLogonTimeStamp – if this is null the account has never logged on since the domain was brought to DFL 2003.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is only a concern if the DFL was raised within the threshold designated for the account to be stale.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Be careful with&amp;nbsp;place holder computer accounts for non-Windows OSs prior to as they may behave differently.&amp;nbsp; If you look at the operatingSystem attribute on the computer object you can determine if it needs more attention.&amp;nbsp; Examples:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Microsoft Cluster Server Virtual Server computer accounts.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;OS X&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Unix Interop&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;SAMBA&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;NetAPP&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3124874" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author><category term="pwdLastSet lastLogon lastLogonTimeStamp stale account computer user" scheme="http://blogs.technet.com/ken_brumfield/archive/tags/pwdLastSet+lastLogon+lastLogonTimeStamp+stale+account+computer+user/default.aspx" /></entry><entry><title>Performance Optimization Philosophy</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/08/14/performance-optimization-philosophy.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/08/14/performance-optimization-philosophy.aspx</id><published>2008-08-14T15:20:00Z</published><updated>2008-08-14T15:20:00Z</updated><content type="html">&lt;P&gt;Optimizing performance is not just about making things run faster, it is about making them run &lt;U&gt;appropriately fast&lt;/U&gt; based on perception and cost.&lt;/P&gt;
&lt;P&gt;Several questions may be posed at this junction:&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Why does&amp;nbsp;philosophy need to be discussed?&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Isn't performance just about making things run faster?&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;There is a common misconception that performance optimization is about making things faster.&amp;nbsp;&amp;nbsp;In actuality,&amp;nbsp;optimizing is actually&amp;nbsp;about finding the correct balance between any number of tradeoffs.&amp;nbsp; Often and simplistically this optimization is balancing between either cost and hardware (think upgrading processor), or cost and labor (think development/test time).&lt;/P&gt;
&lt;P&gt;The other component is user perception.&amp;nbsp; This is often the most challenging part of the equation and is often what triggers reviews of existing infrastructure due to perceived poor performance.&amp;nbsp; It is not uncommon that the software is behaving normally and that the issue is not due to a hardware scalability issue, but the end user still feels that the software is not fast enough.&amp;nbsp; Unfortunately, in these scenarios, there is often little that can be done in the short run without waiting for hardware to catch up with the needs of the code, optimizing the code, or waiting for fundamental architectural changes (like moving from x86 to x64) to come to pass in order be able to eliminate hardware bottlenecks.&amp;nbsp; In short, the return on investment (ROI) of throwing more hardware at the code to fix user perception may not be there.&lt;/P&gt;
&lt;P&gt;Here&amp;nbsp;are some&amp;nbsp;analogies to illustrate the point:&lt;BR&gt;My grandmother is looking for a new car.&amp;nbsp; She lives on a fixed income and, since she is getting older, doesn't travel much anymore, mostly to the grocery store or bingo, which are within 3 miles of her house.&amp;nbsp; Due to her needs, the &lt;A class="" title="Lamborghini Murciélago" href="http://autos.msn.com/research/vip/default.aspx?state=new&amp;amp;make=Lamborghini&amp;amp;model=Murcielago%20LP640" mce_href="http://autos.msn.com/research/vip/default.aspx?state=new&amp;amp;make=Lamborghini&amp;amp;model=Murcielago%20LP640"&gt;Lamborghini Murciélago&lt;/A&gt; is probably a little excessive though it probably performs well.&amp;nbsp; I'm sure that&amp;nbsp;pretty much any car that runs will be performant enough for her needs.&amp;nbsp; Furthermore, making the investment in the Murciélago is probably not going to fix her perception that it takes too long to go the 3 miles&amp;nbsp;to the supermarket.&lt;/P&gt;
&lt;P&gt;Stretching the analogy a little:&lt;BR&gt;Regardless of what car she gets, it is not a plane, thus it will never ever fly.&amp;nbsp; But also, there is no guarantee that if she gets a plane&amp;nbsp;it will be faster than a&amp;nbsp;car (the &lt;A class="" title="land speed record" href="http://en.wikipedia.org/wiki/Land_speed_record" mce_href="http://en.wikipedia.org/wiki/Land_speed_record"&gt;land speed record&lt;/A&gt; is 766 mph and a &lt;A class="" title="Piper Cub" href="http://en.wikipedia.org/wiki/Piper_J-3" mce_href="http://en.wikipedia.org/wiki/Piper_J-3"&gt;Piper Cub&lt;/A&gt;&amp;nbsp;goes about 130 MPH).&amp;nbsp; Just like it is critical never to assume that moving from x86 to x64 will speed up the application.&amp;nbsp; It would be more analogous to moving from a car to a tractor trailer where more stuff can be stored (increased addressable memory) so fewer trips (to disk/network) need to be made.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3105752" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author><category term="performance optimization x86 x64" scheme="http://blogs.technet.com/ken_brumfield/archive/tags/performance+optimization+x86+x64/default.aspx" /></entry><entry><title>NTLMv2 or not NTLMv2, that is the question.</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/ken_brumfield/archive/2008/08/08/ntlmv2-or-not-ntlmv2-that-is-the-question.aspx" /><id>http://blogs.technet.com/ken_brumfield/archive/2008/08/08/ntlmv2-or-not-ntlmv2-that-is-the-question.aspx</id><published>2008-08-08T23:44:00Z</published><updated>2008-08-08T23:44:00Z</updated><content type="html">&lt;P&gt;Enabling NTLMv2 is a project always fraught with challenges, mostly due to the lack of visibility into exactly which authentication protocol is being used by a client machine.&amp;nbsp; Management often is not gung-ho about the try it and see what breaks methodology of identifying systems that can not support NTLMv2.&amp;nbsp; As such, many administrators&amp;nbsp;have often asked&amp;nbsp;to deploy NTLMv2 to the enterprise with minimal impact to client systems.&lt;/P&gt;
&lt;P&gt;Up until now, sniffing network traffic was the only option available, and not a very good option.&amp;nbsp; With the release of Windows Vista and&amp;nbsp;2008, this becomes dramatically easier as both event filtering is improved AND security auditing has been dramatically improved.&amp;nbsp; And, since there is plenty of documentation on how to deploy NTLMv2,&amp;nbsp;this will just&amp;nbsp;tell you how to identify which systems are not using NTLMv2.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;On a Windows Vista or 2008 machine use the command line to enable auditing for Logon Events.&lt;BR&gt;"auditpol /set /subcategory:logon /success:enable /failure:enable"&lt;/LI&gt;
&lt;LI&gt;Create a custom view or filter the security log using the following syntax (copy/paste the content between the quotes):&lt;BR&gt;"&amp;lt;QueryList&amp;gt; &amp;lt;Query Id="0" Path="Security"&amp;gt; &amp;lt;Select Path="Security"&amp;gt;*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (EventID=4624)] and EventData[Data[@Name='LmPackageName']!='-'] and EventData[Data[@Name='LmPackageName']!='NTLM V2']]&amp;lt;/Select&amp;gt; &amp;lt;/Query&amp;gt; &amp;lt;/QueryList&amp;gt;"&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;If auditing is enabled on the DCs, all the domain accounts being used anywhere in the enterprise will be caught.&lt;/P&gt;
&lt;P&gt;Check out Eric Fitzgerald's blog for how to&amp;nbsp;script wevtutil.&amp;nbsp; If used with the above filter you can easily automate pulling the data you want out of the security log.&amp;nbsp; Also, my thanks to Eric for the insight into the fact that we now audit the hash used during authentication&lt;BR&gt;&lt;A href="http://blogs.msdn.com/ericfitz/archive/2008/07/16/wevtutil-scripting.aspx"&gt;http://blogs.msdn.com/ericfitz/archive/2008/07/16/wevtutil-scripting.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Here is a sample event for reference:&lt;/STRONG&gt;&lt;BR&gt;Log Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Security&lt;BR&gt;Source:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft-Windows-Security-Auditing&lt;BR&gt;Date:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5/28/2008 9:51:11 AM&lt;BR&gt;Event ID:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4624&lt;BR&gt;Task Category: Logon&lt;BR&gt;Level:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Information&lt;BR&gt;Keywords:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Audit Success&lt;BR&gt;User:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N/A&lt;BR&gt;Computer:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; computer.contoso.com&lt;BR&gt;Description:&lt;BR&gt;An account was successfully logged on.&lt;/P&gt;
&lt;P&gt;Subject:&lt;BR&gt;&amp;nbsp;Security ID:&amp;nbsp;&amp;nbsp;NULL SID&lt;BR&gt;&amp;nbsp;Account Name:&amp;nbsp;&amp;nbsp;-&lt;BR&gt;&amp;nbsp;Account Domain:&amp;nbsp;&amp;nbsp;-&lt;BR&gt;&amp;nbsp;Logon ID:&amp;nbsp;&amp;nbsp;0x0&lt;/P&gt;
&lt;P&gt;Logon Type:&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/P&gt;
&lt;P&gt;New Logon:&lt;BR&gt;&amp;nbsp;Security ID:&amp;nbsp;&amp;nbsp;ANONYMOUS LOGON&lt;BR&gt;&amp;nbsp;Account Name:&amp;nbsp;&amp;nbsp;ANONYMOUS LOGON&lt;BR&gt;&amp;nbsp;Account Domain:&amp;nbsp;&amp;nbsp;NT AUTHORITY&lt;BR&gt;&amp;nbsp;Logon ID:&amp;nbsp;&amp;nbsp;0x1161d3f3&lt;BR&gt;&amp;nbsp;Logon GUID:&amp;nbsp;&amp;nbsp;{00000000-0000-0000-0000-000000000000}&lt;/P&gt;
&lt;P&gt;Process Information:&lt;BR&gt;&amp;nbsp;Process ID:&amp;nbsp;&amp;nbsp;0x0&lt;BR&gt;&amp;nbsp;Process Name:&amp;nbsp;&amp;nbsp;-&lt;/P&gt;
&lt;P&gt;Network Information:&lt;BR&gt;&amp;nbsp;Workstation Name:&amp;nbsp;SOURCEMACHINE&lt;BR&gt;&amp;nbsp;Source Network Address:&amp;nbsp;192.168.X.X&lt;BR&gt;&amp;nbsp;Source Port:&amp;nbsp;&amp;nbsp;4996&lt;/P&gt;
&lt;P&gt;Detailed Authentication Information:&lt;BR&gt;&amp;nbsp;Logon Process:&amp;nbsp;&amp;nbsp;NtLmSsp &lt;BR&gt;&amp;nbsp;Authentication Package:&amp;nbsp;NTLM&lt;BR&gt;&amp;nbsp;Transited Services:&amp;nbsp;-&lt;BR&gt;&amp;nbsp;Package Name (NTLM only):&amp;nbsp;NTLM V1&lt;BR&gt;&amp;nbsp;Key Length:&amp;nbsp;&amp;nbsp;128&lt;/P&gt;
&lt;P&gt;This event is generated when a logon session is created. It is generated on the computer that was accessed.&lt;/P&gt;
&lt;P&gt;The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.&lt;/P&gt;
&lt;P&gt;The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).&lt;/P&gt;
&lt;P&gt;The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.&lt;/P&gt;
&lt;P&gt;The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.&lt;/P&gt;
&lt;P&gt;The authentication information fields provide detailed information about this specific logon request.&lt;BR&gt;&amp;nbsp;- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.&lt;BR&gt;&amp;nbsp;- Transited services indicate which intermediate services have participated in this logon request.&lt;BR&gt;&amp;nbsp;- Package name indicates which sub-protocol was used among the NTLM protocols.&lt;BR&gt;&amp;nbsp;- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.&lt;BR&gt;Event Xml:&lt;BR&gt;&amp;lt;Event xmlns="&lt;A href="http://schemas.microsoft.com/win/2004/08/events/event" mce_href="http://schemas.microsoft.com/win/2004/08/events/event"&gt;http://schemas.microsoft.com/win/2004/08/events/event&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;System&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Provider Name="Microsoft-Windows-Security-Auditing" Guid="{00000000-0000-0000-0000-000000000000}" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EventID&amp;gt;4624&amp;lt;/EventID&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;0&amp;lt;/Version&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Level&amp;gt;0&amp;lt;/Level&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Task&amp;gt;12544&amp;lt;/Task&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Opcode&amp;gt;0&amp;lt;/Opcode&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Keywords&amp;gt;0x8020000000000000&amp;lt;/Keywords&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TimeCreated SystemTime="2008-05-28T13:51:11.177Z" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EventRecordID&amp;gt;63818&amp;lt;/EventRecordID&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Correlation /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Execution ProcessID="656" ThreadID="752" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Channel&amp;gt;Security&amp;lt;/Channel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Computer&amp;gt;computer.contoso.com&amp;lt;/Computer&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Security /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/System&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;EventData&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="SubjectUserSid"&amp;gt;S-1-0-0&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="SubjectUserName"&amp;gt;-&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="SubjectDomainName"&amp;gt;-&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="SubjectLogonId"&amp;gt;0x0&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="TargetUserSid"&amp;gt;S-1-5-7&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="TargetUserName"&amp;gt;ANONYMOUS LOGON&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="TargetDomainName"&amp;gt;NT AUTHORITY&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="TargetLogonId"&amp;gt;0x1161d3f3&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="LogonType"&amp;gt;3&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="LogonProcessName"&amp;gt;NtLmSsp &amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="AuthenticationPackageName"&amp;gt;NTLM&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="WorkstationName"&amp;gt;SOURCEMACHINE&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="LogonGuid"&amp;gt;{00000000-0000-0000-0000-000000000000}&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="TransmittedServices"&amp;gt;-&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="LmPackageName"&amp;gt;NTLM V1&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="KeyLength"&amp;gt;128&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="ProcessId"&amp;gt;0x0&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="ProcessName"&amp;gt;-&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="IpAddress"&amp;gt;192.168.X.X&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data Name="IpPort"&amp;gt;4996&amp;lt;/Data&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/EventData&amp;gt;&lt;BR&gt;&amp;lt;/Event&amp;gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3102801" width="1" height="1"&gt;</content><author><name>kenbrumf</name><uri>http://blogs.technet.com/members/kenbrumf.aspx</uri></author><category term="NTLM NTLMv2" scheme="http://blogs.technet.com/ken_brumfield/archive/tags/NTLM+NTLMv2/default.aspx" /></entry></feed>