<?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>Random thoughts of an Exchange PFE</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/bshukla/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/bshukla/feed.xml</link>
    <description>This blog is my effort to document and share interesting details about Exchange Server as I come across them in field, lab and community.</description>
    <lastBuildDate>Tue, 08 Mar 2016 08:13:59 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Leaving Microsoft</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/leaving-microsoft</link>
      <pubDate>Fri, 28 Sep 2012 05:13:17 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/09/28/leaving-microsoft/</guid>
      <description><![CDATA[And since it’s not 1st April, you can rest assured it’s not a joke.  Leaving Microsoft isn’t a...]]></description>
      <content:encoded><![CDATA[<p>And since it’s not 1st April, you can rest assured it’s not a joke.</p>  <p>Leaving Microsoft isn’t a decision you can make easily. Working for such a company is a privilege. Working with such an amazing talent everyday is something to die for. Working to produce, deploy and support such amazing products is something to be proud of.</p>  <p>So, why am I leaving?</p>  <p>I have been working on design/deploy/manage/support numerous technologies since I started my career about 17 years ago. While in different flavors, I kept eating the same ice-cream. Not that I don’t like ice-cream. I totally LOVE it.</p>  <p>However, it is time for me to do something else. Something different and new. Something that I wasn’t planning for. Something I didn’t think of actively. But pleasant accidents are part of my life. Becoming IT Pro when by education I am a civil engineer was by accident, not planning. Leaving my home in India to face huge unknown and a new culture in US, wasn’t planned but happened in sudden succession of chain of events, pleasant accident and no planning!</p>  <p>And now this. This new role that came along. New role that is taking me into a huge unknown. New challenges that will take me completely out of my comfort zone. And I was taught in my first week at Microsoft that in order to grow, you must look for challenges that take you out of your comfort zone. I guess I took it to heart!</p>  <p>Microsoft has taught me a lot, given me a lot, cared for me a lot and that will never be forgotten. Leaving such a company earns me a label of defector, traitor and all fun names you can call it. However, I have yet to find one person in Microsoft who actually was serious when they said that. Everyone wished me well, offered to stay in touch and reach out if I ever needed their assistance or help. That’s the spirit of Microsoft.</p>  <p>So, where am I going? Clearly, I wish not to announce that here, however, I would say, unlike popular belief that most Microsoft employees leave for major competitors, or start their own business, for me, it’s not the case. I am going to work for a small company that is my type. Young, energetic, agile. They have a good product that has huge potential. The product that I am hoping that in my role I will be able to make even more AWESOME. Even more successful. Even more respected.</p>  <p>Next question you may have is if I am going to continue working on my passion, Exchange and Lync. The answer is yes! I will continue my lifelong learning of such amazing products and will continue to contribute to community through my personal blog <a href="https://www.bhargavs.com" target="_blank">https://www.bhargavs.com</a> as well as the User Group I started few years ago in Philadelphia area: <a href="https://www.phillyexug.org" target="_blank">https://www.phillyexug.org</a>. I will continue delivering training at MCM Exchange rotations. And since I am also a certified trainer (MCT), you may see me delivering MOC training sporadically.</p>  <p>So, if you want to keep in touch, I invite you to follow my random thoughts at my IT playground <a href="https://www.bhargavs.com" target="_blank">https://www.bhargavs.com</a>, connect with me on twitter <a href="https://www.twitter.com/bhargavs" target="_blank">@bhargavs</a> and linked in at <a title="View public profile" href="https://www.linkedin.com/in/bhargavshukla" target="_blank">https://www.linkedin.com/in/bhargavshukla</a>.</p>  <p>I thank you for amazing readership through these years and I hope I was helpful in some meaningful way, or entertaining at the least. I wish you well and hope to see you around. Cheers.</p>]]></content:encoded>
    </item>
    <item>
      <title>Interesting 802.11n discovery</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/interesting-802-11n-discovery</link>
      <pubDate>Thu, 30 Aug 2012 09:12:53 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/08/30/interesting-802-11n-discovery/</guid>
      <description><![CDATA[Off the Exchange/Lync topic train but interesting enough this was for me to pass it on without...]]></description>
      <content:encoded><![CDATA[<p>Off the Exchange/Lync topic train but interesting enough this was for me to pass it on without writing about it.
</p><p>After a long period of laziness and ignorance of my home network, I finally got tired of buffering issues when I stream HD videos I took on vacation and decided to do something about it. I setup Linksys WRVS400N knowing all my devices do support Wireless N including my XBOX360 where I will be watching those videos.
</p><p>Since I can do Wireless N on all my devices, I decided to setup wireless as N-Only instead of mixed B/G/N. Once router was configured, I started with my laptop running Windows 8. As usual, it saw the new network, asked me for password and I thought that was it. Rarely it is though, isn't it? To my surprise, it could not connect to wireless. My Intel Centrino Ultimate-N 6300 AGN was perfectly capable of connecting to N, so why wouldn't it?
</p><p>So I switched the router to G/N mixed mode and the laptop connected immediately. It certainly was something with Wireless N, but what was it?
</p><p>After a bit of research, I found out that The IEEE 802.11n Draft prohibits using High Throughput with WEP or TKIP as the unicast cipher. While I was not using WEP (I had configured WPA security), I did happen to have TKIP as my cipher on WPA! I was now staring at the answer to my problem.
</p><p>As they say, fix is 2 seconds once you find the cause of the problem. It took more than an hour to find the cause but once I did, it took me 2 seconds to switch my settings to WPA2+AES and all of my devices successfully connected!
</p><p>Now on to my vacation videos… cheers. <span style="font-family:Wingdings">J</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Accidental PowerShell 3 Get-Help discovery</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/accidental-powershell-3-get-help-discovery</link>
      <pubDate>Thu, 19 Jul 2012 21:08:00 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/07/19/accidental-powershell-3-get-help-discovery/</guid>
      <description><![CDATA[Get-Help has always been my favorite cmdlet. Anytime I am stuck, I was able to find lot more...]]></description>
      <content:encoded><![CDATA[<p>Get-Help has always been my favorite cmdlet. Anytime I am stuck, I was able to find lot more information about any given cmdlet when I need.</p>
<p>Until today, my favorite feature was Get-Help's &ndash;online parameter. For the cmdlet that have specified online uri of help topic, get-help cmdlet &ndash;online takes you straight to cmdlet help page in your browser, given you have internet connectivity on the machine you are running the cmdlet.</p>
<p>That was until today. Today, I was running get-help cmdlet on one of new servers I just built and looking for help, I typed Get-Help and this is what I got:</p>
<pre class="brush:ps">Do you want to run Update-Help?
The Update-Help cmdlet downloads the newest Help files for Windows PowerShell modules and installs them on your
computer. For more details, see the help topic at https://go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
</pre>
<p>Who in their right mind would say no? <span style="font-family: Wingdings;">J</span></p>
<p>Once I pressed enter, PowerShell happily connected online and downloaded updated help files for each module available and then applied it. It then continued to show me updated help for the cmdlet I asked it for.</p>
<p>I am sure this is going to be short lived favorite as I discover more. What will stay with me is new cmdlet&hellip; Update-Help. Cheers.</p>]]></content:encoded>
    </item>
    <item>
      <title>If Retention Tags weren’t confusing…</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/if-retention-tags-werent-confusing</link>
      <pubDate>Fri, 08 Jun 2012 13:23:00 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/06/08/if-retention-tags-werent-confusing/</guid>
      <description><![CDATA[UPDATE: Please read updated guidance due to changes introduced in SP2 RU4 here:...]]></description>
      <content:encoded><![CDATA[<p></p>
<p><span style="background-color: #ffff00; font-size: medium;">UPDATE: Please read updated guidance due to changes introduced in SP2 RU4 here: <a href="https://blogs.technet.com/b/exchange/archive/2012/08/14/calendar-and-tasks-retention-tag-support-in-exchange-2010-sp2-ru4.aspx">https://blogs.technet.com/b/exchange/archive/2012/08/14/calendar-and-tasks-retention-tag-support-in-exchange-2010-sp2-ru4.aspx</a>. It specifically addresses Calendar items and tasks.</span></p>
<p>I wouldn&rsquo;t be talking about it today!<span style="font-family: Times New Roman; font-size: small;" face="Times New Roman" size="3"> </span></p>
<p>When the topic came up with my colleague, it quickly became a confusing discussion of what&rsquo;s what, what works, what doesn&rsquo;t and why TechNet seems to say something that doesn&rsquo;t work.</p>
<p></p>
<p>So let&rsquo;s start with this article: &ldquo;<a href="https://technet.microsoft.com/en-us/library/bb430780.aspx" target="_blank"><span style="color: #0000ff;" color="#0000ff">How Retention Age is Calculated</span></a>&rdquo;. This clearly states how age is calculated on Calendar items, Tasks, Contacts and other items. Then it immediately mentions in the Note that retention tags aren&rsquo;t supported for the Calendar and Tasks. The Managed Folder Assistant doesn&rsquo;t process items in these folders.</p>
<p></p>
<p>This is really what is a start of confusion. The article &ldquo;<a href="https://technet.microsoft.com/en-us/library/dd297955.aspx" target="_blank"><span style="color: #0000ff;" color="#0000ff">Understanding Retention Tags and Retention Policies</span></a>&rdquo; doesn&rsquo;t mention the same fact (probably to avoid duplication).</p>
<p></p>
<p>The confusion is evident when Bharat specifically spells out in EHLO article &ldquo;<a title="https://blogs.technet.com/b/exchange/archive/2011/08/05/prevent-archiving-of-items-in-a-default-folder-in-exchange-2010.aspx" href="https://blogs.technet.com/b/exchange/archive/2011/08/05/prevent-archiving-of-items-in-a-default-folder-in-exchange-2010.aspx" target="_blank"><span style="color: #0000ff;" color="#0000ff">Prevent archiving of items in a default folder in Exchange 2010</span></a>&rdquo; that Calendar, Tasks and Contacts folders aren't supported.</p>
<p></p>
<p>However, above all, the confusion prevails! So let&rsquo;s clear things up a little bit.</p>
<p></p>
<p>Exchange 2007 feature Managed Folder Policies, aka MRM 1.0 functionality supports Calendars, Tasks etc. However, it has its limitations. MRM 2.0 functionality provides more flexibility so individual folders can have different retention either applied to mailboxes using policy or by user using tags on folders or messages individually. Not to mention, at the cost of being able to process Calendar and Tasks along with Notes and Contacts. In SP1, Notes are processed, however, don&rsquo;t expect more than that!</p>
<p></p>
<p>So if you want to process Calendar items, Tasks or Contacts, you should use Managed Folders. It does mean you won&rsquo;t be able to apply one policy to one folder (i.e. Inbox) and different policy to another (i.e. Calendar). It also means that you can&rsquo;t archive enable the mailbox that has Managed Folders policy applied or you can&rsquo;t apply Managed Folders Policy to mailbox that has archive mailbox. If that is clear, I assume you know by now that Managed Folder Policy can&rsquo;t move anything to archive mailbox. Although, never assume, so previous statement should remove my assumption and clearly tell you what it is!</p>
<p></p>
<p>Conversely, if you apply Default Policy Tags or Retention Policy Tags to a mailbox, Managed Folder Assistant will not process unsupported items. Namely, Calendar, Tasks, Contacts and Notes in Exchange 2010 RTM and Calendar, Tasks and Contacts in Exchange 2010 SP1.</p>
<p></p>
<p>Also worth noting is that you can either apply Managed Folders Policy or Retention Policy Tags (DPT/RPT whatever you call it) but not both to a mailbox. You can apply Managed Folders Policy to one mailbox and Retention Policy Tags to another in same Exchange 2010 database as these settings are per mailbox.</p>
<p></p>
<p>Oh and that &ldquo;<a href="https://technet.microsoft.com/en-us/library/bb430780.aspx" target="_blank"><span style="color: #0000ff;" color="#0000ff">How Retention Age is Calculated</span></a>&rdquo; post isn&rsquo;t incorrect. It correctly states how the age is calculated. Just understand it only applies to Managed Folder Policy.</p>
<p></p>
<p>Clear a mud? Perfect!</p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange Management Shell Error 500 - Internal Server Error</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/exchange-management-shell-error-500-internal-server-error</link>
      <pubDate>Thu, 03 May 2012 22:05:27 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/05/03/exchange-management-shell-error-500-internal-server-error/</guid>
      <description><![CDATA[I have come across this issue enough times that even if it is documented on TechNet it deserves...]]></description>
      <content:encoded><![CDATA[<p>I have come across this issue enough times that even if it is documented on TechNet it deserves mention here.</p>  <p>When you launch Exchange Management Shell or try to connect to an Exchange 2010 Server remotely using PowerShell, you get error “500 – Internal Server Error. There is a problem with the resource you are looking for, and it cannot be displayed.”</p>  <p>Error details also show the following:</p>  <pre class="brush:ps">For more information, see the about_Remote_Troubleshooting Help topic.

    + CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException

    + FullyQualifiedErrorId : PSSessionOpenFailed
</pre>

<p>The other possible errors you may see are the following:</p>

<pre class="brush:ps">The WinRM client cannot process the request. It cannot determine the content type of the HTTP response from the destination computer. The content type is absent or invalid. For more information, see the about_Remote_Troubleshooting Help topic.</pre>

<p>Or</p>

<pre class="brush:ps">Connecting to remote server failed with the following error message: The WinRM client received an HTTP server error status (500), but the remote service did not include any other information about the cause of the failure. For more information, see the about_Remote_Troubleshooting Help topic. It was running the command 'Discover-ExchangeServer -UseWIA $true -SuppressError $true'.</pre>

<p>Or</p>

<pre class="brush:ps">The WinRM client received an HTTP status code of 403 from the remote WS-Management service.</pre>

<p>All of these issues relate to a problem with PowerShell virtual directory on given server not configured properly. If you were to run Exchange Best Practices Analyzer, it alerts about this issues as well.</p>

<p>The resolution is well documented on TechNet article “<a href="https://technet.microsoft.com/en-us/library/ff607221(v=EXCHG.80).aspx" target="_blank">PowerShell Virtual Directory issues cause problems with Exchange Management tools</a>”. I will let you read the solution there, however, I wanted to mention the oddity in my case.</p>

<p>Looking at the error I was getting and mapping it to solution in article didn’t resolve the issue. I had to configure kerberos authentication as mentioned in the article. Once KerbAuth was registered as native module, EMS and remote PowerShell sessions started working.</p>

<p>What my friend mentioned seems so relevant: “Why can’t our lives be just as predictable as computers? While there are some problems in a day, most of it is logical and if you know that logic, you can predict the outcome or fix the issue!”. Amen to that my friend.</p>]]></content:encoded>
    </item>
    <item>
      <title>Certificate revocation checked failed</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/certificate-revocation-checked-failed</link>
      <pubDate>Mon, 30 Apr 2012 14:06:07 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2012/04/30/certificate-revocation-checked-failed/</guid>
      <description><![CDATA[Recently I came across a CAS server that was rebuilt. Think of it as a new server you are...]]></description>
      <content:encoded><![CDATA[<p>Recently I came across a CAS server that was rebuilt. Think of it as a new server you are introducing in your environment.</p>  <p>&#160;</p>  <p>Everything looked good except certificate that we imported. The certificate looked good when looking at validity, issuing authority certificate and other dependencies. However, Exchange Management Console complained:</p>  <blockquote>   <p>“The certificate status could not be determined because the revocation checked failed.”</p> </blockquote>  <p>Since the error seemed clear enough, we checked and verified that we can reach CRL. We could successfully access it and download CRL. We also ensured that there was no proxy servers configured or required, which they weren’t.</p>  <p>However, the server had its own mind.</p>  <p><a href="https://support.microsoft.com/kb/979694" target="_blank">KB979694</a> wasn’t applicable since there was no proxy in the environment.</p>  <p>The only logical thinking here was, why is “Local System” account (which the service uses to get the revocation status) unable to get to CRL. To get to the answer, we needed to check proxy settings of Local System account. How do you do that? You can’t simply start IE as different user!</p>  <p>That exactly is the purpose of this post. I found bits and pieces of information that helped me resolve the issue but not a one step document. In this post, I am trying to put it all together so you have one stop solution.</p>  <p>Here’s how you can fix the issue:</p>  <ol>   <li>Open up command prompt as Administrator</li>    <li>Run “sc create testsvc binpath= &quot;cmd /K start&quot; type= own type= interact”</li>    <ul>     <li>This creates testsvc service which will run as local system and allow interaction with desktop</li>   </ul>    <li>Run “sc start testsvc”</li>    <ul>     <li>The error “[SC] StartService failed 1053” is expected and can be ignored safely</li>   </ul>    <li>Locate “Interactive Services Detection” icon blinking in the taskbar and click “view message”</li>    <li>You are now in a command prompt window running as Local System and you will not see your desktop. The only other visible window is “Interactive Services Detection” window.</li>    <li>Launch Internet Explorer using the following command:</li>    <ul>     <li>&quot;c:\Program Files (x86)\Internet Explorer\iexplore.exe&quot;</li>   </ul>    <li>Internet Explorer may present Set up window. If it does, click “Ask me later”.</li>    <li>We will now check proxy settings. Go to Tools -&gt; Internet options -&gt; Connections -&gt; Lan Settings.</li>    <li>Verify proxy and automatic configuration options and change them to match your environment. In my case we cleared all checkboxes since no proxy existed in environment. </li>    <ul>     <li>In our case, either server build process or a setting from or a GPO was populating incorrect proxy settings.</li>   </ul>    <li>Close Internet Explorer window and return to command prompt.</li>    <li>We will now clean certutil caches.</li>    <li>Run “certutil -urlcache ocsp delete”</li>    <li>Run “certutil -urlcache crl delete”</li>    <li>We’re almost done here. We now have to close and exit out of service.</li>    <li>Type “exit” and press enter to close command prompt that is running as Local System.</li>    <li>Now you should have only one “Interactive Services Detection” window.</li>    <li>Click “Return Now”.</li> </ol>  <p>You are now back to your desktop and we have corrected Internet Explorer settings for Local System (removing proxy configuration that was incorrect). After this, we restarted Exchange Management Console and verified certificate on CAS server in question. Certificate was no longer issuing the warning and we proceeded with assigning the certificate to appropriate services.</p>  <p>It is important to note that refresh time varies from immediate to more than few minutes so don’t fret over certificate still showing the same error. If, however, it takes more than 15 minutes, I would check if all steps were followed as mentioned above and configuration is correct for your environment.</p>  <p>Yet another issue put to bed. On to another.</p>]]></content:encoded>
    </item>
    <item>
      <title>RBAC and Principle of Least Privilege</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/rbac-and-principle-of-least-privilege</link>
      <pubDate>Thu, 15 Dec 2011 14:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2011/12/15/rbac-and-principle-of-least-privilege/</guid>
      <description><![CDATA[Exchange 2010 introduced RBAC as a mechanism to manage access to administrative tasks at granular...]]></description>
      <content:encoded><![CDATA[<p>Exchange 2010 introduced RBAC as a mechanism to manage access to administrative tasks at granular level which was not possible in previous versions of Exchange.</p>  <p>While you may know how to use RBAC to create custom roles that maps to job functions in your environment, one particular feature tends to get easily overlooked, mostly because it is least understood I believe. It is Unscoped Top Level Management Roles.</p>  <p>So, I wrote a blog post on it detailing what it is, and how to configure it. It went live few days ago at <a href="https://blogs.technet.com/b/heyscriptingguy/" target="_blank">Hey, Scripting Guy! blog</a>.</p>  <p>You can read complete article here - <a title="https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/13/use-powershell-and-rbac-to-control-access-to-exchange-server-cmdlets.aspx" href="https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/13/use-powershell-and-rbac-to-control-access-to-exchange-server-cmdlets.aspx">https://blogs.technet.com/b/heyscriptingguy/archive/2012/01/13/use-powershell-and-rbac-to-control-access-to-exchange-server-cmdlets.aspx</a></p>  <p>Enjoy!</p>]]></content:encoded>
    </item>
    <item>
      <title>Updated - Verify Exchange Server Schema Version</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/updated-verify-exchange-server-schema-version</link>
      <pubDate>Thu, 15 Dec 2011 07:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2011/12/15/updated-verify-exchange-server-schema-version/</guid>
      <description><![CDATA[This article was originally posted on my personal blog here. Since I don't actively maintain it...]]></description>
      <content:encoded><![CDATA[<p>This article was originally posted on my personal blog <a href="https://www.bhargavs.com/index.php/2009/11/20/verify-exchange-server-schema-version/" target="_blank">here</a>. Since I don't actively maintain it anymore, I am publishing it here.</p>
<p>When you run Exchange Setup to prepare schema, usually the very next question is, how do I verify schema was updated successfully? Verifying only the values of attributes as mentioned below is not a good verification of Exchange setup completion. This article is intended to only provide reference to attributes and their values.</p>
<p>Let&rsquo;s start back at <strong>Exchange 2003 SP2</strong>.</p>
<p>One of the last actions <strong>setup /forestprep</strong> in Exchange 2003 is to set <strong>objectVersion</strong> attribute on <strong>Exchange organization container</strong> to a value of <strong>6903</strong>. You can verify this using ADSIEdit and navigating to <strong>Configuration NC</strong>, <strong>Exchange organization</strong> object under services\Microsoft Exchange node.</p>
<p>On the other hand, when <strong>setup /domainprep</strong> is run, it sets the <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container to a value of <strong>6936</strong>. You can verify this using ADSIEdit and navigating to <strong>Domain NC</strong>, <strong>Microsoft Exchange System Objects</strong> container.</p>
<p>In <strong>Exchange 2007</strong>, after successful run of <strong>Setup /PrepareSchema</strong> you will find that the attributes mentioned above are not changed! You need to verify the value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong>. The value should be <strong>10637</strong>.</p>
<p>It is only when you run <strong>Setup /PrepareAD</strong> the <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> is updated to a value of <strong>10666</strong>. You will also find that <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC</strong> is set to a value of <strong>10628</strong>.</p>
<p>You will also notice that <strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</p>
<p>Let&rsquo;s briefly review what does Exchange 2007 SP1, SP2 and Exchange 2010 setup update these attribute values to.</p>
<p><strong>Exchange 2007 SP1</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is set to <strong>11116 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>Setup /PrepareAD</strong> sets the <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> is updated to a value of <strong>11221</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC</strong> is also set to the same value of <strong>11221.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</li>
</ul>
<p><strong>Exchange 2007 SP2</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is set to <strong>14622 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>Setup /PrepareAD</strong> sets <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> to a value of <strong>11222</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC </strong>remains unchanged at value<strong> </strong>of <strong>11221.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</li>
</ul>
<p><strong>Exchange 2007 SP3</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is set to <strong>14625 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> remains unchanged at a value of <strong>11222</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC </strong>remains unchanged at value<strong> </strong>of <strong>11221.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</li>
</ul>
<p><strong>Exchange 2010</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is not changed from <strong>14622 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>Setup /PrepareAD</strong> sets <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> to a value of <strong>12640</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC </strong>remains unchanged at value<strong> </strong>of <strong>12639.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</li>
</ul>
<p><strong>Exchange 2010 SP1</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is not changed from <strong>14726 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>Setup /PrepareAD</strong> sets <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> to a value of <strong>13214</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC </strong>is changed to value<strong> </strong>of <strong>13040.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values. <!--EndFragment--></li>
</ul>
<p><strong>Exchange 2010 SP2</strong></p>
<ul>
<li>Value of <strong>rangeUpper</strong> attribute of <strong>ms-Exch-Schema-Version-Pt</strong> object in <strong>Schema NC</strong> is changed to <strong>14732 </strong>when<strong> setup /PrepareSchema </strong>is run successfully<strong>.</strong></li>
<li><strong>Setup /PrepareAD</strong> sets <strong>objectVersion</strong> attribute of <strong>Organization container </strong>in <strong>Configuration NC</strong> to a value of <strong>14247</strong>. <strong>objectVersion</strong> attribute on <strong>Microsoft Exchange System Objects</strong> container in <strong>Domain NC </strong>remains unchanged at value<strong> </strong>of <strong>13040.</strong></li>
<li><strong>Setup /PrepareDomain</strong> does not have any effect on these attribute values.</li>
</ul>
<p>When reading this article, consider the fact that the lab setup I used was upgraded from Exchange 2003 schema to Exchange 2007 schema and then to Exchange 2010/SP1 schema. Service Pack 2 was tested in Exchange 2003 environment with no Exchange 2007 or Exchange 2010 Service Pack 1. This should not affect any attribute values mentioned above however I cannot guarantee since I have not tested it.</p>]]></content:encoded>
    </item>
    <item>
      <title>New pre-requisites for Exchange 2010 Service Pack 2 and CAS Role</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/new-pre-requisites-for-exchange-2010-service-pack-2-and-cas-role</link>
      <pubDate>Tue, 06 Dec 2011 07:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2011/12/06/new-pre-requisites-for-exchange-2010-service-pack-2-and-cas-role/</guid>
      <description><![CDATA[With release of Service Pack 2 for Exchange Server 2010, you gain few new features such as...]]></description>
      <content:encoded><![CDATA[<p>With release of <a href="https://go.microsoft.com/fwlink/?LinkID=232843" target="_blank">Service Pack 2</a> for Exchange Server 2010, you gain few new features such as <a href="https://technet.microsoft.com/en-us/library/hh529924.aspx#BKMK_CrossSiteSilent" target="_blank">Cross-Site Silent Redirection for OWA</a>, <a href="https://technet.microsoft.com/en-us/library/hh529924.aspx#BKMK_AddressBook" target="_blank">Address Book Policies</a>, <a href="https://technet.microsoft.com/en-us/library/hh529924.aspx#BKMK_MailboxAutoMap" target="_blank">Mailbox Auto-Mapping</a> and few other additions (<a href="https://technet.microsoft.com/en-us/library/hh529924.aspx" target="_blank">What&rsquo;s new in Exchange 2010 SP2</a>).</p>
<p>With it, comes new pre-requisites if you are installing/updating Client Access Server (CAS) role.</p>
<p>You will need to install the following components on the server that will be running CAS role (or existing CAS you are planning to update):</p>
<p>ISAPI Filters - Web-ISAPI-Filter <br />IIS 6 WMI Compatibility - Web-WMI <br />ASP.Net - Web-Asp-Net</p>
<p>You can install them as described in <a href="https://technet.microsoft.com/en-us/library/bb691354.aspx" target="_blank">Exchange 2010 Prerequisites</a> article. If you want to install these components on existing CAS server before upgrade to SP2, you can launch PowerShell as Administrator and then run:</p>
<pre class="brush: ps">Import-Module ServerManager
Add-WindowsFeature Web-ISAPI-Filter,Web-WMI,Web-Asp-Net</pre>
<p>Note this post refers only to Windows 2008 R2. I haven't checked if requirements are different for Windows 2008 (without R2) servers. They are, however, detailed in the TechNet articles linked above.</p>
<p>Enjoy!</p>]]></content:encoded>
    </item>
    <item>
      <title>Script to configure static ports on Exchange Server 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/bshukla/script-to-configure-static-ports-on-exchange-server-2010</link>
      <pubDate>Fri, 21 Oct 2011 13:45:35 GMT</pubDate>
      <dc:creator><![CDATA[Bhargav Shukla [KEMP]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bshukla/2011/10/21/script-to-configure-static-ports-on-exchange-server-2010/</guid>
      <description><![CDATA[There is nothing new about this. If you have been reading about Exchange Server 2010 or have it...]]></description>
      <content:encoded><![CDATA[<p>There is nothing new about this. If you have been reading about Exchange Server 2010 or have it deployed with hardware load balancer, chances are, you have read <a href="https://social.technet.microsoft.com/wiki/contents/articles/configure-static-rpc-ports-on-an-exchange-2010-client-access-server.aspx" target="_blank">how to configure static ports</a> on Exchange Server 2010 on <a href="https://social.technet.microsoft.com/wiki/contents/articles/exchange-2010-overview.aspx" target="_blank">TechNet Social wiki for Exchange 2010</a>. Chances are that you have also used my script (referenced in the post above) to set static ports on your servers. Lastly, chances are that you have read all about it on my previous post <a href="https://www.bhargavs.com/index.php/2010/05/19/script-to-configure-static-ports-on-exchange-server-2010/" target="_blank">here</a>.</p>  <p>If so, why am I even talking about it today?</p>  <p>Well, if you haven’t noticed a few things already, the way you change ports is different in RTM and SP1. My script didn’t account for SP1 originally when it was written. Was SP1 even existed then?</p>  <p>The other reason is my nature of always learning something and making things better! I noticed how my code was inefficient now that I know a few more things about PowerShell (yeah that’s not funny). I decided to write it more efficiently and that basically meant a complete overhaul of my old script.</p>  <p>The new script is now more user friendly! It uses cmdletbinding and comment based help. It means, for you as a user, you can just type:</p>  <pre class="brush: ps">Get-Help Set-StaticPorts.ps1 –examples</pre>

<p>or</p>

<pre class="brush: ps">Get-Help Set-StaticPorts.ps1 –Full</pre>

<p>The script now validates parameters using ValidateRange and ValidateScript. I think that’s cool! It also uses 59531 and 59532 by default now. How about using recommended ports instead of random ones I used in my previous script? I think that’s even more cool!</p>

<p>The script uses all the right write-* cmdlets now instead of write-host. So now you can use tee-object and won’t end up with empty output file. Yes you loose cool colors I used with write-host but hey, you are trying to set ports on your Exchange Server 2010. For colors you would go see Macy’s Fireworks on New Year, right? <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/82/34/metablogapi/5773.wlEmoticon-smile_356F5554.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-82-34-metablogapi/5773.wlEmoticon_2D00_smile_5F00_356F5554.png" /></p>

<p>Oh and last but probably the most important change is inclusion of –auto and –whatif functionality!</p>

<p>-WhatIf is obvious. Script will tell you what it is doing without actually making any changes.</p>

<p>-Auto will automatically find all your Exchange 2010 CAS servers and Exchange 2010 Mailbox servers that are hosting Public Folders. It will then change ports on CAS Server for RPC CA service and Exchange AB service. On Mailbox servers it will only change RPC CA ports as Exchange AB service doesn’t exist on Mailbox only role.</p>

<p>If you combine all this with –Force, you can also silence the script. It won’t ask you for any confirmation and will change ports you specify (or use defaults) and restart the services! Isn’t that awesome!</p>

<p>So go download the script from here: <a href="https://cid-14adc5cf1e0cbccf.skydrive.live.com/download.aspx/.Public/Exchange 2010/Scripts/Set-StaticPorts.ps1" target="_blank">Set-StaticPorts.ps1</a> and give it a go. As always, let me know if you find any issues and I will be happy to fix it.</p>]]></content:encoded>
    </item>
  </channel>
</rss>