<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>A Premier Field Engineer in Denmark</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/craigf/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/craigf/feed.xml</link>
    <description />
    <lastBuildDate>Thu, 21 Feb 2019 08:21:18 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Running AGPM with a Managed Service Account (MSA or gMSA)</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/running-agpm-with-a-managed-service-account-msa-or-gmsa</link>
      <pubDate>Wed, 24 Jun 2015 05:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2015/06/24/running-agpm-with-a-managed-service-account-msa-or-gmsa/</guid>
      <description><![CDATA[Hi,Service accounts are dead. Long live MSAs! But where can you actually use MSAs/gMSAs? One place...]]></description>
      <content:encoded><![CDATA[<p>Hi,<p>Service accounts are dead. Long live MSAs! But where can you actually use MSAs/gMSAs? One place that often pops up is Advanced Group Policy Management (<a href="https://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/mdop/agpm.aspx" target="_blank">AGPM</a>) from the Microsoft Desktop Optimization Pack (<a href="https://www.microsoft.com/en-US/windows/enterprise/products-and-technologies/mdop/default.aspx" target="_blank">MDOP</a>).</p><p>The installer for AGPM requires that you create a service account and enter its password manually. In a correctly configured AGPM GPO environment, no one will have access to edit the GPOs except this account. So knowing its password is a bad thing. But how can we get past the installer, so we can run AGPM using an MSA/gMSA?</p><p>Here&rsquo;s how. Note this isn&rsquo;t an official endorsement. I did this in my lab and it works fine. I checked with a few trusted colleagues and they think it&rsquo;s fine too. If you really are moving away from manual service accounts, then try this out in your lab. You&rsquo;ve now been warned.</p><p>&nbsp;</p><p>There are 2 scenarios:</p><ol>
<li>A fresh install of AGPM</li>
<li>An existing install of AGPM</li>
</ol><p>The steps are almost identical. I&rsquo;ll call out the differences as we go though the core steps.</p><p>&nbsp;</p><p>1. Create the KDS rootkey for gMSAs if one doesn&rsquo;t exist in the forest:</p><ul>
<li>Only needed if using gMSAs in Windows Server 2012 or later AND the key hasn&rsquo;t already been created</li>
</ul><blockquote>
<p><span style="font-family:Courier New;">Add-KdsRootKey &ndash;EffectiveTime ((get-date).addhours(-10))</span></p>
</blockquote><p>2. Create a gMSA called gMSA-AGPM$ with samaccountname = gMSA-AGPM$</p><p>3. Create a temporary user account (for use during AGPM installation) called svc-AGPM (if AGPM is already installed, you skip this step)</p><p>4. Assign both svc-AGPM and gMSA-AGPM$ &ldquo;Logon as a Service&rdquo; right on the AGPM server.</p><ul>
<li>Note that this right may be defined a GPO, so local policy changes may be ignored. Set this right on the PO if needed.</li>
</ul><p>5. Install AGPM using svc-AGPM (if AGPM is already installed, you skip this step)</p><p>6. Once the installation is done, stop the service &ldquo;AGPM Service&rdquo;</p><p>7. Remove the ServicePrincipalNname (SPN) for AGPM from the AD users &lsquo;svc-AGPM&rsquo; and place it on gMSA-AGPM$ instead</p><p>8. Set the registry value at <span style="font-family:Courier New;">HKLM\Software\Microsoft\AGPM\ArchiveOwner</span> to have the SID of gMSA-AGPM$</p><ul>
<li>Use psgetsid.exe from <a href="https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx">Sysinternals</a> to convert a username to a SID</li>
</ul><p>9. Set the permissions on the AGPM data folder (by default this is <span style="font-family:Courier New;">C:\ProgramData\Microsoft\AGPM</span>) and on the folder <span style="font-family:Courier New;">%windir%\temp</span> to grant &lsquo;Full Control&rsquo; on these 2 folders and all sub files and folder to gMSA-AGPM$</p><p>10. Set permissions on all GPOs to grant gMSA-AGPM$ full control using:</p><p style="margin-left:30px;"><span style="font-family:Courier New;">Set-GPPermission -All -PermissionLevel GpoEditDeleteModifySecurity -TargetName CONTOSO\gMSA-AGPM$ -TargetType Computer</span></p><p>11. Set permissions to the root of each domain to all gMSA-AGPM$ to have &ldquo;Link GPO&rdquo; rights to all OU objects:</p><blockquote>
<p><span style="font-family:Courier New;">$agpmserviceaccountname = &ldquo;gMSA-AGPM$&rdquo;</span></p>
<p><span style="font-family:Courier New;">$domaindn = (Get-ADDomain).distinguishedname</span></p>
<p><span style="font-family:Courier New;">$agpmaccountsid = (get-adserviceaccount $($agpmserviceaccountname)).sid</span></p>
<p><span style="font-family:Courier New;">$newsddl = "(OA;CI;RPWP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;;$($agpmaccountsid))"</span></p>
<p><span style="font-family:Courier New;">$objsecurity = get-acl -Path "ad:\$($domaindn)"</span></p>
<p><span style="font-family:Courier New;">$objsecurity.SetSecurityDescriptorSddlForm($objsecurity.sddl+$newsddl)</span></p>
<p><span style="font-family:Courier New;">Set-Acl -Path "ad:\$($domaindn)" -AclObject $objsecurity</span></p>
</blockquote><p>12. Remove all other accounts as having Editor rights to all GPOs.</p><ul>
<li>Take care with this step in production as many files ACLs will be changed causing SYSVOL to re-replicate all data. Also, when you are removing permissions you may also accidentally remove &ldquo;Apply GPO&rdquo; and &ldquo;Read&rdquo; rights where they have been specifically set as a way of targeting GPOs to specific users, groups and computers.</li>
</ul><p>13. Add gMSA-AGPM$ as a member to the AD group &ldquo;Group Policy Creator Owners&rdquo; and &ldquo;Backup Operators&rdquo;</p><p>14. Install the Service Account gMSA-AGPM$ as a managed account on the AGPM server using this cmdlet:</p><blockquote>
<p>&nbsp; <span style="font-family:Courier New;">Install-ADServiceAccount -Identity gMSA-AGPM$</span></p>
</blockquote><ul>
<li>Note that you will need the feature for AD PowerShell Module installed first to run the cmdlet <span style="font-family:Courier New;">Install-ADAccount</span></li>
</ul><p>15. Set service properties for AGPM Service to logon as CONTOSO\gMSA-AGPM$ (keep the password fields blank)</p><p>16. Start the service &ldquo;AGPM Service&rdquo;</p><p>17. Remove &ldquo;Logon as a Service&rdquo; right for the temporary account svc-AGPM</p><p>18. Delete/disable the account svc-AGPM in the domain</p><p>19. Delegate rights in AGPM to domain users/groups to be admins/editors/approvers/reviewers as normal in AGPM</p><p>20. Delegate &ldquo;Link GPO rights&rdquo; for OUs to Admins in AD as normal</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Getting started with Storage Replica in Windows Server Technical Preview</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/getting-started-with-storage-replica-in-windows-server-technical-preview</link>
      <pubDate>Sat, 04 Oct 2014 01:48:19 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2014/10/04/getting-started-with-storage-replica-in-windows-server-technical-preview/</guid>
      <description><![CDATA[Storage Replica (SR) is a new feature that enables storage-agnostic, block-level, synchronous...]]></description>
      <content:encoded><![CDATA[<p>Storage Replica (SR) is a new feature that enables storage-agnostic, block-level, synchronous replication between servers for disaster recovery, as well as stretching of a failover cluster for high availability. Synchronous replication enables mirroring of data in physical sites with crash-consistent volumes ensuring zero data loss at the file system level. Asynchronous replication allows site extension beyond metropolitan ranges with the possibility of data loss.</p>  <p><a href="https://blogs.technet.com/b/filecab/" target="_blank">Ned Pyle</a>, the Product Manager for Storage Replica, has written a great “getting started” guide here:</p>  <p><a title="https://social.technet.microsoft.com/Forums/windowsserver/en-US/f843291f-6dd8-4a78-be17-ef92262c158d/getting-started-with-windows-volume-replication?forum=WinServerPreview" href="https://social.technet.microsoft.com/Forums/windowsserver/en-US/f843291f-6dd8-4a78-be17-ef92262c158d/getting-started-with-windows-volume-replication?forum=WinServerPreview">https://social.technet.microsoft.com/Forums/windowsserver/en-US/f843291f-6dd8-4a78-be17-ef92262c158d/getting-started-with-windows-volume-replication?forum=WinServerPreview</a></p>  <p>I got mine going after adding the Windows Storage Replication feature in Server Manager:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_246C1BD7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_246C1BD7.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_5A709AE4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_5A709AE4.png" width="429" height="305" /></a></p>  <p>It’s configured in Failover Clustering:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_7A22055D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_7A22055D.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_0B28C3F2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_0B28C3F2.png" width="570" height="247" /></a></p> I’m working with a customer who is really excited that in-box volume replication has come to Windows Server. It’s going to be interesting to discover best practices and ideal use cases for Storage Replica as we get closer to the final release.   ]]></content:encoded>
    </item>
    <item>
      <title>Migrating DFS Namespace from Windows 2000 Server mode to Windows Server 2008 mode</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/migrating-dfs-namespace-from-windows-2000-server-mode-to-windows-server-2008-mode</link>
      <pubDate>Mon, 30 Jun 2014 23:51:32 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2014/06/30/migrating-dfs-namespace-from-windows-2000-server-mode-to-windows-server-2008-mode/</guid>
      <description><![CDATA[Hi,   &#160;   I recently helped a customer with this tricky little exercise.   The idea was to...]]></description>
      <content:encoded><![CDATA[<p><font color="#333333" size="2" face="Calibri"></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">Hi,</font></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">I recently helped a customer with this tricky little exercise.</font></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">The idea was to do the upgrade during office hours with as little downtime as possible and to run it remotely from one server.</font></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">It’s following the basic guide here: </font><a style="cursor:auto;" href="https://technet.microsoft.com/en-us/library/cc753875.aspx"><font face="Calibri"><font color="#4f81bd" size="2"><u>https://technet.microsoft.com/en-us/library/cc753875.aspx</u></font></font></a></span></div> <font color="#333333"></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">&#160;</font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Calibri">But this formal guide wasn’t very “real world”. It forgets that there are clients out there with cached referrals who take a long time to realise that the namespace links have changed.</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">In my example, I use these names which you’ll need to change:</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <p style="margin:0cm 0cm 0pt 38.7pt;text-indent:-18pt;list-style-type:disc;margin:0 0 .0001pt .5in;"><font size="2"><font color="#333333"><span><span><font face="Symbol">·</font><span style="line-height:normal;"><font face="Times New Roman">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span></span></span><span><font face="Calibri">The existing 2003 DFS server is FILE1. All the commands below are run on this server in C:\temp.</font></span></font></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <p style="margin:0cm 0cm 0pt 38.7pt;text-indent:-18pt;list-style-type:disc;margin:0 0 .0001pt .5in;"><font size="2"><font color="#333333"><span><span><font face="Symbol">·</font><span style="line-height:normal;"><font face="Times New Roman">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span></span></span><span><font face="Calibri">The first new 2012 R2 DFS server is FILE2</font></span></font></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <p style="margin:0cm 0cm 0pt 38.7pt;text-indent:-18pt;list-style-type:disc;margin:0 0 .0001pt .5in;"><font size="2"><font color="#333333"><span><span><font face="Symbol">·</font><span style="line-height:normal;"><font face="Times New Roman">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span></span></span><span><font face="Calibri">The domain is child.corp.contoso.com</font></span></font></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <p style="margin:0cm 0cm 0pt 38.7pt;text-indent:-18pt;list-style-type:disc;margin:0 0 .0001pt .5in;"><font size="2"><font color="#333333"><span><span><font face="Symbol">·</font><span style="line-height:normal;"><font face="Times New Roman">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span></span></span><span><font face="Calibri">The DFS Namespace in the domain is called “Testing”, so the path is </font><font face="Calibri">\\child.corp.contoso.com\Testing</font></span></font></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <p style="margin:0cm 0cm 0pt 38.7pt;text-indent:-18pt;list-style-type:disc;margin:0 0 .0001pt .5in;"><font size="2"><font color="#333333"><span><span><font face="Symbol">·</font><span style="line-height:normal;"><font face="Times New Roman">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span></span></span><span><font face="Calibri">There are 3 target servers where all DFS links point to: TARGET1 , TARGET2 , TARGET3</font></span></font></font></p> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">First, start by setting the existing 2003 DFS servers to issue FQDNs in their DFS referrals. This was a requirement of the customer as they wanted other forests to access this namespace, and wanted to be as efficient as possible.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Note this requires restarting DFS-N:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333">   <hr /><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil server registry DfsDnsConfig set </font><font face="Courier New"><font color="#333333" size="2">\\FILE1</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">sc </font><font color="#333333" size="2" face="Courier New">\\FILE1</font><font face="Courier New"><font color="#333333" size="2"> stop DFS</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ping -n 5 127.0.0.1 &gt; NUL</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">sc </font><font color="#333333" size="2" face="Courier New">\\FILE1</font><font face="Courier New"><font color="#333333" size="2"> start DFS</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Run this for each of the 3 existing DFS servers.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font>    <hr /></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Next we copy the DFS root folder and share (including all security) to the new DFS servers:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">robocopy C:\DFSRoots\ </font><font color="#333333" size="2" face="Courier New">\\FILE2\c$\DFSRoots\</font><font face="Courier New"><font color="#333333" size="2"> Testing /COPYALL /E /XJ</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">reg copy </font><font color="#333333" size="2" face="Courier New">\\FILE1\HKLM\System\CurrentControlSet\Services\LanManServer\Shares</font><font color="#333333" size="2" face="Courier New"> </font><font color="#333333" size="2" face="Courier New">\\FILE2\HKLM\System\CurrentControlSet\Services\LanManServer\Shares</font><font face="Courier New"><font color="#333333" size="2"> /s /f</font></font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">You will run this command for all new DFS-N servers</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">We then set the new DFS servers to use FQDNs in their referrals:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil server registry DfsDnsConfig set </font><font face="Courier New"><font color="#333333" size="2">\\FILE2</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">We need to restart the Server service so it can start sharing the shares we copied just before. This will also restart the DFS-N service for us, so the FQDN change will work:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">echo net stop LanManServer /yes &gt; </font><font face="Courier New"><font color="#333333" size="2">\\file2\c$\Temp\restartsvc.bat</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">echo net start LanManServer &gt;&gt; </font><font face="Courier New"><font color="#333333" size="2">\\file2\c$\Temp\restartsvc.bat</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">echo net start DFS &gt;&gt; </font><font face="Courier New"><font color="#333333" size="2">\\FILE2\c$\Temp\restartsvc.bat</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">psexec </font><a style="cursor:auto;"><font color="#333333" size="2" face="Courier New">\\FILE2</font></a><font face="Courier New"><font color="#333333" size="2"> -d -accepteula c:\temp\restartsvc.bat</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Echo Waiting for 30 seconds for the Server service on FILE2 to restart</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ping -n 30 127.0.0.1 &gt; NUL</font></font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">PSExec is needed to run the bat file because once the server service is stopped, it can’t be started remotely because it’s needed to accept the remote commands.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Next, we need to export the existing DFS-N configuration and change all the short-name paths to FQDNs:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333">   <hr /><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil root export </font><font color="#333333" size="2" face="Courier New">\\child.corp.contoso.com\Testing</font><font face="Courier New"><font color="#333333" size="2"> C:\temp\export.xml</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">REM Get FNR.exe from here: </font><font face="Courier New"><font color="#333333" size="2">https://findandreplace.codeplex.com/</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">fnr.exe --cl --dir &quot;C:\temp&quot; --fileMask &quot;export.xml&quot; --find &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET1\\</font><font color="#333333" size="2" face="Courier New">&quot; --replace &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET1.child.corp.contoso.com\\</font><font face="Courier New"><font color="#333333" size="2">&quot; --silent</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">fnr.exe --cl --dir &quot;C:\temp&quot; --fileMask &quot;export.xml&quot; --find &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET2\\</font><font color="#333333" size="2" face="Courier New">&quot; --replace &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET2.child.corp.contoso.com\\</font><font face="Courier New"><font color="#333333" size="2">&quot; --silent</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">fnr.exe --cl --dir &quot;C:\temp&quot; --fileMask &quot;export.xml&quot; --find &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET3\\</font><font color="#333333" size="2" face="Courier New">&quot; --replace &quot;</font><font color="#333333" size="2" face="Courier New">\\\\TARGET3.child.corp.contoso.com\\</font><font face="Courier New"><font color="#333333" size="2">&quot; --silent</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font>    <hr /></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">We add the new DFS-N servers to the existing namespace:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil target add </font><font face="Courier New"><font color="#333333" size="2">\\FILE2.child.corp.contoso.com\Testing</font></font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Repeat this for each of the 3 new namespace servers.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Then we find the PDCe for the domain. We need to restart the DFS-N service on the PDCe as it doesn’t seem to accept that we add a new namespace servers so easily:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">nltest /dnsgetdc:child.corp.contoso.com /PDC | find &quot;.&quot;&gt;PDC.txt</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">FOR /F &quot;delims=. &quot; %i IN (PDC.txt) DO sc </font><a style="cursor:auto;"><font color="#333333" size="2" face="Courier New">\\%i</font></a><font face="Courier New"><font color="#333333" size="2"> stop DFS</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ping -n 5 127.0.0.1&gt;NUL</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">FOR /F &quot;delims=. &quot; %i IN (PDC.txt) DO sc </font><a style="cursor:auto;"><font color="#333333" size="2" face="Courier New">\\%i</font></a><font face="Courier New"><font color="#333333" size="2"> start DFS</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ping -n 5 127.0.0.1&gt;NUL</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">You now need to <font>wait for a DAY</font> for the new namespace servers to actually take effect on the SMB clients out there on the network.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">If a session has an open write connection to any file on the DFS namespace path, then it will NOT update its target list.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">You verify this by logging on to the client computer and running:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">dfsutil.exe cache referral</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">If it shows something like this…:</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Entry: \child.corp.contoso.com\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ShortEntry: \child\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Expires in 276 seconds</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">UseCount: 0 Type:0x81 ( REFERRAL_SVC DFS )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160; 0:[\OLD-SERVER-1\Testing] AccessStatus: 0 ( ACTIVE TARGETSET )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 1:[\OLD-SERVER-3\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 2:[\OLD-Server-2\Testing]</font></font></span></div>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Courier New">&#160;</font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">…and doesn’t list the new server names, then do NOT proceed to the next step. You can try flushing the DFSN cache, but if there are open files, this won’t have any effect. You will need to reboot this server before it learns of the new DFSN servers.</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">dfsutil.exe cache referral flush</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">You are looking for an output which looks like this:</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Entry: \child.corp.contoso.com\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ShortEntry: \child.corp.contoso.com\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Expires in 276 seconds</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">UseCount: 0 Type:0x81 ( REFERRAL_SVC DFS )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160; 0:[\OLD-SERVER-1\Testing] AccessStatus: 0 ( ACTIVE TARGETSET )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 1:[\OLD-SERVER-3\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 2:[\NEW-SERVER-3.child.corp.contoso.com\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 3:[\NEW-SERVER-2.child.corp.contoso.com\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 4:[\OLD-SERVER-3\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 5:[\NEW-Server-1.child.corp.contoso.com\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">If you are sure that all the important SMB clients have updated their lists of possible namespace servers to include the 3 old servers and the 3 new servers (so 6 in all), then you can do the next step.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">The next step can only be run in the GUI because dfsutil cannot disable links. Open the DFS console, select the 3 old namespace servers and choose “Disable Namespace Server” for each of them:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri"></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/clip_image0024_6C8C916A.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/clip_5F00_image0024_5F00_6C8C916A.jpg"><font color="#333333" size="2"><img style="border:0px currentcolor;display:inline;background-image:none;" border="0" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/clip_image0024_thumb_49CB59AD.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/clip_5F00_image0024_5F00_thumb_5F00_49CB59AD.jpg" width="506" height="134" alt=" " /></font></a></span><span></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">This will make sure that anyone who is still using the old Namespace servers can continue to do so, but that anyone who asks for a new referral will NOT receive the old servers.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2"><font>WAIT ANOTHER DAY</font>.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">We need to make sure that all SMB clients end their sessions (by closing all their open write handles) and create new referral caches with only the new DFS-N servers in them.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Logon to one of the big SMB clients on the network and verify that the OLD name space servers do NOT appear in referral cache:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">dfsutil.exe cache referral</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">This should now look like this:</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Entry: \child.corp.contoso.com\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">ShortEntry: \child.corp.contoso.com\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">Expires in 276 seconds</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">UseCount: 0 Type:0x81 ( REFERRAL_SVC DFS )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 0:[\NEW-SERVER-1.child.corp.contoso.com\Testing] AccessStatus: 0 ( ACTIVE TARGETSET )</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 1:[\NEW-SERVER-3.child.corp.contoso.com\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Courier New"><font color="#333333" size="2">&#160;&#160; 2:[\NEW-SERVER-3.child.corp.contoso.com\Testing]</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">If old server names appear in the list, do NOT continue to the next step. Again, you can try to flush the DFS referral cache, but this is unlikely to work. The SMB client will likely need to be restarted (again).</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Remove the old namespace servers. Don’t use the GUI as this will attempt to also remove the share, which may cause extra difficulties if you need to rollback this step:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil target remove </font><font face="Courier New"><font color="#333333" size="2">\\FILE1\Testing</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Repeat this command for each of the 3 old namespace servers.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">We will now delete the existing DFS-N namespace and create a new one which is in Windows Server 2008 mode (aka v2). Existing sessions will be unaffected as they work from their referral cache. New sessions may fail if they are created in the next few seconds. Retrying will succeed without any intervention.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Run these commands on one of the new DFS-N servers. Copy the export.xml file from the old DFS-N server where you have been running the previous commands from.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">This needs to be run locally due to the time it takes to re-create the links. It will be around 15 seconds when run locally and about 1-2 minutes if run remotely:</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font size="2" face="Calibri">&#160;</font></span></div>  <hr /><font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil root remove </font><a style="cursor:auto;"><font face="Courier New"><font color="#333333" size="2">\\child.corp.contoso.com\Testing</font></font></a></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil root AddDom </font><a style="cursor:auto;"><font color="#333333" size="2" face="Courier New">\\FILE2.child.corp.contoso.com\Testing</font></a><font face="Courier New"><font color="#333333" size="2"> V2</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil root import set C:\temp\export.xml </font><a style="cursor:auto;"><font color="#333333" size="2" face="Courier New">\\child.corp.contoso.com\Testing</font></a><font face="Courier New"><font color="#333333" size="2"> NoBackup</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil target add </font><a style="cursor:auto;"><font face="Courier New"><font color="#333333" size="2">\\FILE3.child.corp.contoso.com\Testing</font></font></a></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font color="#333333" size="2" face="Courier New">dfsutil target add </font><a style="cursor:auto;"><font face="Courier New"><font color="#333333" size="2">\\FILE4.child.corp.contoso.com\Testing</font></font></a></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <hr />  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">Where FILE3 and FILE4 in the example above are the additional new DFS-N servers.</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">&#160;</font></font></span></div> <font color="#333333"><font size="2"><font face="Times New Roman"></font></font></font>  <div style="margin:0cm 0cm 0pt;list-style-type:disc;"><span><font face="Calibri"><font color="#333333" size="2">That will do it. You are now running the same exact namespace setup with the same permissions, but on new computers, using FQDN referrals and a v2 namespace.</font></font></span></div>]]></content:encoded>
    </item>
    <item>
      <title>Office 2013 Security Baselines for SCM are live</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/office-2013-security-baselines-for-scm-are-live</link>
      <pubDate>Mon, 30 Jun 2014 01:06:23 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2014/06/30/office-2013-security-baselines-for-scm-are-live/</guid>
      <description><![CDATA[Hi,   Pat Fetty recently blogged about the new SCM baselines for Office 2013 going live.   I...]]></description>
      <content:encoded><![CDATA[<p><font face="Calibri"></font></p> <font face="Calibri"></font>  <p><font face="Calibri">Hi,</font></p> <font face="Calibri"></font>  <p><font face="Calibri">Pat Fetty </font><a href="https://blogs.technet.com/b/secguide/archive/2014/06/25/scm-baselines-for-office-2013-have-now-shipped.aspx" target="_blank"><font face="Calibri">recently blogged</font></a><font face="Calibri"> about the new SCM baselines for Office 2013 going live.</font></p> <font face="Calibri"></font>  <p><font face="Calibri">I opened up my local copy of SCM and imported the content:</font></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_615E3EC6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_615E3EC6.png"><font face="Calibri"><img title="Prompt to import Offce 2013 baselines" style="display:inline;background-image:none;" border="0" alt="Prompt to import Offce 2013 baselines" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_2C544047.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_2C544047.png" width="442" height="287" /></font></a></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_14BC92D4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_14BC92D4.png"><font face="Calibri"><img title=".cab and att files" style="display:inline;background-image:none;" border="0" alt=".cab and att files" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_346DFD4D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_346DFD4D.png" width="444" height="352" /></font></a></p> <font face="Calibri"></font>  <p><font face="Calibri">The .cab file contains the security settings. The “att” file contains the attachments which are Word documents describing the security baseline settings.</font></p> <font face="Calibri"></font>  <p><font face="Calibri">You may get prompted at this point to accept the security details of the package. Inspect the certificates to make sure they are issued by Microsoft and are trusted by your computer.</font></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_315B9F58.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_315B9F58.png"><font face="Calibri"><img title="User and Computer product-specific settings" style="display:inline;background-image:none;" border="0" alt="User and Computer product-specific settings" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_4E644E20.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_4E644E20.png" width="445" height="353" /></font></a></p> <font face="Calibri"></font>  <p><font face="Calibri">There are user and computer settings, separated by individual Office programs or core Office settings.</font></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_2E4BD214.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_2E4BD214.png"><font face="Calibri"><img title="Done!" style="display:inline;background-image:none;" border="0" alt="Done!" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_7941D394.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_7941D394.png" width="440" height="349" /></font></a></p> <font face="Calibri"></font>  <p><font face="Calibri">Done!</font></p> <font face="Calibri"></font>  <p>&#160;</p> <font face="Calibri"></font>  <p><font face="Calibri">Browsing these new settings looks like this:</font></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_61AA2621.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_61AA2621.png"><font face="Calibri"><img title="SCM displaying Office 2013 settings" style="display:inline;background-image:none;" border="0" alt="SCM displaying Office 2013 settings" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_1574AD24.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_1574AD24.png" width="440" height="356" /></font></a></p> <font face="Calibri"></font>  <p><font face="Calibri">Once you export these settings into a GPO Backup and import them onto an existing blank GPO in your domain, you’ll want the ADMX/ADML files which relate to the Office 2013 settings. And you’ll probably want to save them into your PolicyDefinitions folder in SYSVOL:</font></p> <font face="Calibri"></font>  <blockquote>   <p><font face="Calibri">\\your.domain.name\SYSVOL\your.domain.name\Policies\PolicyDefinitions</font></p> </blockquote> <font face="Calibri"></font>  <p><font face="Calibri">Get theme here:</font></p> <font face="Calibri"></font>  <p><a title="https://www.microsoft.com/en-us/download/details.aspx?id=35554" href="https://www.microsoft.com/en-us/download/details.aspx?id=35554"><font face="Calibri">https://www.microsoft.com/en-us/download/details.aspx?id=35554</font></a></p> <font face="Calibri"></font>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_2D9AA830.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_2D9AA830.png"><font face="Calibri"><img title="Office 2013 ADMX/ADML file download" style="display:inline;background-image:none;" border="0" alt="Office 2013 ADMX/ADML file download" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_51C29370.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_51C29370.png" width="439" height="456" />&#160;</font></a></p>  <p><font face="Calibri"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>A backup server flooded by DPCs</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/a-backup-server-flooded-by-dpcs</link>
      <pubDate>Mon, 03 Feb 2014 04:48:54 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2014/02/03/a-backup-server-flooded-by-dpcs/</guid>
      <description><![CDATA[Hi,  I’ve just finished working on a case with a customer that was so interesting that it deserved a...]]></description>
      <content:encoded><![CDATA[<p>Hi,</p>  <p>I’ve just finished working on a case with a customer that was so interesting that it deserved a blog post to round it off.</p>  <p>These were the symptoms:</p>  <p>Often while logged in to the server things would appear to freeze – no screen updates, little mouse responsiveness, if you could start a program (perfmon, Task Manager, Notepad etc.) then you wouldn’t be able to type into it and if you did it would crash.</p>  <p>This Windows Server 2008 R2 server runs TSM backup software with thousands of servers on the network sending their backup jobs to it. At any one time there could be hundreds of backup jobs running. The load was lower during the day, but it was always working hard dealing with constant backups of database snapshots from servers. The backup clients are Windows, UNIX, Solaris, you name it…</p>  <p>When the server froze, you’d see 4 of the 24 logical CPUs lock at 100% and the other 20 CPUs would saw-tooth from locking at 100% to using 20-30%. The freeze would happen for minutes at a time.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_6CE0D77E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_6CE0D77E.png"><img title="CPUs 0,2,4,6 locked at 100%, others saw-tooth" style="display:inline;background-image:none;" border="0" alt="CPUs 0,2,4,6 locked at 100%, others saw-tooth" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_109C8FCA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_109C8FCA.png" width="489" height="218" /></a></p>  <p>There are 2 Intel 10GB NICs in a team using Intel&#39;s teaming software. The team and the switches are setup with LACP to enable inbound load balancing and failover.</p>  <p>By running perfmon remotely before the freeze happens we could see that the 4 CPUs that are locked at 100% are locked by DPCs. We used the counter “Processor Information\% DPC Time”.</p>  <p>A DPC is best defined in Windows Internals 6th Ed. (Book 1, Chapter 3):</p>  <table cellspacing="0" cellpadding="5" width="492" border="1"><tbody>     <tr>       <td valign="top" width="490"><em>A DPC is a function that performs a system task—a task that is less time-critical than the current one. The functions are called deferred because they might not execute immediately. DPCs provide the operating system with the capability to generate an interrupt and execute a system function in kernel mode. The kernel uses DPCs to process timer expiration (and release threads waiting for the timers) and to reschedule the processor after a thread’s quantum expires. Device drivers use DPCs to process interrupts.</em></td>     </tr>   </tbody></table>  <p>Because this is a backup server, we’re expecting that the bulk of our hardware DPCs will be generated by incoming network packets and raised by the NICs. Though they could have been coming from the tape library or the storage arrays.</p>  <p>To look into what exactly is generating DPCs and how long the DPCs last for, we need to run Windows Performance Toolkit, specifically WPR.exe (Windows Performance Recorder). We have to do this carefully. We don’t want to increase the load of the server by capturing the Network and CPU activity of a server which already has high activity on the CPU and Network, and has shown a past history of crashing. But we want to run the capture <em>while</em> the server is in a frozen state. A tricky thing. So we ran this batch file:</p>  <blockquote>   <p><font face="Courier New">Start /HIGH /NODE 1 wpr.exe -start CPU –start Network -filemode –recordtempto S:\temp</font></p>    <p><font face="Courier New">ping -n 20 127.0.0.1 &gt; nul</font></p>    <p><font face="Courier New">Start /HIGH /NODE 1 wpr.exe –stop S:\temp\profile_is_CPU_Network.etl</font></p> </blockquote>  <p>If the server you are profile has a lot of RAM (24GB or more), you’ll want to protect your non-paged pool from increasing and harming your server. To do that you should review <a href="https://blogs.technet.com/b/yongrhee/archive/2012/11/23/wpr-xperf-capture-high-cpu-disk-i-o-file-registry-networking-private-bytes-virtual-bytes-paged-pool-nonpaged-pool-and-or-application-slowness.aspx" target="_blank">this blog</a> and add this switch to the start command: <font face="Courier New">–start &quot;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\SampleGeneralProfileForLargeServers.wprp&quot;</font></p>  <p>We’re starting on NUMA node 1 as the NICs were bound to NUMA node 0 and the “Processor Information” perfmon trace we took earlier showed that the CPUs on NUMA node 0 were locked. We’re starting the recorder with a “high” prioritization so that we can be sure it gets the CPU time it needs to work. We’re not writing to RAM, we’re recording to disk in the hopes that if the trace crashes we’ll at least have a partial trace to use. We made sure that S: in this example was a SAN disk to ensure it had the required speed to keep up with the huge data we’re expecting. We’re pinging 20 times to make sure our trace is 20 seconds long. And finally we’re starting a trace of CPU and Network profiles.</p>  <p>Note that to gather stacks we first had to disable the ability for the Kernel (aka the Executive) to send its own pages of memory out from RAM to the pagefile, where we cannot analyze them. To do this run <font face="Courier New">wpr –disablepagingexecutive on</font> and then reboot.</p>  <p>We retrieved 3 traces in all:</p>  <ul></ul>  <ol>   <li>The first trace to diagnose the problem</li>    <li>The second trace after 2 changes were made which generated about 50% of our problem</li>    <li>The final trace after the final change was made which created the other 50% of the problem</li> </ol>  <ul></ul>  <h1>Diagnosis</h1>  <p>So this blog now becomes a short tutorial on how you can use WPA (Windows Performance Analyzer) to locate the source of DPC issues. WPA is a VERY powerful tool and diagnosing problems is part science, part art. Meaning that no two diagnosis are ever done in the same way. This is just how I used WPA in this case. For this analysis, you’ll need the debugging tools installed and symbols configured and loaded.</p>  <h4>CPU Usage (Sampled)\Utilization By CPU</h4>  <p>First I want to see which CPUs are pegged. For that we use “CPU Usage (Sampled)\Utilization By CPU”, then select a time range by right-clicking:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_46A10ED7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_46A10ED7.png"><img style="display:inline;background-image:none;" border="0" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_018AD252.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_018AD252.png" width="518" height="212" alt=" " /></a></p>  <p>Choose a round number (10 seconds in my example) as it makes it easier to quickly calculate how many things happened per minute when comparing to the graphs for the later scenarios:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_3385038D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_3385038D.png"><img style="display:inline;background-image:none;" border="0" alt="Select Time Range" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_55706611.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_55706611.png" width="244" height="139" /></a></p>  <p>I chose 20 seconds to 30 seconds as it is a 10 second window where there was heavy load and not blips due to tracing starting or stopping. Then “Zoom” by right clicking again.</p>  <p>Now all your graphs will be focused on that time range.</p>  <p>Then shift-select the CPUs which are pegged. In this case it is CPUs 0, 2, 4 and 6. This is because the cores are Hyperthreaded and the NICs cannot interrupt a logical CPU which is the result of Hyperthreading (CPUs 1, 3, 5, 7 etc.). And they are low-numbered CPUs because they are located on NUMA node 0.</p>  <p>Once they are selected, right-click and choose “Filter to Selection”:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_651301D3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_651301D3.png"><img style="display:inline;background-image:none;" border="0" alt="Filter to Selection" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_0D453AE6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_0D453AE6.png" width="518" height="267" /></a></p>  <p>Next we want to add a column for DPCs so we can see how much of the CPUs time was spent locked processing DPCs. To add columns, just right click on the column title bar (in the screen above this has “Line # | CPU || Count | Weight (in view) | Timestamp”) on the centre of the right hand pane and select the columns you want to display. Once the DPC/ISR column has been added, drag it to the left side of the yellow bar, next to the CPU column:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_660D8261.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_660D8261.png"><img style="display:inline;background-image:none;" border="0" alt="Choose columns" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_434C4AA4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_434C4AA4.png" width="518" height="406" /></a></p>  <p>Expanding out the CPU items, we see that DPCs count for almost all of the CPU activity on these CPUs (the count figures for the CPUs activity is 10 seconds of CPU time and the count of CPU time for DPCs under this is over 9 seconds).</p>  <h4>DPC duration by Module, Function</h4>  <p>The next WPA graph we need is the one which can show how long the DPCs last for. We drag in the first graph under “DPC/ISR” called “DPC duration by Module, Function”:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_2DF125ED.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_2DF125ED.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="DPC duration by Module, Function" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_5F7F2433.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_5F7F2433.png" width="517" height="124" /></a></p>  <p>One the far right column (“Duration”), we can see how long each module spends waiting with a DPC. This says that 36.8 seconds were spent on DPCs for NDIS.SYS alone. How can it be 36.8 seconds if the sample window is 10 seconds? Well, it is CPU seconds, and we have 24 CPUs, so we could potentially have 240 CPU seconds in all.</p>  <p>The next biggest waiter for DPCs is storport.sys. But at 1 second, it’s not even close.</p>  <p>The column with the blue text is called “Duration (Fragmented) (ms) Avg” and is the average time a DPC lasts for during this sample window. The NDIS.SYS DPCs last around 0.22 milliseconds, or 220 microseconds. The count of DPCs for NDIS and storport are comparatively similar (163,000 and 123,000 respectively), but because NDIS took so long on each DPC on average, it ended up locking the CPU for longer than storport did.</p>  <p>So let’s add the CPU column, move it to the left side of the yellow line with it as the first column to pivot on:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_0A5A18F7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_0A5A18F7.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="Filter to busy CPUs" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_77A7AFF0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_77A7AFF0.png" width="518" height="156" /></a></p>  <p>We can see that our targeted CPUs, 0, 2, 4. 6 have very high durations of DPC waits (using the last column for “Duration”, again) with no other CPU spending very much time in a DPC wait state. So we select these CPUs and filter.</p>  <p>Expanding out the CPUs, we see that there are many different sources of DPCs, but that NDIS is really the biggest source of DPC waits. So we will now move the “Module” column to be the left-most column and remove the CPU column from view. We then right click on NDIS.SYS and “Filter to Selection” again as we only want to focus on DPCs from NDIS on CPUs 0, 2, 4, 6:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_14B05EB9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_14B05EB9.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="Filter to NDIS" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_5FA66039.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_5FA66039.png" width="517" height="49" /></a></p>  <p>One function, <font face="Courier New">ndisInterruptDPC</font> is causing our DPC waits. This is the one we’ll focus on. If we expand this, it will list every single DPC and how long that wait is. Select every single one of these rows by scrolling to the very bottom of the table (in this example there are 163,230 individual DPCs):</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_]3539.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_5D003539.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="Copy Column Selection" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_6CA2D0FB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_6CA2D0FB.png" width="518" height="396" /></a></p>  <p>Right click on the column called “Duration” and choose “Copy Other” and then “Copy Column Selection”. This will copy only the values in the “Duration” column. We can paste this into Excel and create a graph which shows the duration of the DPCs as a function of the number of DPCs present:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_5094A2C1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_5094A2C1.png"><img title="NDIS DPCs on CPU0,2,4,6" style="display:inline;background-image:none;" border="0" alt="Taken from Excel" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_3249EBCB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_3249EBCB.png" width="516" height="339" /></a></p>  <p>I have added a red line on 0.1 milliseconds because according <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/ff545764(v=vs.85).aspx" target="_blank">the hardware development kit for driver manufacturers</a>, a DPC should not last longer than 100 microseconds. Meaning DPC above the red line are misbehaving. And that this is the bulk of our time spent waiting on DPCs.</p>  <p>So, we have established that we have slow DPCs on NDIS, and lots of them, and that they are locking our 4 CPUs. Our NICs aren’t able to spread their DPCs to any other CPUs and Hyperthreading isn’t really helping our specific issue. But what is causing the networking stack to generate so many slow DPC locks?</p>  <h4>DPC/ISR Usage by Module, Stack</h4>  <p>The final graph in WPA will show us this. From the category “CPU Usage (Sampled)”, drag in a graph called “DPC/ISR Usage by Module, Stack”. Filter to DPC (which will exclude ISRs) and our top candidates are:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_4495433E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_4495433E.png"><img title="DPC/ISR Usage by Module, Stack" style="display:inline;background-image:none;" border="0" alt="DPC/ISR Usage by Module, Stack" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_1AB4CF09.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_1AB4CF09.png" width="517" height="338" /></a></p>  <ol>   <li>ntoskrnl.exe (the Windows Kernel)</li>    <li>NETIO.SYS (Network IO operations)</li>    <li>tcpip.sys (TCP/IP)</li>    <li>NDIS.SYS (Network layer standard interface between OS and NIC drivers)</li>    <li>IDSvia64.sys (Symantec Intrusion Detection System)</li>    <li>ixn62x64.sys (Intel NIC driver for NDIS 6.2, x64)</li>    <li>iansw60e.sys (Intel NIC teaming software driver for NDIS 6.0)</li> </ol>  <p>To see what these are doing we simply expand the stack columns by clicking the triangle of the row with the highest count, looking for informative driver names and a large drop in the number of counts present, indicating that this particular function is causing a consumption of CPU time.</p>  <p>NTOSKRNL is running high because we are capturing. The kernel is spending time gathering ETL data. This can be ignored.</p>  <p>NETIO is redirecting network packets to/from tcpip.sys for a function called InetInspectRecieve:</p>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_65AAD089.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_65AAD089.png"><img title="DPC/ISR Usage by Module, Stack" style="display:inline;background-image:none;" border="0" alt="NETIO.sys stack expansion" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_0E493C91.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_0E493C91.png" width="377" height="226" /></a></p> </blockquote>  <p>TCP/IP is dealing with the NETIO commands above to do this “Receive Inspection”:</p>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_7B96D38A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_7B96D38A.png"><img title="DPC/ISR Usage by Module, Stack" style="display:inline;background-image:none;" border="0" alt="TCPIP.SYS stack expansion" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_11EC78D0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_11EC78D0.png" width="378" height="306" /></a></p> </blockquote>  <p>NDIS.SYS is dealing with 2 main functions in tcpip.sys: TcpTcbFastDatagram and InetInspectRecieve again:</p>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_680C049A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_680C049A.png"><img title="DPC/ISR Usage by Module, Stack" style="display:inline;background-image:none;" border="0" alt="NDIS.SYS stack expansion" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_0CA022D0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_0CA022D0.png" width="376" height="319" /></a></p> </blockquote>  <p>Other than ntoskrnl, these 3 Windows networking drivers all have entries for the drivers listed as 5, 6 and 7 above in their stacks.</p>  <h4>Diagnosis Summary</h4>  <p>Lots of DPCs are caused by 3 probable sources:</p>  <ol>   <li>Incoming packet inspection by the Symantec IDS system.</li>    </ol><ol>     <li>The IDS system has to take every packet, compare it to a signature definition, and, if clean, allow it to pass. This action is causing slow DPCs</li>   </ol>    <ul><li>The NIC driver could be stale/buggy and generating slow DPCs.</li>    </ul><ol>     <li>There is no evidence for this, but it’s usually a good place to start. There could be TCP offloading or acceleration features in the NIC and/or driver which haven’t been enabled but may improve network performance.</li>   </ol>    <ul><li>And finally the NIC teaming software is getting in between the NICs and the CPUs.</li>    </ul><ol>     <li>That is, after all, the job of the NIC teaming software: to trick Windows into thinking that the incoming packets from 2 distinct hardware devices are actually coming from 1 device. The problem here, however, is that this insertion into the networking stack is pure software, but is likely causing very slow DPCs</li>   </ol>   <h4>Action Plan</h4>  <p>Our actions were to make changes over 2 separate outage windows:</p>  <ol>   <li>Update the NIC driver and enable Intel I/OAT in the BIOS of the server.</li>    </ol><ol>     <li>I/OAT is described in the spec sheet for the NIC like this: “<em>When enabled within multi-core environments, the Intel Ethernet Server Adapter X520-T2 offers advanced networking features. Intel I/O Acceleration Technology (Intel I/OAT), for efficient distribution of Ethernet workloads across CPU cores. Load balancing of interrupts using MSI-X enables more efficient response times and application performance. CPU utilization can be lowered further through stateless offloads such as TCP segmentation offload, header replications/splitting and Direct Cache Access (DCA).”</em></li>   </ol>    <ul><li>Uninstall the NIC teaming software</li>    </ul><ol>     <li>3rd party NIC teaming software inhibits many TCP offloading features, and in this case generates large numbers of slow DPCs</li>   </ol>    <ul><li>On the second outage we uninstalled the IDS system.</li>    </ul><ol>     <li>IDS was not configured on this (and all other) servers. But as the software had the potential to become enabled, it was grabbing every incoming packet for inspection, despite the fact that it wasn’t configured to inspect the packet or act on violations in any way. Stopping the service is insufficient, the driver must be removed from the hidden, non-plug and play section of the device manager. Manually removing the driver isn’t sufficient. The software will reinstall it at next boot. Only a full uninstall will do.</li>   </ol>   <h1>After dissolving the NIC Team</h1>  <p>Here is what the picture looked like after we dissolved the NIC team, updated the NIC driver and enabled Intel I/OAT in the BIOS.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_62BFAE9A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_62BFAE9A.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="DPC duration - No teaming, I/OAT enabled" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_4DD0BCD8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_4DD0BCD8.png" width="516" height="119" /></a></p>  <p>In this 10 second sample we can see that the 4 CPU cores are still effectively locked as the CPU time due to NDIS DPCs is 37.7 seconds (out of a possible maximum of 40 seconds. The number of DPCs has decreased by more than half to 55,000, meaning that the average duration of DPCs has become very long at 682 microseconds – triple the average time from before we removed the NIC team and enabled I/OAT.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_7D223262.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_7D223262.png"><img title="NDIS DPCs on CPU0,2,4,6" style="display:inline;background-image:none;" border="0" alt="Taken from Excel" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_4C8EB4AA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_4C8EB4AA.png" width="516" height="335" /></a></p>  <p>The blue area of the graph above is the picture we had from before changes were made. The pink/orange area is the picture of DPC durations after removing NIC teaming and enabling I/OAT.</p>  <p>So why did the average duration of DPCs get longer?</p>  <p>It could be that the IDS software now does not need to relinquish its DPCs to make room on the same CPU cores as the DPCs for the NIC teaming driver. These 2 drivers must be locked to the same CPUs. With no need to relinquish a DPC due to another DPC of equal priority, the IDS DPCs are free to use the CPU for longer periods of time before being forced off.</p>  <p>At any rate, it certainly isn’t fixed yet.</p>  <h1>After uninstalling Symantec IDS</h1>  <p>And finally here’s what the picture looked like after we uninstalled the IDS portion of the Symantec package. Remember, this service was not configured to be enabled in any way.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_3EBEFF60.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_3EBEFF60.png"><img title="DPC duration by Module, Function" style="display:inline;background-image:none;" border="0" alt="DPC duration - no IDS" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_5B5B7B33.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_5B5B7B33.png" width="517" height="152" /></a></p>  <p>You can see that the average time has dropped from 220 microseconds to 90 microseconds – below the 100 microsecond threshold required by the Driver Development Kit.</p>  <p>In this 10 second sample there were 127,000 DPCs from NDIS on the 4 heavily used CPUs, but the CPU time they consumed was 11 seconds, a reduction from 36.8 seconds.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_466C8971.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_466C8971.png"><img title="NDIS DPCs on CPU0,2,4,6" style="display:inline;background-image:none;" border="0" alt="Taken from Excel" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_560F2533.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_560F2533.png" width="517" height="338" /></a></p>  <p>The blue area of the graph above is the picture we had from before changes were made. The pink/orange area is the picture of DPC durations after removing NIC teaming and enabling I/OAT. And the green area is the picture after IDS is removed.</p>  <p>This is a dramatic improvement. Nearly all DPCs are below the 100 microsecond limit. The system is able to process the incoming load without locking up for high priority, long lasting DPCs.</p>  <h1>What about RSS?</h1>  <p>We’re not quite done though. 4 of our CPUs are still working very hard, often pegged at 100%. But why only 4? This is a 2-socket system with 6 cores on each socket. That gives us 12 CPUs where we can run DPCs. DPCs from one NIC are bound to one NUMA node. We already dissolved our NIC team, so we only have 1 NIC in action, so we are limited to 6 cores. RSS can spread DPCs over CPUs in roots of 2, meaning 1, 2, 4, 8, 16, 32 cores. Meaning we can at most use 4 CPUs per NIC.</p>  <p>To scale out we would need to add more NICs and limit RSS on each of those NICs to 2 cores. We’d need to bind 3 NICs to NUMA node 0 and 3 to NUMA node 1. We’d also need to set the starting CPUs for those NICs to be cores 0, 2, 4, 6, 8 and 10. In that we can saturate every possible core.</p>  <p>But to do this, we’d need to ensure that we can have multiple NICs, without using the teaming software. Which means we’d need to assign each NIC a unique IP address. To do that we need to make sure that the TSM clients can deal with targeting a server name with multiple IP addresses in DNS for that name. And if connectivity to the first IP address is lost, that TSM can failover to one of the other IP addresses. We’ll test TSM and&#160; get back with our results later.</p>  <p>But we need one more fundamental check before doing that: We need to make sure that the incoming packet, hitting a specific NUMA node and core is going to end up hitting the right thread of the TSM server where that packet is going to be dealt with and backed up. If we can’t align a backup client to the incoming NIC and align that NIC to the backup software thread that should process it, then we’ll be causing intra-CPU interrupts, or worse yet, cross NUMA interrupts. This would make the entire system much less scalable.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_3A00F6F9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_3A00F6F9.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_54637AC1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_54637AC1.png" width="503" height="391" /></a></p>  <p>So this is how this would all look. The registry key to set the NUMA node to bind a NIC to is “*NumaNodeId” (including the * at the start). To set the base CPU, use *RssBaseProcNumber”. To set the maximum number of processors to use set “*RssBaseProcNumber”.</p>  <p>These keys are explained here: <a title="https://msdn.microsoft.com/en-us/library/windows/hardware/ff570864(v=vs.85).aspx" href="https://msdn.microsoft.com/en-us/library/windows/hardware/ff570864(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/hardware/ff570864(v=vs.85).aspx</a></p>  <p>and here: <a title="Performance Tuning Guidelines for Windows Server 2008 R2" href="https://download.microsoft.com/download/6/B/2/6B2EBD3A-302E-4553-AC00-9885BBF31E21/Perf-tun-srv-R2.docx">Performance Tuning Guidelines for Windows Server 2008 R2</a></p>  <p>And more general information on how RSS works in Windows Server 2008 are here: <a href="https://download.microsoft.com/download/5/D/6/5D6EAF2B-7DDF-476B-93DC-7CF0072878E6/NDIS_RSS.doc">Scalable Networking- Eliminating the Receive Processing Bottleneck—Introducing RSS</a></p>  <p>Our problem in the above picture, however, is that our process doesn’t know to run its threads on the NUMA node and cores where the incoming packets are arriving. Had this been SQL server, we could have run separate instances configured to start using specific CPUs. Hopefully, one day, TSM will operate like this and become NUMA-node aware.</p>    <p>I know this has been a long post, but for those who have read down to here, I do hope this has helped you with your troubleshooting using WPT.</p>]]></content:encoded>
    </item>
    <item>
      <title>Low throughput when copying files</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/low-throughput-when-copying-files</link>
      <pubDate>Thu, 05 Dec 2013 04:43:11 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2013/12/05/low-throughput-when-copying-files/</guid>
      <description><![CDATA[Hi,  I have been helping a customer with a tricky issue recently regarding slow network performance...]]></description>
      <content:encoded><![CDATA[<p>Hi,</p>  <p>I have been helping a customer with a tricky issue recently regarding slow network performance for SMB file copies over their network.</p>  <p>It came about after they took the settings defined in Security Compliance Manager for their member servers and deployed them as a Group Policy to their server OU. After doing this, they saw an 80% reduction in the performance in SMB file copies. But when we used <a href="https://gallery.technet.microsoft.com/NTttcp-Version-528-Now-f8b12769" target="_blank">Ntttcp.exe</a> to test the network throughput via a test data stream, the throughput was not affected. Only SMB was affected.</p>  <p>They had Windows Server 2008 R2 SP1 VMs on ESX with 1 virtual 10Gb NIC patched to a team of 2 physical 10Gb NICs. When 2 servers tried to copy a set of large test files without the SCM security settings applies, they could reach around 400Mbps. When we applied the settings, that dropped to around 80Mbps</p>  <p>In the SCM security definitions, there are 234 settings defined. We had to find out which one of these settings caused their issue.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_0AD058EE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_0AD058EE.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_4EA71DF6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_4EA71DF6.png" width="504" height="281" /></a></p>  <p>We could see that the CPUs of the VM were going nuts with a wild saw-tooth pattern of all CPUs. We tried adding more CPUs and the saw-tooth pattern simply spread without making any major change in achievable throughput.</p>  <p>The process consuming the CPU time in Task Manager was ‘System’.</p>  <p>So, to break into ‘System’ a little more, we ran Windows Performance Recorder (WPR) to get a trace of CPU activity, like this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_075458B5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_075458B5.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_1DA9FDFA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_1DA9FDFA.png" width="379" height="296" /></a></p>  <p>And in the trace, we expanded out “CPU Usage (Sampled)”, and added the graph for “DPC and ISR by Module, Stack”:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_1B03D2FA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_1B03D2FA.png"><img title="DPC and ISR by Module, Stack" style="display:inline;background-image:none;" border="0" alt="DPC and ISR by Module, Stack" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_5515308A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_5515308A.png" width="507" height="343" /></a></p>  <p>This showed us that all our CPU time was spent processing DPCs generated by a driver called cng.sys</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_34908189.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_34908189.png"><img title="image" style="margin:0px;display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_44331D4B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_44331D4B.png" width="270" height="332" /></a></p>  <p>This is “Kernel Cryptography, Next Generation” which relates to the server or clients ability to calculate cryptographic equations in the Kernel when doing things like sending or receiving encrypted information, or information which has been signed. Signing in this case could be creating a signature hash for chunks of transmitted data to prove that is hasn’t been modified while on the wire.</p>  <p>This, combined with the fact that only SMB was affected lead us to think it was SMB signing that was our issue.</p>  <p>SMBv2 uses these 2 GPO settings to define SMB signing:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_6F7A4503.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_6F7A4503.png"><img title="image" style="display:inline;background-image:none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/image_thumb_6065F6DA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/image_5F00_thumb_5F00_6065F6DA.png" width="501" height="211" /></a></p>  <ol>   <li>Microsoft Network Server: Digitally sign communications (always)</li>    <li>Microsoft Network Client: Digitally sign communications (always)</li> </ol>  <p>The settings relate to SMBv2. Note that they change the default, in-box setting from “Disabled” to the Microsoft recommended SCM setting of “Enabled”.</p>  <p>For SMBv1 on Windows 2003 and older, the GPO settings are:</p>  <ol>   <li>Microsoft Network Server: Digitally sign communications (if client agrees)</li>    <li>Microsoft Network Client: Digitally sign communications (if server agrees)</li> </ol>  <p>Once we removed the “always” settings, the transfer speed returned back to the higher 400Mbps transfer speed we expected.</p>  <p>We discussed the usefulness of this setting and in their network, it would be best to keep the “server” side setting enabled on DCs only to ensure that the GPO files which clients will download from the DCs during a Group Policy refresh have not been altered as these files are security sensitive files, but are usually very small and we don’t mind slightly slower transfer speeds for these files.</p>  <p>&#160;</p>  <p>Here’s some additional resources we used when investigating SMB signing:</p>  <p><a title="https://blogs.technet.com/b/josebda/archive/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2.aspx" href="https://blogs.technet.com/b/josebda/archive/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2.aspx">https://blogs.technet.com/b/josebda/archive/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2.aspx</a></p>  <p><a title="https://msdn.microsoft.com/en-us/library/a64e55aa-1152-48e4-8206-edd96444e7f7#id218" href="https://msdn.microsoft.com/en-us/library/a64e55aa-1152-48e4-8206-edd96444e7f7#id218">https://msdn.microsoft.com/en-us/library/a64e55aa-1152-48e4-8206-edd96444e7f7#id218</a></p>  <p><a title="https://blogs.msdn.com/b/openspecification/archive/2009/07/06/negtokeninit2.aspx?Redirected=true" href="https://blogs.msdn.com/b/openspecification/archive/2009/07/06/negtokeninit2.aspx?Redirected=true">https://blogs.msdn.com/b/openspecification/archive/2009/07/06/negtokeninit2.aspx?Redirected=true</a></p>  <p><a title="https://blogs.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance-tuning.aspx" href="https://blogs.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance-tuning.aspx">https://blogs.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance-tuning.aspx</a></p>  <p><a title="https://blogs.technet.com/b/filecab/archive/2012/05/03/smb-3-security-enhancements-in-windows-server-2012.aspx" href="https://blogs.technet.com/b/filecab/archive/2012/05/03/smb-3-security-enhancements-in-windows-server-2012.aspx">https://blogs.technet.com/b/filecab/archive/2012/05/03/smb-3-security-enhancements-in-windows-server-2012.aspx</a></p>  <p><a title="https://support.microsoft.com/kb/320829" href="https://support.microsoft.com/kb/320829">https://support.microsoft.com/kb/320829</a></p>  <p><a title="https://blogs.technet.com/b/neilcar/archive/2004/10/26/247903.aspx" href="https://blogs.technet.com/b/neilcar/archive/2004/10/26/247903.aspx">https://blogs.technet.com/b/neilcar/archive/2004/10/26/247903.aspx</a></p>  <p><a title="https://gallery.technet.microsoft.com/NTttcp-Version-528-Now-f8b12769" href="https://gallery.technet.microsoft.com/NTttcp-Version-528-Now-f8b12769">https://gallery.technet.microsoft.com/NTttcp-Version-528-Now-f8b12769</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Removing permission for users to upload their image to AD</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/removing-permission-for-users-to-upload-their-image-to-ad</link>
      <pubDate>Sun, 23 Jun 2013 13:32:45 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2013/06/23/removing-permission-for-users-to-upload-their-image-to-ad/</guid>
      <description><![CDATA[Hi,  &#160;  I recently had the pleasure to help one of our Premier customers with a query they have...]]></description>
      <content:encoded><![CDATA[<p>Hi,</p>  <p>&#160;</p>  <p>I recently had the pleasure to help one of our Premier customers with a query they have regarding saving images in Active Directory.</p>  <h2>Default Permission in AD</h2>  <p>By default, users have permission to save a jpeg or bmp file to their own AD user account. This file can be up to 100KB in size. In a large AD with hundreds of thousands of users, this could quickly increase the size of the AD database. The increase in size can increase backup times, increase the backup size and slow down restores.</p>  <p>This permission is granted via the constructed security principal, “SELF”.</p>  <p>“SELF” is given permission to a set of attributes, not to the individual attributes themselves. By combining attributes into groups of common attributes, you reduce the size of the ACL entry. These groups are called Permission Sets. The attributes which relate to images are:</p>  <ul>   <li>Picture (aka thumbnailPhoto)</li>    <li>jpegPhoto</li> </ul>  <p>The attribute Picture is in a Permission Set called Personal-Information. You can see the permission is applied to all users like this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/!.Personal-Information-2_04F6B276.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/2100.Personal_2D00_Information_2D00_2_5F00_04F6B276.png"><img title="SELF has read/write permission to Personal-Information" style="display: inline; background-image: none;" border="0" alt="Personal-Information" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/8037.Personal-Information-2_thumb_5C0B9D6C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/8037.Personal_2D00_Information_2D00_2_5F00_thumb_5F00_5C0B9D6C.png" width="468" height="317" /></a></p>  <h2>Control the Permission</h2>  <p>They wanted to take away the permission for SELF to be able to write to the Picture attribute, but this shouldn’t be a high-level deny for Everyone to write to this attribute. It could be that some users somewhere at sometime need to write to this attribute.</p>  <p>What I suggested they do was de-couple the Picture attribute from the Property-Set called Personal-Information. Then apply an explicit permission to the root of the domain for a group which has write access to this attribute instead.</p>  <h2>Unlink from a Property-Set</h2>  <p>But how do you link (and therefore unlink) an attribute to a Property-Set?</p>  <p>The property sets are not found in the schema, but instead are found in the Configuration partition, under Extended-Rights.</p>  <p>Each of the Property Sets has an attribute identifying it, called rightsGuid. This GUID is used to pull in attributes as members of the property set by specifying the same GUID in the attribute of the attribute called attributeSecurityGUID. If these 2 GUIDs are the same, then the attribute will be a member of the Property Set. By removing the attributeSecurityGUID entry on the Picture attribute, it is no longer a member of the Personal-Information Property Set. And the SELF will lose permission to write to this attribute.</p>  <p>While this sounds very complicated, here’s a simple picture to explain it all:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/8306.Personal-Information_19B88529.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/8306.Personal_2D00_Information_5F00_19B88529.png"><img title="rightsGuid matches attributeSecurityGUID" style="display: inline; background-image: none;" border="0" alt="Personal-Information" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/1460.Personal-Information_thumb_70613D2A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/1460.Personal_2D00_Information_5F00_thumb_5F00_70613D2A.png" width="475" height="398" /></a></p>  <p>The object on the left “CN=Personal-Information” is the property set. The object on the right “CN=Picture” is the attribute in the schema. It’s lDAPDisplayName is thumbnailPhoto. The attributes of these objects, rightsGuid and attributeSecurityGUID have the same value, a matching GUID.</p>  <h2>Remove the GUID</h2>  <p>When you remove the attributeSecurityGUID, open the attribute and click the button on the bottom left called “Clear”, as shown below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/6082.Personal-Information-3_3B0804F8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/6082.Personal_2D00_Information_2D00_3_5F00_3B0804F8.png"><img title="Press &quot;Clear&quot; to remove the GUID" style="display: inline; background-image: none;" border="0" alt="Personal-Information" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/7140.Personal-Information-3_thumb_4B9FFFE6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/7140.Personal_2D00_Information_2D00_3_5F00_thumb_5F00_4B9FFFE6.png" width="350" height="470" /></a></p>  <p>Notice also that the text in the attribute editor isn’t the same as the text you see in the window behind. The characters appear as pairs and the pairs in the blocks have been switched around.</p>  <h2>Undoing the Change</h2>  <p>In order to restore the GUID if you change your mind, you need to copy the same form of the GUID from another attribute. I chose Post-Code as this is also in the Personal Information Permission Set.</p>  <p>&#160;</p>  <p>I hope this helps someone else to delegate their Active Directory if needed.</p>  <p>&#160;</p>  <p>Craig</p>]]></content:encoded>
    </item>
    <item>
      <title>Installing DHCP on Windows Server 2012 did not create the local groups</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/installing-dhcp-on-windows-server-2012-did-not-create-the-local-groups</link>
      <pubDate>Sun, 23 Jun 2013 12:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2013/06/23/installing-dhcp-on-windows-server-2012-did-not-create-the-local-groups/</guid>
      <description><![CDATA[Hi again,
&nbsp;
Another interesting case with a nice, easy solution.
While working with a...]]></description>
      <content:encoded><![CDATA[<p>Hi again,</p>
<p>&nbsp;</p>
<p>Another interesting case with a nice, easy solution.</p>
<p>While working with a Premier customer recently we found that the 2 local groups relating to DHCP, &ldquo;DHCP Administrators&rdquo; and &ldquo;DHCP Users&rdquo; didn&rsquo;t get created on their new DHCP servers.</p>
<p>Only the role installation steps can do this for us as that will make sure they were actually given the required rights to manipulate or view the service.</p>
<h2>What to do?</h2>
<p>We couldn&rsquo;t just remove and reinstall the role &ndash; there was too much configuration already done.</p>
<p>We couldn&rsquo;t ignore it as we were installing IPAM and it needs to place the IPAM servers computer account into the group &ldquo;DHCP Users&rdquo; on the servers. It does this by nesting itself into new a universal group in the domain: IPAMUG. This group is the one which actually becomes a member of the &ldquo;DHCP Users&rdquo; group.</p>
<p>The role was installed by a &ldquo;next-next&rdquo; manual installation using Server Manager. So it wasn&rsquo;t as if some PowerShell or DISM.exe switch was accidentally left off. And if we repeated the manual installation, we would likely just end up where we started.</p>
<h2>What went wrong?</h2>
<p>At the end of the Server Manager wizard, you get this completion message (without the big red arrow, that&rsquo;s my addition).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/7624.dhcp-groups-1_003A9D97.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/7624.dhcp_2D00_groups_2D00_1_5F00_003A9D97.png"><img style="display: inline; background-image: none;" title="Complete DHCP configuration" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/5531.dhcp-groups-1_thumb_6C410B00.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/5531.dhcp_2D00_groups_2D00_1_5F00_thumb_5F00_6C410B00.png" alt="Add Roles and Features Wizard" width="466" height="332" border="0" /></a></p>
<p>Inside there is a link to launch a wizard which will configure the DHCP server, called &ldquo;Complete DHCP configuration&rdquo;. This wizard does 2 things:</p>
<ol>
<li>It creates the 2 groups we&rsquo;re after: &ldquo;DHCP Administrators&rdquo; and &ldquo;DHCP Users&rdquo;</li>
<li>It authorizes the DHCP server in Active Directory if the DHCP server is joined to a domain</li>
</ol>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/6866.dhcp-groups-2_51283BF2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/6866.dhcp_2D00_groups_2D00_2_5F00_51283BF2.png"><img style="display: inline; background-image: none;" title="Adding DHCP local groups" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/7080.dhcp-groups-2_thumb_4F77701E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/7080.dhcp_2D00_groups_2D00_2_5F00_thumb_5F00_4F77701E.png" alt="DHCP Post-Install configuration wizard" width="463" height="340" border="0" /></a></p>
<p>&nbsp;</p>
<p>The authorization part is pretty nifty. Usually you do this by right-clicking on the server in the DHCP MMC console and selecting &ldquo;Authorize&rdquo;. This will create a object in the Configuration partition of the Active Forest under Services / NetServices for the DHCP server. Only members of Administrators in the forest root domain or members of Enterprise Admins can create objects here. The new wizard lets you type alternate credentials to do this job:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/5381.dhcp-groups-3_46A767D2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/5381.dhcp_2D00_groups_2D00_3_5F00_46A767D2.png"><img style="display: inline; background-image: none;" title="Authoizing DHCP by specifying alternate credentials" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/4572.dhcp-groups-3_thumb_7E0D7900.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/4572.dhcp_2D00_groups_2D00_3_5F00_thumb_5F00_7E0D7900.png" alt="DHCP Post-Install configuration wizard" width="462" height="340" border="0" /></a></p>
<p>My customer had authorized their DHCP servers, by doing it the old way in the DHCP MMC console using an account with permission to do so.</p>
<p>They hadn&rsquo;t noticed that small blue link from the image above. There is also a outstanding notification within any Server Manager console which connects to one of these DHCP servers (or on the local host itself). But that was also quiet subtle, and requires that you click on it to see the same blue link:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/6266.dhcp-groups-5_5C41A06F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/6266.dhcp_2D00_groups_2D00_5_5F00_5C41A06F.png"><img style="display: inline; background-image: none;" title="Post-deployment Configuration" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/1832.dhcp-groups-5_thumb_48B440CE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/1832.dhcp_2D00_groups_2D00_5_5F00_thumb_5F00_48B440CE.png" alt="Server Manager Notification" width="462" height="227" border="0" /></a></p>
<p>In fact, we hadn&rsquo;t even noticed any of this by the time I&rsquo;d found an alternative way of creating these groups on their DHCVP servers using netsh.exe:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/0724.dhcp-groups-6_0AD7A952.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/0724.dhcp_2D00_groups_2D00_6_5F00_0AD7A952.png"><img style="display: inline; background-image: none;" title="netsh.exe dhcp add securitygroups" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/8255.dhcp-groups-6_thumb_3E336CAE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/8255.dhcp_2D00_groups_2D00_6_5F00_thumb_5F00_3E336CAE.png" alt="netsh.exe dhcp add securitygroups" width="462" height="81" border="0" /></a></p>
<blockquote>
<p><span style="font-family: Courier New;">netsh.exe dhcp add securitygroups</span></p>
</blockquote>
<p>Had we run the wizard through to it&rsquo;s completion, we would have got a success message like this stating that the local groups were successfully created:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/5700.dhcp-groups-4_2EB05ADF.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/5700.dhcp_2D00_groups_2D00_4_5F00_2EB05ADF.png"><img style="display: inline; background-image: none;" title="DHCP local roups successfully created" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/8507.dhcp-groups-4_thumb_2CFF8F0B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/8507.dhcp_2D00_groups_2D00_4_5F00_thumb_5F00_2CFF8F0B.png" alt="DHCP Post-Install configuartion wizard" width="461" height="339" border="0" /></a></p>
<p>&nbsp;</p>
<p>I hope this helps someone avoid some troubleshooting time when deploying DHCP on Windows Server 2012.</p>]]></content:encoded>
    </item>
    <item>
      <title>MBAM 2.0 gets released along with Service Packs to most MDOP apps</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/mbam-2-0-gets-released-along-with-service-packs-to-most-mdop-apps</link>
      <pubDate>Fri, 12 Apr 2013 14:00:22 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2013/04/12/mbam-2-0-gets-released-along-with-service-packs-to-most-mdop-apps/</guid>
      <description><![CDATA[Hi,&nbsp;Just a quick note to publicise that MBAM 2.0 is now out, and each of AGPM 4.0, DaRT8.0,...]]></description>
      <content:encoded><![CDATA[<p>Hi,<p>&nbsp;</p><p>Just a quick note to publicise that MBAM 2.0 is now out, and each of AGPM 4.0, DaRT8.0, App-v 5.0, UE-V 1.0 each received their own updates to Service Pack 1. They are bundled in the new MDOP 2013.</p><p>Read more about it here at the new home for the MDOP team: <a title="https://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx" href="https://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx">https://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx</a></p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Using SONOS as a “Play To” destination from within Windows RT</title>
      <link>https://docs.microsoft.com/archive/blogs/craigf/using-sonos-as-a-play-to-destination-from-within-windows-rt</link>
      <pubDate>Mon, 08 Apr 2013 13:02:35 GMT</pubDate>
      <dc:creator><![CDATA[Craig Forster]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/craigf/2013/04/08/using-sonos-as-a-play-to-destination-from-within-windows-rt/</guid>
      <description><![CDATA[Hi,  &#160;  I recently became the proud owner of the fantastic Sonos PLAYBAR. And while the Sonos...]]></description>
      <content:encoded><![CDATA[<p>Hi,</p>  <p>&#160;</p>  <p>I recently became the proud owner of the fantastic <a href="https://www.sonos.com/shop/products/playbar" target="_blank">Sonos PLAYBAR</a>. And while the Sonos team is <a href="https://ask.sonos.com/sonos/topics/does_sonos_plan_to_support_windows_8_rt_for_surface_tablet" target="_blank">considering creating a Windows 8 App</a> to control their devices, I found a neat little hack to get the DLNA portion of the Sonos to become a “Play To” device from within Windows 8 music apps.</p>  <p>See the blog post here:</p>  <p><a title="https://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/" href="https://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/">https://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/</a></p>  <p>Here are the registry keys I created for the PLAYBAR:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/4466.image_06A99B6E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/4466.image_5F00_06A99B6E.png"><img title="Regedit" style="display: inline; background-image: none;" border="0" alt="Regedit" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/65/80/metablogapi/6560.image_thumb_79CF454F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/6560.image_5F00_thumb_5F00_79CF454F.png" width="515" height="287" />&#160;</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>