<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Philip Flint &#187; Active Directory</title>
	<atom:link href="http://philipflint.com/tag/active-directory/feed/" rel="self" type="application/rss+xml" />
	<link>http://philipflint.com</link>
	<description>www.philipflint.com</description>
	<lastBuildDate>Wed, 25 Jan 2012 11:41:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How do I use the Windows 2008 R2 Recycle Bin feature ?</title>
		<link>http://philipflint.com/2009/11/21/how-do-i-use-the-windows-2008-r2-recycle-bin-feature/</link>
		<comments>http://philipflint.com/2009/11/21/how-do-i-use-the-windows-2008-r2-recycle-bin-feature/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 21:19:19 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=400</guid>
		<description><![CDATA[New in Windows 2008 R2 active directory is the concept of Active Directory Optional Features and the first of these which have been made available is the Recycle Bin feature. Ever since Active Directory was launched you have been able to recover individual deleted items by undertaking an authoritative restore of sections of the database, [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">New in Windows 2008 R2 active directory is the concept of Active Directory Optional Features and the first of these which have been made available is the Recycle Bin feature. Ever since Active Directory was launched you have been able to recover individual deleted items by undertaking an authoritative restore of sections of the database, even down to an individual object. From 2003 onwards deleted objects have been tombstoned and you have been able to use the ADRestore tool (available to download from <a href="http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx">http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx</a>). However, the issue with these methods has always been with back links or, to put it another way, restoring these items with any group membership they had and, yes, it has been possible to do that with multiple authoritative restores of the database but that is at best tiresome and at worse can be dangerous. What the Recycle Bin feature does for you is restore with these back links / group memberships in place.</div>
<p>However, to use this feature the first thing you need to do is have your Forest at the Windows 2008 R2 level. Whilst your schema may be at the R2 level (meaning your forest can play host to 2008 R2 Domain Controllers) your domains and forest may still be running Domain Controllers with previous operating systems such as 2008 RTM or 2003 R2. The easy way to check your domain level in Windows 2008 R2 is to start the new Active Directory Administrative Centre. If you select the domain node on the left hand side (the netbios name of my domain is philipflint) then you will be able to check and raise the domain / forest functional levels in the action pane on the right hand side.</p>
<p> </p>
<p> </p>
<div id="attachment_382" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth1.png"><img class="size-thumbnail wp-image-382" title="112109_2118_HowdoIuseth1.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth1-150x86.png" alt="Click to Enlarge" width="150" height="86" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>If your forest level is not at Windows 2008 R2 you can raise it.</p>
<p>  </p>
<div id="attachment_383" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth2.png"><img class="size-thumbnail wp-image-383" title="112109_2118_HowdoIuseth2.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth2-150x76.png" alt="Click to Enlarge" width="150" height="76" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>We can now install the Recycle Bin feature. Care should be taken before undertaking the next procedure. Enabling the Recycle Bin feature for a domain / forest is a one way process with no way back. In a typical environment the recycle bin feature will grow the Active Directory database by 10 – 20% which may have an affect on performance especially in larger environments which many thousands of users where servers have been sized to run the complete database in RAM.</p>
<p>You should also note that, even though the Recycle Bin is an optional feature, it cannot be added as a Role Service nor as a Feature.</p>
<p> </p>
<div id="attachment_384" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth3.png"><img class="size-thumbnail wp-image-384" title="112109_2118_HowdoIuseth3.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth3-150x110.png" alt="Click to Enlarge" width="150" height="110" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>Instead the role is enabled by running a command in PowerShell. PowerShell is installed by default Windows 2008 R2 servers. However, PowerShell itself has no knowledge of Active Directory. Instead we need to load up the scripts and Verbs that PowerShell needs to be aware of to connect and control Active Directory. There are two ways to do this. The first, and simplest, is to click on Start | All Programs | Administrative Tools | Active Directory Module for Windows PowerShell.</p>
<p> </p>
<div id="attachment_385" class="wp-caption alignnone" style="width: 130px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth4.png"><img class="size-thumbnail wp-image-385" title="112109_2118_HowdoIuseth4.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth4-120x150.png" alt="Click to Enlarge" width="120" height="150" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>The other alternative is to start PowerShell by clicking on the below icon on the taskbar and then running the command below to import the Active Directory modules.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth5.png" alt="" /></p>
<p> </p>
<p><strong>Import-Module ActiveDirectory<br />
</strong></p>
<p> </p>
<p> </p>
<div id="attachment_387" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth6.png"><img class="size-thumbnail wp-image-387" title="112109_2118_HowdoIuseth6.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth6-150x86.png" alt="Click to Enlarge" width="150" height="86" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>We can now enable the Recycle Bin Feature. Below is a piece of code that you can change to use in your environment.</p>
<p><strong>Enable-ADOptionalFeature –Identity &#8216;CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=<span style="color:red">YourDomain</span>,DC=<span style="color:red">ComOrNetOrLocal</span>&#8216; –Scope ForestOrConfigurationSet –Target &#8216;<span style="color:red">YourDomain.ComOrNetOrLocal</span>&#8216; –confirm:$false<br />
</strong></p>
<p>I&#8217;ve highlighted in <span style="color:red"><strong>Red</strong></span> the three pieces of information you have to change. If you have a two tier domain name (such as .co.uk) then you will have to add another DC= section. An example is given below for a domain called philipflint.co.uk.</p>
<p><strong>Enable-ADOptionalFeature –Identity &#8216;CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=<span style="color:red">philipflint</span>,DC=<span style="color:red">co,</span>DC=<span style="color:red">uk</span>&#8216; –Scope ForestOrConfigurationSet –Target &#8216;<span style="color:red">philipflint.co.uk</span>&#8216; –confirm:$false<br />
</strong></p>
<p>After amendment for the appropriate domain name variables this command is simply cut and paste into the PowerShell window.</p>
<p> </p>
<div id="attachment_388" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth7.png"><img class="size-thumbnail wp-image-388" title="112109_2118_HowdoIuseth7.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth7-150x68.png" alt="Click to Enlarge" width="150" height="68" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>I was not given a chance to back out of the addition of the feature as I used the PowerShell switch <strong>–confirm:$false</strong> which provides any confirmation when asked. If you do not include this switch then you will be asked to confirm the action.</p>
<p>NOTE: This command needs to be run for each domain in your forest for which the Recycle Bin should be installed.</p>
<p>After synchronising the domain the Recycle Bin will be active on all Domain Controllers and you can now test it out by creating test OU&#8217;s and test users and deleting them and restoring them. I have created two users called &#8216;<strong>William Shakespeare</strong>&#8216; and &#8216;<strong>Enid Blyton&#8217;</strong> in an OU called &#8216;<strong>Authors</strong>&#8216;.</p>
<p>They are both members of the Global Group &#8216;<strong>Famous</strong>&#8216; and the Domain Local group &#8216;<strong>Published</strong>&#8216;.</p>
<p> </p>
<div id="attachment_389" class="wp-caption alignnone" style="width: 129px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth8.png"><img class="size-thumbnail wp-image-389" title="112109_2118_HowdoIuseth8.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth8-119x150.png" alt="Click to Enlarge" width="119" height="150" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>We can now delete the William Shakespeare account.</p>
<p> </p>
<p> </p>
<div id="attachment_390" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth9.png"><img class="size-thumbnail wp-image-390" title="112109_2118_HowdoIuseth9.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth9-150x104.png" alt="Click to Enlarge" width="150" height="104" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>To restore a user that has been deleted I have provided a script for you below.</p>
<p><strong>Get-ADObject -Filter {samAccountName -eq &#8220;<span style="color:red">UserLogonName</span>&#8220;} -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p>As before, simply change the section in Red with the display name of the user you want to restore. I use the logon name as its something that you can ask the user that they are likely to know but if they don&#8217;t know this (&#8216;Its always there, I just enter my password&#8217;) then you can use another field which uniquely identifies them, their email address for example.</p>
<p><strong>Get-ADObject -Filter {mail -eq &#8220;<span style="color:red">UsersEmailAddress</span>&#8220;} -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p>To restore Williams account we can just enter the following in the PowerShell window.</p>
<p><strong>Get-ADObject -Filter {samAccountName -eq &#8220;<span style="color:red">william.shakespeare</span>&#8220;} -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p> </p>
<div id="attachment_391" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth10.png"><img class="size-thumbnail wp-image-391" title="112109_2118_HowdoIuseth10.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth10-150x68.png" alt="Click to Enlarge" width="150" height="68" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>The user account is now restored along with all group memberships.</p>
<p> </p>
<div id="attachment_392" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth11.png"><img class="size-thumbnail wp-image-392" title="112109_2118_HowdoIuseth11.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth11-150x104.png" alt="Click to Enlarge" width="150" height="104" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p>Memberships below.</p>
<p> </p>
<div id="attachment_393" class="wp-caption alignnone" style="width: 129px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth12.png"><img class="size-thumbnail wp-image-393" title="112109_2118_HowdoIuseth12.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth12-119x150.png" alt="Click to Enlarge" width="119" height="150" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>Now, of course, its possible that a user may be deleted who is in an OU that has also been deleted. It is not possible to restore the user without first restoring the OU of which they were a member or, in extreme cases, the whole OU tree if multiple OU&#8217;s have been deleted.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth13.jpg" alt="" /></p>
<p> </p>
<p>Unless your records are up-to-date there is a chance that you may not know what your exact OU structure was and so you need a method of finding out what was the parent object of a deleted user. The code to do this is below.</p>
<p><strong>Get-ADObject -SearchBase &#8220;CN=Deleted Objects, DC=<span style="color:red">YourDomain</span>,DC=<span style="color:red">ComOrNetOrLocal</span>&#8216; &#8221; -ldapFilter:&#8221;(msDs-lastKnownRDN=<span style="color:red">ObjectName</span>)&#8221; –IncludeDeletedObjects –Properties lastKnownParent</strong></p>
<p>For example, if we run the above for our deleted William Shakespeare account we would run the following.</p>
<p><strong>Get-ADObject -SearchBase &#8220;CN=Deleted Objects, DC=<span style="color:red">philipflint</span>,DC=<span style="color:red">com</span>&#8221; -ldapFilter:&#8221;(msDs-lastKnownRDN=<span style="color:red">William Shakespeare</span>)&#8221; –IncludeDeletedObjects –Properties lastKnownParent</strong></p>
<p> </p>
<p> </p>
<div id="attachment_395" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth14.png"><img class="size-thumbnail wp-image-395" title="112109_2118_HowdoIuseth14.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth14-150x68.png" alt="Click to Enlarge" width="150" height="68" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>As can be seen from the output, we can see that the last know parent (i.e. the containing OU for this user) was the Authors OU directly under the domain node. Note that the Authors OU has not been deleted and so the user object may be directly restored. Below is a screenshot with the same command but where the Authors OU has been deleted.</p>
<p> </p>
<p> </p>
<div id="attachment_397" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth16.png"><img class="size-thumbnail wp-image-397" title="112109_2118_HowdoIuseth16.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth16-150x68.png" alt="Click to Enlarge" width="150" height="68" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p>In this case we can query the Authors OU to find its last known good parent until we find a containing object which has not been deleted.</p>
<p>Once we know which is the first object to be restored we can begin the restoration process. Previously I have given you the code to restore a user. The command to restore an OU is slightly different and I show it below.</p>
<p><strong>Get-ADObject -ldapFilter:&#8221;(msDs-lastknownRDN=<span style="color:red">NameOfYourOU</span>)&#8221; -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p>In our case we would therefore run the following three commands to restore the OU and the 2 deleted accounts (William Shakespeare and Enid Blyton).</p>
<p><strong>Get-ADObject -ldapFilter:&#8221;(msDs-lastknownRDN=<span style="color:red">Authors</span>)&#8221; -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p><strong>Get-ADObject -Filter {samAccountName -eq &#8220;<span style="color:red">william.shakespeare</span>&#8220;} -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p><strong>Get-ADObject -Filter {samAccountName -eq &#8220;<span style="color:red">enid.blyton</span>&#8220;} -IncludeDeletedObjects | Restore-ADObject</strong></p>
<p> </p>
<div id="attachment_398" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth17.png"><img class="size-thumbnail wp-image-398" title="112109_2118_HowdoIuseth17.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth17-150x68.png" alt="Click to Enlarge" width="150" height="68" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>Note that all objects are restored with the appropriate backlinks in place</p>
<p> </p>
<div id="attachment_399" class="wp-caption alignnone" style="width: 122px"><a href="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth18.png"><img class="size-thumbnail wp-image-399" title="112109_2118_HowdoIuseth18.png" src="http://philipflint.com/wp-content/uploads/2009/11/112109_2118_HowdoIuseth18-112x150.png" alt="Click to Enlarge" width="112" height="150" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p> </p>
<p>I hope you have found this useful, can see why this is such a powerful feature of the R2 and gives you one more good reason to go for the upgrade.</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/21/how-do-i-use-the-windows-2008-r2-recycle-bin-feature/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Audit Active Directory</title>
		<link>http://philipflint.com/2009/11/18/audit-active-directory/</link>
		<comments>http://philipflint.com/2009/11/18/audit-active-directory/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 21:05:32 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Active Directory]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=380</guid>
		<description><![CDATA[Want some free advice on what to audit in Active Directory ? You could do worse than go to http://www.activedirsec.com/index.html - try out their free Gold Finger tool too.]]></description>
			<content:encoded><![CDATA[<p>Want some free advice on what to audit in Active Directory ?</p>
<p>You could do worse than go to <a href="http://www.activedirsec.com/index.html">http://www.activedirsec.com/index.html</a> - try out their free Gold Finger tool too.</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/18/audit-active-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What level is my Schema at ?</title>
		<link>http://philipflint.com/2009/11/18/what-level-is-my-schema-at/</link>
		<comments>http://philipflint.com/2009/11/18/what-level-is-my-schema-at/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 20:56:36 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=377</guid>
		<description><![CDATA[Sometimes you need to have your Schema at a certain level of Windows or may even want to check that a Schema upgrade is successful. One way to do this is to use ADSI Edit and connect to the Schema contect. Looking at the properties of the Schema node we can see the objectVersion attribute [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you need to have your Schema at a certain level of Windows or may even want to check that a Schema upgrade is successful. One way to do this is to use ADSI Edit and connect to the Schema contect. Looking at the properties of the Schema node we can see the objectVersion attribute of the Schema. For Windows 2008 R2 this is 47.</p>
<p> </p>
<div id="attachment_375" class="wp-caption alignnone" style="width: 145px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111809_2056_Whatlevelis1.png"><img class="size-thumbnail wp-image-375" title="111809_2056_Whatlevelis1.png" src="http://philipflint.com/wp-content/uploads/2009/11/111809_2056_Whatlevelis1-135x150.png" alt="Click to Enlarge" width="135" height="150" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
<p>The objectVersion attribute has the values below for different levels of Schema upgrades.</p>
<p> </p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 122px;" span="1"></col>
<col style="width: 161px;" span="1"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Schema Version</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid 0.5pt; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Release of Windows</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">13</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Windows 2000</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">30</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Windows 2003</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">31</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Windows 2003 R2</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">44</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Windows 2008</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid 0.5pt; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">47</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid 0.5pt; border-right:  solid 0.5pt">Windows 2008 R2</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>Of course, there may be a level of risk in accessing objects with ADSI Edit so you want to query the schema version from a command prompt. To do so you can download the free AdFind tool from <a href="http://www.joeware.net/freetools/tools/adfind/index.htm">http://www.joeware.net/freetools/tools/adfind/index.htm</a> and open up an administrative level command prompt (right click cmd.exe ad select &#8220;<strong>Run As </strong>Administrator&#8221;), change your path to where you have saved AdFind.exe to and then run the command</p>
<p><strong>Adfind –schema –s base objectVersion</strong></p>
<p> </p>
<div id="attachment_376" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111809_2056_Whatlevelis2.png"><img class="size-thumbnail wp-image-376" title="111809_2056_Whatlevelis2.png" src="http://philipflint.com/wp-content/uploads/2009/11/111809_2056_Whatlevelis2-150x74.png" alt="Click to Enlarge" width="150" height="74" /></a><p class="wp-caption-text">Click to Enlarge</p></div>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/18/what-level-is-my-schema-at/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a Home Drive ?</title>
		<link>http://philipflint.com/2009/11/17/what-is-a-home-drive/</link>
		<comments>http://philipflint.com/2009/11/17/what-is-a-home-drive/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 20:41:47 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Active Directory]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=367</guid>
		<description><![CDATA[A standard configuration I see is organisations redirecting users &#8220;My Documents&#8221; to their &#8220;Home Drive&#8221;. When I ask them why I&#8217;m usually told that they don&#8217;t know why, because they&#8217;ve always done it or because they believe users &#8220;need&#8221; to see a drive letter in My Computer. Of course, you don&#8217;t HAVE to have a [...]]]></description>
			<content:encoded><![CDATA[<p>A standard configuration I see is organisations redirecting users &#8220;My Documents&#8221; to their &#8220;Home Drive&#8221;. When I ask them why I&#8217;m usually told that they don&#8217;t know why, because they&#8217;ve always done it or because they believe users &#8220;need&#8221; to see a drive letter in My Computer. Of course, you don&#8217;t <strong>HAVE </strong>to have a home drive to redirect the My Documents folder as the My Documents folder can be redirected to an UNC path (typically \\server\share\%username%) but you may still want to redirect them to a home drive as explained below. So, what is a home drive and why would you want to use one ?</p>
<p>Well, a home drive, or more correctly a home directory, is a special type of mapped drive that contains a users folders and can contain application data. It allows programmatic access to the home drive by assigning values to the variables:</p>
<ul>
<li>HOMEDRIVE</li>
<li>HOMEPATH</li>
<li>HOMESHARE</li>
</ul>
<p>For example, these three environment variables could contain the following:</p>
<p>HOMEDRIVE=&lt;drive letter&gt;:<br />
HOMEPATH=\&lt;path&gt;<br />
HOMESHARE=\\&lt;server name&gt;\&lt;share name&gt;</p>
<p>The home drive can then be accessed in a standard logon script. Below are some parameters that can be used and their meanings.</p>
<p> </p>
<div style="margin-left: 3pt">
<table style="border-collapse:collapse; background: white" border="0">
<colgroup span="1">
<col style="width: 109px;" span="1"></col>
<col style="width: 208px;" span="1"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #cccccc 0.75pt; border-left:  solid #cccccc 0.75pt; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt"><strong>Parameter</strong><br />
</span></td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #cccccc 0.75pt; border-left:  none; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt"><strong>Description</strong><br />
</span></td>
</tr>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #cccccc 0.75pt; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">%HOMEDRIVE%</span></td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">The user&#8217;s local workstation drive letter connected to the user&#8217;s home directory</span></td>
</tr>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #cccccc 0.75pt; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">%HOMEPATH%</span></td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">The full path of the user&#8217;s home directory</span></td>
</tr>
<tr>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #cccccc 0.75pt; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">%HOMESHARE%</span></td>
<td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.75pt; border-right:  solid #d5d5d3 0.75pt"><span style="color:black; font-family:Verdana; font-size:8pt">The share name containing the user&#8217;s home directory</span></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>So, we can assign a home drive rather than a standard &#8220;mapped&#8221; drive to enable us to reference the drive in scripts. But, is that all that using a home drive gives us ? The answer is &#8220;no&#8221;. If you have not assigned a home drive to a user in their Active Directory object then Windows (on clients) uses a default location, the users profile in Documents and Settings / Users directory for files and for user-specific application files such as .ini files it uses the users Windows directory which, be default, is the Windows directory on the client. Therefore one thing extra that using a home drive gives us (over a standard mapped drive) is a place to store user-specific application settings which will follow the user from machine to machine &#8211; note that this is distinct from roaming user profiles as these files are not stored in the users profile by default. Also, as the default home location is the users My Documents folder in their profile if we map a home directory we change the home location. This doesn&#8217;t mean that the users My Documents location is changed but it does mean that the default location for Open, Save As and command prompt start points is the users Home Directory.</p>
<p>From the above you can see that if we set a users home directory (Home Drive) to be H: then when they try to save a file in Microsoft Word, for example, it will offer to save the file to H: by default. It is for this reason that you often see My Documents redirected to the home drive location&#8230;.. so that users will save to their My Documents location by default.</p>
<p>As you can see from the above a Home Drive is not just another mapped drive but has a real affect on the end user experience and where files are saved.</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/17/what-is-a-home-drive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Should I virtualise my Domain Controllers ?</title>
		<link>http://philipflint.com/2009/11/12/should-i-virtualise-my-domain-controllers/</link>
		<comments>http://philipflint.com/2009/11/12/should-i-virtualise-my-domain-controllers/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 23:26:58 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Virtualisation]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=338</guid>
		<description><![CDATA[Now that&#8217;s a difficult question. If you asked me &#8220;Can I virtualise my Domain Controllers&#8221; then that&#8217;s a different question to which the answer is &#8220;Of course, its fully supported depending on your virtualisation platform and the version of Windows being used but if you&#8217;re on the latest Hyper-V and the latest Windows then its [...]]]></description>
			<content:encoded><![CDATA[<p>Now that&#8217;s a difficult question. If you asked me &#8220;Can I virtualise my Domain Controllers&#8221; then that&#8217;s a different question to which the answer is &#8220;Of course, its fully supported depending on your virtualisation platform and the version of Windows being used but if you&#8217;re on the latest Hyper-V and the latest Windows then its fine&#8221;. The question &#8220;Should I virtualise my Domain Controllers ?&#8221; recognises that you can but that you have a choice as to whether you do or not and, as with any IT decision, you should research, size and plan. What I&#8217;d like to talk about today is two items to consider when thinking of virtualising domain controllers.</p>
<p>The first is around synchronisation of system clocks. As mentioned in a <a href="http://philipflint.com/?p=109">previous article</a> windows Servers use time synchronisation to ensure against replay attacks and thus increase the security of Kerberos authentication within an Active Directory environment. However, virtual platforms such as VMWare or Hyper-V also allow you to synchronise a virtual machines clock with the physical host. What this means though is that, if the server host is showing a different time from the root PDC Emulator then any virtualised domain member server or domain controller will set its clock against the domain and then set its clock against the physical host and then against the domain and then against the physical host and so on ad nauseum. This can cause five issues:</p>
<ol>
<li>If there is more than the amount of &#8220;difference&#8221; between the DC clock and other domain controller clocks then the server will not be able to synchronise</li>
<li>Similarly, as the DC clock will different from those of clients, clients will fail authentication against this domain controller.</li>
<li>This constant re-synchronisation will cause clock &#8220;flapping&#8221; so that any events or logs written will have events recorded in an incorrect order. This is an issue not only for domain controllers but also for other servers such as SQL or Exchange where they record the time of records being changed or messages arriving.</li>
<li>If you run an environment where accurate times are important then this will into be possible with &#8220;flapping&#8221; clocks. For example, if you require staff to &#8220;clock in&#8221; and penalise them for late arrival then your solution will be at risk if your clock cannot keep accurate time.</li>
</ol>
<p>So, by all means virtualise your domain controllers but don&#8217;t allow them to synchronise their clocks with the physical host. In Hyper-V this behaviour can be disabled by opening the Hyper-V Manager Console. selecting the virtual machine and clicking on <strong>Settings</strong> in the Actions pane for that virtual machine. Under the <strong>Management</strong> node select <strong>Integration Services</strong> and clear the <strong>Time Synchronization</strong> check box.</p>
<p> </p>
<div id="attachment_334" class="wp-caption alignnone" style="width: 160px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt1.png"><img class="size-thumbnail wp-image-334  " title="111209_2326_ShouldIvirt1.png" src="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt1-150x140.png" alt="Click to enlarge" width="150" height="140" /></a><p class="wp-caption-text">Click to enlarge</p></div>
<p>Click on <strong>Apply </strong>and that virtual machine will now synchronise its clock solely based on the settings within its operating system.</p>
<p>The second item to consider before virtualising your domain controllers concerns &#8220;snapshotting&#8221;. Snapshots allow you to take a point in time view of a server and then record differences to the virtual disk of that server over time. In this way you can &#8220;roll back&#8221; a virtual machine to the point the snap shot was taken by removing the changes made. However, this gives an issue when we consider domain controllers.</p>
<p>When a change is made on a Domain Controller it updates its own Update Sequence Number (USN) and, when a synchronisation is due with other domain controllers, issue the update to them. These USN&#8217;s are maintained per Domain Controller and a certain change may register on DC1 as 12345 and hold the USN of 7657622 on the far older DC2. You can see the USN on a particular Domain Controller by looking at the highestCommittedUSN value using ADSIEdit to connect to the RootDSE default naming context.</p>
<div class="mceTemp">
<div class="mceTemp">
<div id="attachment_335" class="wp-caption alignnone" style="width: 144px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt2.png"><img class="size-thumbnail wp-image-335 " title="111209_2326_ShouldIvirt2.png" src="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt2-134x150.png" alt="Click to enlarge" width="134" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div>
</div>
<div class="mceTemp">DC1 would look like above and DC2 would have the USN below, for example.</div>
<div class="mceTemp">
<div id="attachment_336" class="wp-caption alignnone" style="width: 141px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt3.png"><img class="size-thumbnail wp-image-336 " title="111209_2326_ShouldIvirt3.png" src="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt3-131x150.png" alt="Click to enlarge" width="131" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div>
</div>
</div>
<p>Now, it&#8217;s a basic premise that the USN on a domain controller should only ever get bigger, and not smaller. After all, transactions can&#8217;t just disappear. Indeed, domain controllers use this USN to keep track of the updates they have received from each other. The last USN received from each replicating partner is stored in a High Watermark Vector Table on each DC. In this way, the receiving domain controller knows which was the last change it received form a replicating partner. When it next wants to replicate it sends its high watermark value to the DC it wants to replicate from (the source domain controller). The source DC then uses the information in the high watermark value to determine which objects to replicate back to the target Domain Controller. This can be represented by the following table:</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 47px;" span="1"></col>
<col style="width: 57px;" span="1"></col>
<col style="width: 47px;" span="1"></col>
<col style="width: 85px;" span="1"></col>
<col style="width: 217px;" span="1"></col>
</colgroup>
<tbody>
<tr style="background: #850000">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">Step</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">DC</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">USN </span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">High Watermark Value</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">Action</span></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Initial Value</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Changes made on DC1 (New user created for example)</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">3</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">DC2 requests changes, synchronises and updates it high watermark value for DC1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">4</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Further changes are made on DC1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">5</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Only changes 109 to 127 are synchronised to DC2</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>So far so good. So, what&#8217;s the issue. The issue is that if we had taken a snapshot of DC1 at, say, step 3 and rolled back then the following would happen.</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 47px;" span="1"></col>
<col style="width: 57px;" span="1"></col>
<col style="width: 47px;" span="1"></col>
<col style="width: 85px;" span="1"></col>
<col style="width: 217px;" span="1"></col>
</colgroup>
<tbody>
<tr style="background: #850000">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">Step</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">DC</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">USN </span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">High Watermark Value</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">Action</span></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Initial Value</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Changes made on DC1 (New user created for example)</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">3</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">DC2 requests changes, synchronises and updates it high watermark value for DC1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">4</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Further changes are made on DC1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">5</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Only changes 109 to 127 are synchronised to DC2</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">6</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">108</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Active Directory database &#8220;restored&#8221; on DC1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">7</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">119</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">Further updates made on DC1 raising its USN past the old value of 127</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">8</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">147</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" rowspan="2">DC2 requests changes past 127 &#8211; DC1 send changes 128 to 147 &#8211; the &#8220;new&#8221; changes in the range 109 to 127 are lost and never synchronised</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">200</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">127</td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>So, by restoring Active Directory from a snapshot we would run the risk of losing updates <span style="text-decoration: underline;"><strong>IF</strong></span> Active Directory allowed us to do this. Fortunately the clever guys at Microsoft have worked this out and from Windows 2003 SP1 this is not likely to happen because AD will recognise that the USN&#8217;s have become out of sequence and will refuse to allow DC1 to synchronise. You will know if this has happened to you not only because your domain will not synchronise properly but you will see an event similar to the below logged in the event viewer on the &#8220;restored&#8221; Domain Controller.</p>
<div id="attachment_337" class="wp-caption alignnone" style="width: 143px"><a href="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt4.png"><img class="size-thumbnail wp-image-337 " title="111209_2326_ShouldIvirt4.png" src="http://philipflint.com/wp-content/uploads/2009/11/111209_2326_ShouldIvirt4-133x150.png" alt="Click to enlarge" width="133" height="150" /></a><p class="wp-caption-text">Click to enlarge</p></div>
<p> As you can see, the only solution for this is to forcibly demote the domain controller and start again. Of course, the situation is even worse if <strong>ALL</strong> domain controllers are snapshotted and then restored. It&#8217;s perfectly possible that you can end up without an operating Active Directory environment ! So, the original question was &#8220;Should I virtualise my Domain Controllers ?&#8221; and I say that this is a decision that you have to make yourself and the risk you want to assume. However, I would suggest that a best practice is to:</p>
<ul>
<li>Never synchronise Domain Controller clocks with the virtualisation host</li>
<li>Never snapshot domain controllers</li>
<li>Always have at least one (and preferably two) physical domain controllers in case you have to force demote all virtualised domain controllers</li>
</ul>
<p>If you follow the above advice I believe the risks in virutalising DC&#8217;s are relatively low.</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/12/should-i-virtualise-my-domain-controllers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Synchronising time in an Active Directory Forest</title>
		<link>http://philipflint.com/2009/11/03/synchronising-time-in-an-active-directory-forest/</link>
		<comments>http://philipflint.com/2009/11/03/synchronising-time-in-an-active-directory-forest/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 22:57:28 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Active Directory]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=109</guid>
		<description><![CDATA[Windows Servers use time synchronisation to ensure against replay attacks and thus increase the security of Kerberos authentication within an Active Directory environment. Kerberos tickets are presented to domain controllers by clients and the authenticating domain controller checks that the time stamp on the ticket is within a certain amount of time of the clock [...]]]></description>
			<content:encoded><![CDATA[<p>Windows Servers use time synchronisation to ensure against replay attacks and thus increase the security of Kerberos authentication within an Active Directory environment. Kerberos tickets are presented to domain controllers by clients and the authenticating domain controller checks that the time stamp on the ticket is within a certain amount of time of the clock on the domain controller, generally 5 minutes although this can be set by group policy. To ensure that the clocks between clients and domain controllers are reasonably in synch at all times, Windows operating systems use the windows time service (W32Time) to synchronise clocks within the forest. They do this by following a synchronisation hierarchy which can be described as below.</p>
<ul>
<li>All client desktop computers nominate the authenticating domain controller as their in-bound time partner.</li>
<li>All member servers also nominate the authenticating domain controller as their in-bound time partner.</li>
<li>All domain controllers in a domain nominate the primary domain controller (PDC) operations master as their in-bound time partner.</li>
<li>All PDC operations masters follow the hierarchy of domains in the selection of their in-bound time partner and synchronise with the server holding the PDC operations master role in the forest root domain.</li>
<li>In this hierarchy, the PDC operations master at the root of the forest becomes authoritative for the organization and should be set to synchronise with an external atomic time source or will use its own CMOS clock to set its internal time.</li>
</ul>
<p>When deploying domain controllers, the server holding the PDC operations master role must then be granted access to the internet to synchronise its time with an atomic clock using the NTP protocol (UDP port 123). This is fine when a data centre is first deployed but what happens when the PDC emulator operations master role is moved to another server ? Synchronisation will still occur within the forest with the new server holding this role other than for the original server hosting the role which will still synchronise with its external source.</p>
<p>This can raise two issues.</p>
<ol>
<li>One of the servers, over time, could drift in terms of its clock and so the original PDC emulator may not be in sync with the rest of the forest and therefore reject authentication attempts.</li>
<li>If an application is Active Directory integrated and using the AD servers for its time source then that application or service may not be accurately recording its time in the application or any logs. This can be an issue, for example, for systems &#8220;clocking in&#8221; staff where staff are fined for late arrival or, perhaps, when accurate recording of access times for network assets is important for security reasons. If the time recorded is out by a few minutes then this may be an issue.</li>
</ol>
<p>This raises the question then &#8220;how do I set my clocks accurately for all machines if I move my PDC Emulator role&#8221;. There are three solutions.</p>
<ol>
<li>Set all domain controllers to synchronise to the same external atomic clock. Whilst this should certainly keep all clocks within a reasonable skew time the same issue can occur as described above if one server should, for some reason, not have external access. It is likely to eventually drift from the other server clocks and create issues.</li>
<li>Set two domain controllers to synchronise externally and only move the PDC emulator role between those two servers. This is a standard answer to this conundrum and can work well. It has the advantage that administrators are likely to know where the FSMO roles are for the domain and reduces the amount of setup time. However, there is still a small risk of drift if one server loses its external access for any reason. There is also the possibility that the PDC Emulator role will be moved to a server other than those nominated.</li>
<li>Use a GPO to set domain controllers to follow the hierarchy above and be compliant with <a href="http://tools.ietf.org/html/rfc1305">RFC 1305</a> unless they are the PDC Emulator in which case they go to an external source. While all domain controllers still need to be provided access to the internet over UDP port 123, should a mistake be made then all servers will at least have the same clock time and so, using this method, the likelihood of failed authentication attempts are very much minimised.</li>
</ol>
<p>The preferred method then is option C above. To configure this is relatively simplistic. A GPO is created and applied at the &#8220;Domain Controllers&#8221; OU level. The GPO itself is scoped by way of a WMI script to affect just the server holding the PDC Emulator operations master role. This GPO configures the W32Time service on that server with the external clocks to synchronise to.</p>
<p>To create the GPO, open Group Policy Management Console and create a new GOP linked to the Domain Controllers OU (I have called mine PDC Time Sync). Access the Scope tab of the GPO.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi1.png" alt="" /></p>
<p>Note that WMI Filtering is net to <strong>&lt;none&gt;</strong>. You can only apply a WMI filter if one exists and so, next, we right click the WMI Filters node above and select &#8220;<strong>New&#8230;</strong>&#8220;. We give the WMI filter a name and description as below.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi2.png" alt="" /></p>
<p>We then click <strong>Add</strong> to add a query to the filter. The WMI query will be as below:</p>
<p><span style="font-family:Arial">Select * from Win32_ComputerSystem where DomainRole = 5<br />
</span></p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi3.png" alt="" /></p>
<p>We then click on <strong>OK</strong> and &#8220;<strong>Save</strong>&#8220;.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi4.png" alt="" /></p>
<p>The WMI script selects computers whose DomainRole method of the Win32_ComputerSystem class (i.e. DomainRole value) is set to 5. The allowed values for this method are as below.</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 46px;" span="1"></col>
<col style="width: 184px;" span="1"></col>
</colgroup>
<tbody>
<tr style="background: #850000">
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="color:white; font-family:Times New Roman; font-size:12pt">Value</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="color:white; font-family:Times New Roman; font-size:12pt">Meaning</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">0</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Standalone Workstation</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">1</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Member Workstation</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">2</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Standalone Server</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">3</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Member Server</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">4</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Backup Domain Controller</span></td>
</tr>
<tr>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">5</span></td>
<td style="padding-top: 1px; padding-left: 4px; padding-bottom: 1px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt" valign="middle"><span style="font-family:Times New Roman; font-size:12pt">Primary Domain Controller</span></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>Active Directory follows the multi-master method of replication whereby each domain controller &#8220;owns&#8221; a copy of the Active Directory database and can update values in that database and replicate changes to all other domain controllers. This is as opposed to the NT4 methodology where a primary domain controller existed and all other domain controllers were backup domain controllers. However, Active Directory maintains the PDC Emulator role for those times when a PDC is still required for down level clients, password replication and time synchronisation. The server hosting this role has DomainRole 5 and all other domain controllers hold domain role 4, even though they are not backup domain controllers in the traditional meaning of that term.</p>
<p>As the WMI filter now exists it can be assigned to the GPO as a filter. Access the scope tab of the GPO created earlier and set the WMI filter to the one just created.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi5.png" alt="" /></p>
<p>The GPO can now be edited and values set to control the W32Time service on the server holding the PDC Emulator role. If the role is moved between servers then the GPO ceases to apply and the W32Time settings are reverted to their original values forcing the server to sync to the new server holding the PDC Emulator role. The appropriate policy to set is the &#8220;<strong>Configure Windows NTP Client</strong>&#8221; policy found at &#8220;<strong>Computer Configuration | Policies | Administrative Templates | System | Windows Time Service | Time Providers</strong>&#8221; in Windows Server 2008 R2. The default values for these settings are shown below.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi6.png" alt="" /></p>
<p>The meaning of each value is as follows:</p>
<div style="margin-left: 2pt">
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 220px;" span="1"></col>
<col style="width: 215px;" span="1"></col>
</colgroup>
<tbody>
<tr style="background: #850000">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  solid #dddddd 0.25pt; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #c8cdde 0.25pt; border-right:  solid #cccccc 0.25pt" valign="bottom"><span style="color:white; font-family:Times New Roman; font-size:12pt">Policy Setting</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  solid #dddddd 0.25pt; border-left:  none; border-bottom:  solid #c8cdde 0.25pt; border-right:  solid #cccccc 0.25pt" valign="bottom"><span style="color:white; font-family:Times New Roman; font-size:12pt">Effect of Setting</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>NtpServer</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Establishes a space-delimited list of peers from which a computer obtains time stamps, consisting of one or more DNS names or IP addresses per line. Computers connected to a domain must synchronize with a more reliable time source, such as the official U.S. time clock. This setting is used only when Type is set to NTP or AllSync.<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">0&#215;01 SpecialInterval<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">0&#215;02 UseAsFallbackOnly<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">0&#215;04 SymmetricActive<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">0&#215;08 NTP request in Client mode</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>Type</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Indicates which peers to accept synchronization from:<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>NoSync</strong>. The time service does not synchronize with other sources.<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>NTP</strong>. The time service synchronizes from the servers specified in the NtpServer registry entry.<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>NT5DS</strong>. The time service synchronizes from the domain hierarchy.<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>AllSync</strong>. The time service uses all the available synchronization mechanisms.</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>CrossSiteSyncFlags</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Determines whether the service chooses synchronization partners outside the domain of the computer.<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">None               0<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">PdcOnly          1<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">All                   2<br />
</span></p>
<p><span style="color:black; font-family:Times New Roman; font-size:12pt">This value is ignored if the NT5DS value is not set.</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>ResolvePeerBackoffMinutes</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Specifies the initial interval to wait, in minutes, before attempting to locate a peer to synchronize with. If the Windows Time Service cannot successfully synchronize with a time source, it will keep retrying, using the settings specified in ResolvePeerBackOffMinutes and ResolvePeerBackoffMaxTimes.</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>ResolvePeerBackoffMaxTimes</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Specifies the maximum number of times to double the wait interval when repeated attempts fail to locate a peer to synchronize with. A value of zero means that the wait interval is always the initial interval in ResolvePeerBackoffMinutes.</span></td>
</tr>
<tr style="background: white">
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  solid #cccccc 0.25pt; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt"><strong>SpecialPollInterval</strong><br />
</span></td>
<td style="padding-top: 3px; padding-left: 3px; padding-bottom: 3px; padding-right: 3px; border-top:  none; border-left:  none; border-bottom:  solid #cccccc 0.25pt; border-right:  solid #d5d5d3 0.25pt"><span style="color:black; font-family:Times New Roman; font-size:12pt">Specifies the special poll interval in seconds for peers that have been configured manually. When a special poll is enabled, Windows Time Service will use this poll interval instead of a dynamic one that is determined by synchronization algorithms built into Windows Time Service.</span></td>
</tr>
</tbody>
</table>
</div>
<p> </p>
<p>A list of NTP Time servers can be obtained from <a href="http://support.microsoft.com/?id=262680">http://support.microsoft.com/?id=262680</a>. The values I tend to set for the GPO are as below.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi7.png" alt="" /></p>
<p>I use the flag 0&#215;1 on the NtpServer setting to make the time service take note of the SpecialPollInterval setting (which is a value in seconds) which sets how often the server should poll for a new time. In this way we can, if desired, poll for a time update more or less often. The NTP type setting tells the service to go direct for its time updates to the NtpServer specified.</p>
<p>One the GPO is configured you can wait for it to be applied to the PDC Emulator or force its application using GPUpdate. To check that the policy is working simply note the difference between the server clock and your wristwatch or other clock and, around an hour later, check again and you should see that the difference between the two time sources has changed as the server is drawing its time from an accurate time source.</p>
<p>The final thing to do is to change the GPO status to disable user configuration settings within the GPO as this will lead to a slightly faster GPO processing time.</p>
<p> </p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110309_2257_Synchronisi8.png" alt="" /></p>
<p>I hope this post will help remove some of the mystery surrounding how to configure time synchronisation settings within an Active Directory domain.</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/03/synchronising-time-in-an-active-directory-forest/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Forcing Exchange to use specific Domain Controllers</title>
		<link>http://philipflint.com/2009/11/02/forcing-exchange-to-use-specific-domain-controllers/</link>
		<comments>http://philipflint.com/2009/11/02/forcing-exchange-to-use-specific-domain-controllers/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 23:46:36 +0000</pubDate>
		<dc:creator>Philip Flint</dc:creator>
				<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Active Directory]]></category>

		<guid isPermaLink="false">http://philipflint.com/?p=92</guid>
		<description><![CDATA[When you read Microsoft&#8217;s sizing guides then the basic advice for mailbox servers, for example, is to use 4 processor cores for Exchange for every 1 Active Directory processor core (Exchange 2007 with AD running on 32 bit). However, the situation you often get is that the domain controllers exist in a data centre servicing [...]]]></description>
			<content:encoded><![CDATA[<p>When you read Microsoft&#8217;s sizing guides then the basic advice for mailbox servers, for example, is to use 4 processor cores for Exchange for every 1 Active Directory processor core (Exchange 2007 with AD running on 32 bit). However, the situation you often get is that the domain controllers exist in a data centre servicing many solutions or even in a server room servicing user logons and so you can&#8217;t really assign specific domain controllers to service just Exchange. Now, what you can do is tell Exchange to just use certain DC&#8217;s but this doesn&#8217;t stop those DC&#8217;s from servicing other requests. But, there is a solution &#8230;.. Active Directory sites.</p>
<p>As you know, Active Directory &#8220;knows&#8221; which Domain Controller to direct a logon request to by using the clients IP address and directing the request to a domain controller in the same site as the user (or another site assigned to the users IP subnet). But requests are directed to the &#8220;most likely&#8221; subnet or, to put it another way &#8220;best match&#8221; subnet. Where this leads us to is that you can use subnets in Active Directory Sites and Services to direct logon requests.</p>
<p>For example, your data centre may have the subnet 10.1.1.0/24 (10.1.1.0, 255.255.255.0) and you may have the following servers.</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup span="1">
<col style="width: 141px;" span="1"></col>
<col style="width: 151px;" span="1"></col>
</colgroup>
<tbody>
<tr style="background: #850000">
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">Server</span></td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><span style="color:white">IP Address</span></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.2</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">SQL1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.3</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">SQL2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.4</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC3</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.5</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">DC4</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.6</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">Exchange1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.7</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">Exchange2</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.8</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">Backup1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">10.1.1.9</td>
</tr>
</tbody>
</table>
</div>
<p> So, what we don&#8217;t want to do is just assign the subnet 10.1.1.0/248 to a site as this will not include Exchange2 and, indeed, will remove all DC&#8217;s from our server site. Similarly, we can&#8217;t just use 10.1.1.0/240 as a subnet as this will also include our backup server and, once again, all DC&#8217;s. That is, we could assign a more specific subnet to the Exchange &#8220;site&#8221; but, if needs be and for the purposes of this article, we can also assign individual servers. Below is an example of our site setup before we start with all servers assigned to the subnet OU.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch1.png" alt="" /></p>
<p>The first thing we would do is create a new Site called, for example &#8220;Exchange&#8221; and, in this case, assign it to our default site link.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch2.png" alt="" /></p>
<p>We then create a new Site Link to link the Exchange servers back to the Server site. We do this so that we can change the replication schedule as we will want &#8220;fast&#8221; replication between the DC&#8217;s in the Server site and in the Exchange Site (If required the sites can then be removed from the Default Site Link).</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch3.png" alt="" /></p>
<p>We can then create a series of new subnets, one for each server, and assign them to the &#8220;Exchange&#8221; Site.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch4.png" alt="" /></p>
<p>In this way, individual servers can be added to the site until all servers that should be treated as one unit exist in the same site.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch5.png" alt="" /></p>
<p>The Domain Controllers can then be moved to the Active directory site by right clicking the server in Sites and Services and selecting &#8220;Move&#8221;</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch6.png" alt="" /></p>
<p>This means that all the servers should perform lookups and any authentication against the domain controllers in their own local site. This technique can also be used in any other situation where particular AD servers have to be used by particular servers (for example when a certain level of domain controller must be used in a still mixed environment). All that remains is to change the site link to replicate rapidly.</p>
<p>By default, changes are not replicated between sites when the change is made (with the exception of urgent replication items such as password changes). Instead changes are replicated according to a schedule as defined on the site link. By default the replication interval is set to 180 minutes.</p>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch7.png" alt="" /></p>
<p>However, as these servers all sit on the same high speed network we can configure change notifications to traverse the site link in near real time as though the servers are in the same site. This is done by setting a value in Active Directory by using the ADSI Edit tool (installed by default in Windows 2008 R2 and part of the support tools pack in Windows 2003.</p>
<p><strong>To enable change notification between sites</strong></p>
<ol>
<li>
<div>In ADSI Edit, expand the Configuration container.</div>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch8.png" alt="" /></li>
<li>
<div>Navigate to the <strong>Inter-Site Transports</strong> container, and select <strong>CN=IP</strong> . (You cannot enable change notification for SMTP links.)</div>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch9.png" alt="" /></li>
<li>Right-click the site link object for the sites for which you want to enable change notification (CN=Exchange Servers in our case), and then click <strong>Properties</strong> .</li>
<li>
<div>In the <strong>Select a property to view</strong> box, select <strong>options</strong> .</div>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch10.png" alt="" /></li>
<li>
<div>In the <strong>Edit Attribute</strong> box, if the <strong>Value(s)</strong> box shows <strong>&lt;not set&gt;</strong> , type <strong>1</strong> in the <strong>Edit Attribute</strong> box. If the <strong>Value(s)</strong> box contains a value, you must derive the new value by using a Boolean BITWISE-OR calculation on the old value, as follows: <em>old_value</em>  BITWISE-OR 1. For example, if the value in the <strong>Value(s)</strong> box is 2, calculate 0010 OR 0001 to equal 0011. Type the integer value of the result in the <strong>Edit Attribute</strong> box; for this example, the value is 3. In this case, as this is a new site link that we have set up then the value should be set to <strong>&lt;not set&gt;</strong> and so we can enter 1.</div>
<p><img src="http://philipflint.com/wp-content/uploads/2009/11/110209_2346_ForcingExch11.png" alt="" /></li>
<li>Click <strong>OK</strong> and the <strong>OK</strong> again and exit ADSI Edit.</li>
</ol>
<p>Changes should now be notified across the site link with the same frequency as they would if the servers were in a single site (around 15 seconds for 2003 / 2008).</p>
]]></content:encoded>
			<wfw:commentRss>http://philipflint.com/2009/11/02/forcing-exchange-to-use-specific-domain-controllers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

