<?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>SUKUM: Exchange Knowledge Sharing</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sukum/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sukum/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:47:25 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>List mailboxes with delegates.</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/list-mailboxes-with-delegates</link>
      <pubDate>Thu, 02 Jun 2016 14:41:20 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/?p=255</guid>
      <description><![CDATA[The script checks for the mailbox with delegates. If delegates are available , it gather delegate...]]></description>
      <content:encoded><![CDATA[The script checks for the mailbox with delegates. If delegates are available , it gather delegate details and exports the details to CSV file.

&nbsp;

&nbsp;
<div class="scriptcode">
<div class="pluginEditHolder">
<div class="title">PowerShell</div>
<pre class="powershell">write<span class="powerShell__operator">-</span>host <span class="powerShell__string">"The Script Started and gathering mailbox list"</span> <span class="powerShell__operator">-</span>foregroundcolor <span class="powerShell__string">"Green"</span>  
<span class="powerShell__variable">$Combine</span>=@(); 
<span class="powerShell__variable">$MBXList</span> =  get<span class="powerShell__operator">-</span>mailbox   <span class="powerShell__operator">-</span>resultsize Unlimited <span class="powerShell__operator">|</span> where {(<span class="powerShell__operator">!</span><span class="powerShell__variable">$_</span>.name.startswith(<span class="powerShell__string">"SystemMailbox"</span>)) <span class="powerShell__operator">-</span>and (<span class="powerShell__operator">!</span><span class="powerShell__variable">$_</span>.name.startswith(<span class="powerShell__string">"FederatedEmail"</span>)) <span class="powerShell__operator">-</span>and (<span class="powerShell__operator">!</span><span class="powerShell__variable">$_</span>.name.startswith 
 
(<span class="powerShell__string">"DiscoverySearchMailbox"</span>)) <span class="powerShell__operator">-</span>and (<span class="powerShell__operator">!</span><span class="powerShell__variable">$_</span>.name.startswith(<span class="powerShell__string">"Microsoft System"</span>))}  
 
<span class="powerShell__variable">$MBXList</span> <span class="powerShell__operator">|</span> <span class="powerShell__keyword">foreach</span><span class="powerShell__operator">-</span>object { 
 
    <span class="powerShell__variable">$curMBX</span>=<span class="powerShell__variable">$_</span>  
    <span class="powerShell__variable">$Alias</span> = <span class="powerShell__variable">$curMBX</span>.Alias  
    <span class="powerShell__variable">$DB</span> = <span class="powerShell__variable">$curMBX</span>.database 
    <span class="powerShell__variable">$SAName</span> = <span class="powerShell__variable">$curMBX</span>.samaccountname 
    <span class="powerShell__variable">$DName</span> = <span class="powerShell__variable">$curMBX</span>.DisplayName 
    <span class="powerShell__variable">$PEmail</span> = <span class="powerShell__variable">$curMBX</span>.PrimarySMTPAddress 
 
<span class="powerShell__cmdlets">write-progress</span> <span class="powerShell__operator">-</span>activity <span class="powerShell__string">"Checking the MBX for delegates "</span> <span class="powerShell__operator">-</span>status <span class="powerShell__string">"Currently processing the MBX(alias) :     $Alias"</span> <span class="powerShell__operator">-</span>percentcomplete ((<span class="powerShell__variable">$curgrpmplt</span><span class="powerShell__operator">/</span> 
 
<span class="powerShell__variable">$MBXList</span>.count)<span class="powerShell__operator">*</span>100)     
     
    <span class="powerShell__variable">$WithDel</span> = Get<span class="powerShell__operator">-</span>CalendarProcessing  <span class="powerShell__variable">$Alias</span> <span class="powerShell__operator">|</span> where{<span class="powerShell__variable">$_</span>.resourcedelegates <span class="powerShell__operator">-</span>notlike <span class="powerShell__string">""</span>}  
 
 
        <span class="powerShell__keyword">if</span>((<span class="powerShell__variable">$WithDel</span><span class="powerShell__operator">|</span>measure).count <span class="powerShell__operator">-</span>gt 0) 
        { 
 
        <span class="powerShell__variable">$DelDN</span> = <span class="powerShell__variable">$WithDel</span>.ResourceDelegates <span class="powerShell__operator">|</span> <span class="powerShell__keyword">ForEach</span> { <span class="powerShell__variable">$_</span>.DistinguishedName }  
        <span class="powerShell__variable">$DelDN</span> <span class="powerShell__operator">|</span> <span class="powerShell__keyword">foreach</span><span class="powerShell__operator">-</span>object { 
        <span class="powerShell__variable">$DelLst</span> = <span class="powerShell__cmdlets">New-Object</span> Object 
        <span class="powerShell__variable">$curDel</span>=<span class="powerShell__variable">$_</span> 
 
        <span class="powerShell__variable">$DelMBX</span>=Get<span class="powerShell__operator">-</span>mailbox <span class="powerShell__operator">-</span>identity <span class="powerShell__variable">$curDel</span> 
        <span class="powerShell__variable">$DelName</span>=<span class="powerShell__variable">$DelMBX</span>.Name 
        <span class="powerShell__variable">$DelDName</span>=<span class="powerShell__variable">$DelMBX</span>.DisplayName 
 
        <span class="powerShell__variable">$DelPEmail</span>=<span class="powerShell__variable">$DelMBX</span>.PrimarySMTPAddress 
 
 
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"OwnerName"</span> <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$Alias</span> <span class="powerShell__operator">-</span>ea silentlycontinue  
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"OwnerSamAccountName"</span>  <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$SAName</span>  <span class="powerShell__operator">-</span>ea silentlycontinue  
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"OwnerDisplayName"</span>  <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$DName</span>      <span class="powerShell__operator">-</span>ea silentlycontinue  
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"OwnerEmail"</span>  <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$PEmail</span>   <span class="powerShell__operator">-</span>ea silentlycontinue  
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"DelegateDisplayName"</span>  <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$DelDName</span>  <span class="powerShell__operator">-</span>ea silentlycontinue  
<span class="powerShell__cmdlets">add-member</span> <span class="powerShell__operator">-</span>input <span class="powerShell__variable">$DelLst</span> <span class="powerShell__operator">-</span>membertype noteproperty <span class="powerShell__operator">-</span>name <span class="powerShell__string">"DelegateEmail"</span>  <span class="powerShell__operator">-</span>value <span class="powerShell__variable">$DelPEmail</span>  <span class="powerShell__operator">-</span>ea silentlycontinue      
<span class="powerShell__com">##$DelLst | select-object OwnerName,OwnerSamAccountName,OwnerDisplayName,OwnerEmail,DelDisplayName,DelEmail | Export-csv -path c:\test\test.txt -append</span> 
    <span class="powerShell__variable">$combine</span><span class="powerShell__operator">+</span>=<span class="powerShell__variable">$DelLst</span>      
                    } 
 
  
 
        }  
<span class="powerShell__variable">$curgrpmplt</span><span class="powerShell__operator">+</span><span class="powerShell__operator">+</span> 
} 
<span class="powerShell__variable">$combine</span> <span class="powerShell__operator">|</span> <span class="powerShell__cmdlets">Export-csv</span> OwnerDelegateList.csv 
write<span class="powerShell__operator">-</span>host <span class="powerShell__string">"The Script completed"</span> <span class="powerShell__operator">-</span>foregroundcolor <span class="powerShell__string">"Green"</span></pre>
</div>
</div>
<div class="endscriptcode"></div>
&nbsp;

What the script does,

- Script collects the list of mailboxes.

- Checks for delegates for each mailbox.

- If the delegates present, then the details are exported to CSV file.
<div class="endscriptcode">- Please make the changes in below location in the script to your need,</div>
<div>   $combine | Export-csv OwnerDelegateList.csv</div>
- The scripted tested with Exchange 2010 and Windows 2008 R2.

- You could download the script from <a href="https://gallery.technet.microsoft.com/office/List-mailboxes-with-6686d352">https://gallery.technet.microsoft.com/office/List-mailboxes-with-6686d352</a>

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>List DL with No Member and Send Email notification to DL owners.</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/list-dl-with-no-member-and-send-email-notification-to-dl-owners</link>
      <pubDate>Mon, 23 May 2016 14:52:54 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/?p=215</guid>
      <description><![CDATA[The script gives list of DLs that has NO member. The script is NOT intended to give nested groups....]]></description>
      <content:encoded><![CDATA[The script gives list of DLs that has NO member. The script is NOT intended to give nested groups. The output of the script will give only DL name that has NO member   and sends mail to DL Owner.

$memGrpCnt=0
$mgrby="NotSet"

$grplst=get-distributiongroup -ResultSize unlimited

$grplst | foreach-object {

$curgrpmplt++

$curgrp=$_

$grplstls=$curgrp.alias
$mgrby = $curgrp.managedby

$dn= $curgrp.displayname

write-progress -activity "Checking the DL to calculate " -status "Currently processing the DL(alias) :     $grplstls" -percentcomplete (($curgrpmplt/

$grplst.count)*100)


$memGrpCnt=@(get-distributiongroupmember $curgrp.alias -ResultSize unlimited).count

if ($memGrpCnt -eq 0)  {

if ($mgrby -ne $null) {

$t = $mgrby
$t | foreach {

$Mby = $_.Name
$MbyMail = get-recipient $Mby | select PrimarySmtpAddress |ft -HideTableHeaders | out-string
write-host $dn,$memGrpCnt,($MbyMail).trim()
"$dn,$memGrpCnt",($MbyMail).trim() | out-file -filepath C:\test\DLwithGrp.txt -append

$tempmsg= [string] (get-content ("c:\NoMEMMSG.htm"))

$tempmsg = $tempmsg -replace "NewUser00",$Mby
$tempmsg = $tempmsg -replace "DL00",$dn



send-mailmessage -from administrator1@exchange2010.com -to ($MbyMail).trim() -subject "No member DL !!!" -body $tempmsg  -BodyAsHtml -SmtpServer

"192.168.0.41"

}
}
else {
$Mby = "Unknown"


}

$memGrpCnt=0

}

else  {  $memGrpCnt=0  }

}
write-host "The Script completed" -foregroundcolor "Green"

&nbsp;

&nbsp;
<div class="endscriptcode"> What the script does,</div>
<div class="endscriptcode">- It takes all the DLs and stores in $grplst.</div>
<div class="endscriptcode">- Then loops thru each DL to check member count</div>
<div class="endscriptcode">- If member count equal to zero, script picks the owners and sends email.</div>
<div class="endscriptcode">- All the owners will receive email.</div>
<div class="endscriptcode">- Also script updates the text file with DL with zero count member and email address of owner.</div>
<div class="endscriptcode">- The script uses html file to email</div>
<div class="endscriptcode">- You may receive error :  5.7.1 Client was not authenticated while sending error, while running script. This can be avoided by creating new receive connector and set the Anonymous Users box checked under Permission Groups and also do not foget to add IP address of the machine from which the script runs. If the option does not sound good, pls use get-credential option.</div>
<div class="endscriptcode">- Please make the changes in below location in the script to your need,</div>
<div class="endscriptcode">   &gt; "$dn,$memGrpCnt",($MbyMail).trim() | out-file -filepath <strong>C:\test\DLwithGrp.txt</strong> -append</div>
<div class="endscriptcode">   &gt; $tempmsg= [string] (get-content <strong>("c:\NoMEMMSG.htm")</strong>)</div>
<div class="endscriptcode">
<div>   &gt; send-mailmessage -from <strong>administrator1@exchange2010.com</strong>-to ($MbyMail).trim() -subject "No member DL !!!" -body $tempmsg  -BodyAsHtml-<strong>SmtpServer</strong>
<div><strong>"192.168.0.41"</strong></div>
<div>- NewUser00 and DL00 in html file are place holder.</div>
<div>- The scripted tested with Exchange 2010 and Windows 2008 R2.</div>
<div></div>
<div>You can download the script from : <a title="Download" href="https://gallery.technet.microsoft.com/office/Script-to-List-DL-with-No-5db0c44f">https://gallery.technet.microsoft.com/office/Script-to-List-DL-with-No-5db0c44f</a></div>
<div></div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>A script to list DLs that has MailUniversalDistributionGroup as member</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/a-script-to-list-dls-that-has-mailuniversaldistributiongroup-as-member</link>
      <pubDate>Sun, 28 Jun 2015 23:18:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2015/06/28/a-script-to-list-dls-that-has-mailuniversaldistributiongroup-as-member/</guid>
      <description><![CDATA[The script gives list of DLs that has MailUniversalDistributionGroup as member. The script is NOT...]]></description>
      <content:encoded><![CDATA[<p>The script gives list of DLs that has MailUniversalDistributionGroup as member. The script is NOT intended to give nested groups. The output of the script will give only DL name that has MailUnitversalDistributionGroup as member and count of member MailUniversalDistributionGroup. The count does not include DDL.</p>
<p>&nbsp;</p>
<p>Output looks as ,</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/OutPut.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/OutPut.png" border="0" /></a></p>
<p></p>
<p>The Script :</p>
<p>&nbsp;<span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>=0&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$grplst</span></span>=get<span class="powerShell__operator"><span style="color:#808080">-</span></span>distributiongroup&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>ResultSize&nbsp;unlimited&nbsp;&nbsp;&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$grplst</span></span>&nbsp;<span class="powerShell__operator"><span style="color:#808080">|</span></span>&nbsp;<span class="powerShell__keyword"><strong><span style="color:#006699">foreach</span></strong></span><span class="powerShell__operator"><span style="color:#808080">-</span></span>object&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$curgrpmplt</span></span><span style="color:#808080"><span class="powerShell__operator">+</span><span class="powerShell__operator">+</span></span>&nbsp;&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$curgrp</span></span>=<span class="powerShell__variable"><span style="color:#aa7700">$_</span></span>&nbsp; &nbsp;&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$grplstls</span></span>=<span class="powerShell__variable"><span style="color:#aa7700">$curgrp</span></span>.alias&nbsp;</p>
<p><span class="powerShell__variable"><span style="color:#aa7700">$dn</span></span>=&nbsp;<span class="powerShell__variable"><span style="color:#aa7700">$curgrp</span></span>.displayname&nbsp;</p>
<p><span class="powerShell__cmdlets"><strong><span style="color:#006699">write-progress</span></strong></span>&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>activity&nbsp;<span class="powerShell__string"><span style="color:#0000ff">&quot;Checking&nbsp;the&nbsp;DL&nbsp;to&nbsp;calculate&nbsp;&quot;</span></span>&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>status&nbsp;&quot;Currently&nbsp;processing&nbsp;the&nbsp;DL(alias)&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp; <span class="powerShell__variable"><span style="color:#aa7700">$grplstls</span></span>&quot;&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>percentcomplete&nbsp;((<span class="powerShell__variable"><span style="color:#aa7700">$curgrpmplt</span></span><span class="powerShell__operator"><span style="color:#808080">/</span></span><span class="powerShell__variable"><span style="color:#aa7700">$grplst</span></span>.count)<span class="powerShell__operator"><span style="color:#808080">*</span></span>100)&nbsp;&nbsp; <span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>=@(get<span class="powerShell__operator"><span style="color:#808080">-</span></span>distributiongroupmember&nbsp;<span class="powerShell__variable"><span style="color:#aa7700">$curgrp</span></span>.alias&nbsp;<span class="powerShell__operator"><span style="color:#808080">|</span></span>&nbsp;where{<span class="powerShell__variable"><span style="color:#aa7700">$_</span></span>.recipienttype&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>eq&nbsp;<span class="powerShell__string"><span style="color:#0000ff">&quot;MailUniversalDistributionGroup&quot;</span></span>}).count&nbsp; &nbsp;</p>
<p><span class="powerShell__keyword"><strong><span style="color:#006699">if</span></strong></span>&nbsp;(<span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>gt&nbsp;0)&nbsp; {&nbsp;</p>
<p>write<span class="powerShell__operator"><span style="color:#808080">-</span></span>host&nbsp;<span class="powerShell__variable"><span style="color:#aa7700">$dn</span></span>,<span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>&nbsp; <span class="powerShell__string"><span style="color:#0000ff">&quot;$dn,$memGrpCnt&quot;</span></span>&nbsp;<span class="powerShell__operator"><span style="color:#808080">|</span></span>&nbsp;out<span class="powerShell__operator"><span style="color:#808080">-</span></span>file&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>filepath&nbsp;C:\test\DLwithGrp.txt&nbsp;<span class="powerShell__operator"><span style="color:#808080">-</span></span>append&nbsp; <span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>=0&nbsp;</p>
<p>}&nbsp;</p>
<p><span class="powerShell__keyword"><strong><span style="color:#006699">else</span></strong></span>&nbsp; {&nbsp; <span class="powerShell__variable"><span style="color:#aa7700">$memGrpCnt</span></span>=0&nbsp; }&nbsp;</p>
<p>}&nbsp;</p>
<div class="endscriptcode">&nbsp;What the script does,</div>
<div class="endscriptcode"></div>
<div class="endscriptcode">- It takes all the DLs and stores in $grplst.</div>
<div class="endscriptcode">- Then gets into foreach loop to check each DL membership.</div>
<div class="endscriptcode">- As it is required to give progress percentage , additional variables like $curgrpmplt,$grplstls created.</div>
<div class="endscriptcode">- It uses get-distributiongroupmember command to count the group member.</div>
<div class="endscriptcode">- If DL has a group as member, then it prints DL Name and count on the screen, then writes to a file.</div>
<div class="endscriptcode"></div>
<div class="endscriptcode"></div>
<div class="endscriptcode">Requirement,</div>
<div class="endscriptcode"></div>
<div class="endscriptcode">- The script is to be executed from Exchange Management Shell</div>
<div class="endscriptcode">- The output is stored to a file. So you need to modify the location of the file &nbsp;in the script ie. &quot;c:\test\DLwithGrp.txt&quot; should be changed to existing path.</div>
<div class="endscriptcode"></div>
<div class="endscriptcode">Download:</div>
<div class="endscriptcode"></div>
<div class="endscriptcode">You can download the script from : <a href="https://gallery.technet.microsoft.com/office/A-script-to-list-DLs-that-2b0497a0">https://gallery.technet.microsoft.com/office/A-script-to-list-DLs-that-2b0497a0</a></div>]]></content:encoded>
    </item>
    <item>
      <title>Send Welcome Email to New Mailbox / New Users.</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/send-welcome-email-to-new-mailbox-new-users</link>
      <pubDate>Thu, 10 Jul 2014 05:57:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2014/07/10/send-welcome-email-to-new-mailbox-new-users/</guid>
      <description><![CDATA[*** Updated to include Enable-Mailbox and use PrimarySMTPAddress ***
Take Away:
- There are many...]]></description>
      <content:encoded><![CDATA[<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small;background-color:#ffff00"><strong>*** Updated to include Enable-Mailbox and use PrimarySMTPAddress ***<br /></strong></span></p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>Take Away:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial, helvetica, sans-serif;font-size:small">- There are many ways to send welcome emails in Exchange 2010/2013.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">- Using Cmdlet Extension is one of the ways to send welcome email.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">- The blog explains how to setup Welcome email thru Cmdlet Extension.</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>Let&rsquo;s understand how to configure Exchange Server to send welcome email:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong></strong>&nbsp;</span></p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>What is Cmdlet Extension Agents?</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Cmdlet extension agents are components in Microsoft Exchange Server 2013/Exchange Server 2010 invoked by Exchange 2013/2010 cmdlets when the cmdlets run. Every time an Exchange cmdlet is run, the cmdlet calls the Scripting Agent cmdlet extension agent. When this agent is called, the cmdlet checks whether any scripts are configured to be called by the cmdlet. If a script should be run for a cmdlet, the cmdlet tries to call any APIs defined in the script. Cmdlet extension agents are available on any server role.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">For more information on this please refer the link : <a href="https://technet.microsoft.com/en-us/library/dd335054.aspx"><span style="color:#0563c1">https://technet.microsoft.com/en-us/library/dd335054.aspx</span></a></span></p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Caution</strong><strong>: </strong></span></p>
</td>
</tr>
<tr>
<td>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">When you enable the Scripting Agent cmdlet extension agent, the agent is called every time a cmdlet is run on a server running Exchange 2010. This includes not only cmdlets run directly by you in the Exchange Management Shell, but also cmdlets run by Exchange services, the Exchange Management Console (EMC), and the Exchange Control Panel (ECP). We strongly recommend that you test your scripts and any changes you make to the configuration file, before you copy your updated configuration file to your Exchange 2010 servers and enable the Scripting Agent cmdlet extension agent.</span></p>
</td>
</tr>
</tbody>
</table>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>Implementation: </strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">As you got an idea on the Cmdlet Extension Agent, I will go ahead and explain how we can use the feature to generate welcome email for the new mailboxes that we create.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">When we create new mailbox in Exchange 2010/2013, &nbsp;new-mailbox command is used (whether it is Exchange Management Shell or Exchange Management Console). You can enhance the behavior of the command by using Cmdlet Extension. It is like triggering a script whenever new-mailbox command is used.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">In order to use the feature, we need to,</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deploy XML file on all the exchange servers.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &ldquo;Scripting Agent&rdquo;.</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>How&nbsp;to&nbsp;deploy XML files?</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">On all the exchange servers, the exchange setup copies the file &quot;ScriptingAgentConfig.xml.sample&quot; to&nbsp;<span>&lt;installation path&gt;\Bin\CmdletExtensionAgents\</span></span><span style="font-family:arial,helvetica,sans-serif;font-size:small">. &nbsp;The file is a kind of sample/template. We can modify the file to meet our requirement or we can make our own XML file. I have detailed the steps to modify the sample file to send welcome email.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong><span style="font-family:arial,helvetica,sans-serif;font-size:small"><span style="text-decoration:underline"><strong>Note: </strong></span></span></strong><span style="font-family:arial,helvetica,sans-serif;font-size:small">The sample XML contains other feature blocks. If you are appending the below steps as it is without making changes to other feature blocks, you may receive unexpected warning while create new mailbox. If you are not using cmdlet-extension sample file for any other purpose/tasks, I would suggest you keep only the Welcome Email Feature block as it is in XML file provided in the attached zip file.</span><strong><span style="font-family:arial,helvetica,sans-serif;font-size:small"><br /></span></strong>&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Step #1:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Create a welcome email template in html format that will be sent as welcome email or use the exiting template attached to the blog to suit your requirement. Easiest way to create welcome email template would be, open new message in Outlook, compose the email and save it as HTML.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong></strong>&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Step #2:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Make a copy of the existing XML file and rename it to ScriptingAgentConfig.xml. Keep the file in <span>&lt;installation path&gt;\Bin\CmdletExtensionAgents\</span>.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong></strong>&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Step #3:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Copy and paste the below script into appropriate location inside the XML file and Save it. It can be inserted between &lt;/feature&gt; &hellip;. &nbsp;&lt;Feature Name &hellip;.&gt; or at the beginning of the XML file (after &lt;Configuration Version=&rdquo;1.0&rdquo;&gt;).</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"># Script to send new email starts here</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"></span>&nbsp;</p>
<p>&lt;Feature Name=&quot;Welcome Email&quot; Cmdlets=&quot;New-Mailbox,Enable-Mailbox&quot;&gt;</p>
<p>&nbsp; &lt;ApiCall Name=&quot;OnComplete&quot;&gt;</p>
<p>&nbsp;&nbsp; if($succeeded)&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($provisioningHandler.TaskName -eq &quot;New-Mailbox&quot;) {</p>
<p># Replace place holder.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $USRdname=$provisioningHandler.UserSpecifiedParameters[&quot;Name&quot;]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tempmsg= [string] (get-content (<span style="background-color:#ffff00">&quot;c:\welcome\WelcomeMSG.htm&quot;</span>))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tempmsg = $tempmsg -replace &quot;NewUser00&quot;,$USRdname</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Picking Primary SMTP address,saving to $pSMTP to send email.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Ualias=$provisioningHandler.UserSpecifiedParameters[&quot;Alias&quot;]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pSMTP = (get-mailbox $Ualias | select-object PrimarySMTPAddress | Format-Wide | Out-String ).trim()</p>
<p>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>elseif ($provisioningHandler.TaskName -eq &quot;Enable-Mailbox&quot;) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p># Picking Primary SMTP address,saving to $pSMTP to send email.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $eUalias=$provisioningHandler.UserSpecifiedParameters[&quot;Alias&quot;]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $dName = (get-mailbox $eUalias | select-object Name | Format-Wide | Out-String ).trim()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pSMTP = (get-mailbox $eUalias | select-object PrimarySMTPAddress | Format-Wide | Out-String ).trim()</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Replace place holder.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tempmsg= [string] (get-content (&quot;<span style="background-color:#ffff00">c:\welcome\WelcomeMSG.htm</span>&quot;))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tempmsg = $tempmsg -replace &quot;NewUser00&quot;,$dName</p>
<p>}</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Please give the correct HUB serve IP address in the following line.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $HUBServer=&quot;<span style="background-color:#ffff00">20.1.1.2</span>&quot;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $EMail =new-object net.mail.mailmessage</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $HUBTask = new-object net.mail.smtpclient($HUBServer)</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Email with attachment will be sent from the address given in the following line.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $EMail.From=&quot;<span style="background-color:#ffff00">administrator@exchange2010.com</span>&quot;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Email with attachment will be sent TO the address given in the following line.</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $EMail.To.add($pSMTP)</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Email Subject and Body details are specified in following lines</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $EMail.Subject=&quot;Welcome to Contoso IT !!!&quot;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $EMail.Body= $tempmsg</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Email.IsBodyHtml = $true</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $HUBTask.send($EMail)</p>
<p>&nbsp;&nbsp; }</p>
<p>&nbsp; &lt;/ApiCall&gt;</p>
<p>&lt;/Feature&gt;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"># Script to send new email ends here</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Step #4:</strong></span></p>
<p style="text-align:justify"><span style="font-size:small"><span style="font-family:arial, helvetica, sans-serif">Make the necessary changes in the script to suite your&nbsp;environment.</span></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"></span>&nbsp;</p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">**** Give the path of the template file you created in Step #1. ****</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">$tempmsg= [string] (get-content (&quot;<span style="background-color:#ffff00">c:\welcome\WelcomeMSG.htm</span>&quot;))</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">**** Give your HUB server IP address and Make sure that the HUB server accept connection ****</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">$HUBServer=&quot;<span style="background-color:#ffff00">10.1.1.2</span>&quot;</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">**** Give email address from which you want to send welcome message ****</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">$WelcomeEMail.From=<span style="background-color:#ffff00"><a href="mailto:administrator@e2k10.com"><span style="color:#0563c1;background-color:#ffff00">administrator@e2k10.com</span></a></span></span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">**** Change the subject of the welcome message, if you wish ****</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">$WelcomeEMail.Subject=&quot;<span style="background-color:#ffff00">Welcome to Contoso IT !!!</span>&quot;</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>What the script does?</strong></span></p>
<p style="text-align:justify"></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">When a new mailbox is created either with new-mailbox or enable-mailbox, on its successful completion, the script will be called. The script works along with email template available in &quot;c:\welcome\WelcomeMSG.htm&quot;. It can be modified to meet your requirement.</span></p>
<p style="text-align:justify"></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">To start with,</span></p>
<p style="text-align:justify"></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">It checks whether new-mailbox or enable-mailbox command is used. If new-mailbox is used, Name parameter value will be stored in variable $USRDname.In addition, we also store the primaySMTPAddress to the variable $pSMTP. When enable-mailbox is used, Alias value will be stored in $eUalias instead of Name. As we need to send email, we use get-mailbox command to retrieve name,primarySMTPAddress and store those in $dName,$pSMTP variables.</span></p>
<p style="text-align:justify"></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">Then it reads the content of template &quot;c:\welcome\WelcomeMSG.htm&quot; and stores in the variable $tempmsg. As the template is set with place holder &quot;NewUser00&quot;, the script uses &ldquo;-replace&rdquo; to update the place holder &ldquo;NewUser00&rdquo; with the display name.</span></p>
<p style="text-align:justify"></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">Later we create new message object and SMTP client object to send out email. Before we send the email, we compose the email with From address, To address, Subject and Body.</span></p>
<p style="text-align:justify"></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial, helvetica, sans-serif;font-size:small;color:#3366ff"><strong>Welcome Email Template with Place Holder:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">I have created template as shown in the <strong>Picture #1</strong>. The template is with place holder &ldquo;NewUser00&rdquo;. This will be replaced with display name when the email is sent (as shown in <strong>Picture #2</strong>).</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7610.Picture1.jpg"><img style="margin-right:auto;margin-left:auto" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7610.Picture1.jpg" border="0" /></a></span></p>
<p align="center" style="text-align:center"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Picture 1</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>&nbsp;</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial, helvetica, sans-serif;font-size:small;color:#3366ff"><strong>Welcome Email after place holder replacement:</strong></span></p>
<p><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4532.Picture2.jpg"><img style="margin-right:auto;margin-left:auto" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4532.Picture2.jpg" border="0" /></a></span></p>
<p align="center" style="text-align:center"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>Picture 2</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><strong>&nbsp;</strong></span></p>
<p style="text-align:justify"><span style="color:#3366ff;font-family:arial,helvetica,sans-serif;font-size:small"><strong>How to manage/enable Cmdlet Extension Agent?</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">After the XML file updated with script, you need to enable the agent to call the XML file and the script whenever new-mailbox used. You can view the agent status by running the command: Get-CmdletExtensionAgent | FT Name,Enabled</span></p>
<p style="text-align:justify">&nbsp;</p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/5635.Picture3.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/5635.Picture3.jpg" border="0" /></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">By default,&ldquo;Scripting Agent&rdquo; is disabled. You can enable it using the command,</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Enable-CmdletExtensionAgent &quot;Scripting Agent&quot;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/6663.Picture4.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/6663.Picture4.jpg" border="0" /></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">When you wanted to disable the &ldquo;Scripting Agent&rdquo; , run the command ,</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Disable-CmdletExtensionAgent &quot;Scripting Agent&quot;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/5751.Picture5.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/5751.Picture5.jpg" border="0" /></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">Enabling or disabling CmdletExtension does not require restart of the server or exchange services in a normal scenario. It is a global command and applicable to all the exchange servers in the organization. So you have to update the XML file on all the exchange servers. If the XML files is not updated on any of the exchange server and you run any&nbsp;<span>non-Get cmdlets</span>, the cmdlet will fail.</span></p>
<p style="text-align:justify">&nbsp;<span style="font-family:arial, helvetica, sans-serif;font-size:small">For More Information on managing Cmdlet Extension, please refer the link : </span><a style="font-family:arial, helvetica, sans-serif;font-size:small" href="https://technet.microsoft.com/en-us/library/dd298143.aspx"><span style="color:#0563c1">https://technet.microsoft.com/en-us/library/dd298143.aspx</span></a></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial, helvetica, sans-serif;font-size:small;color:#3366ff"><strong>Test:</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">As both script and agent are in place, you can create new mailbox using EMC or EMS and check how it works. You may notice that the mailbox creation is taking little bit longer than it used to. That&rsquo;s because the additional activities are done along with new-mailbox.</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial, helvetica, sans-serif;font-size:small;color:#3366ff"><strong>Related articles :</strong></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://technet.microsoft.com/en-in/library/dd297951(v=exchg.141).aspx"><span style="color:#0563c1">https://technet.microsoft.com/en-in/library/dd297951(v=exchg.141).aspx</span></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://technet.microsoft.com/en-in/library/dd335067(v=exchg.141).aspx"><span style="color:#0563c1">https://technet.microsoft.com/en-in/library/dd335067(v=exchg.141).aspx</span></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://technet.microsoft.com/en-us/library/dd298143(v=exchg.141).aspx"><span style="color:#0563c1">https://technet.microsoft.com/en-us/library/dd298143(v=exchg.141).aspx</span></a></span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p style="text-align:justify"><span style="font-family:arial,helvetica,sans-serif;font-size:small">&nbsp;</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/9749/00/00/03/56/30/18/WelcomeMSG.zip">WelcomeMSG.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange 2010 DAG Datacenter Switchover Flow Chart</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/exchange-2010-dag-datacenter-switchover-flow-chart</link>
      <pubDate>Sun, 29 Dec 2013 00:42:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/12/29/exchange-2010-dag-datacenter-switchover-flow-chart/</guid>
      <description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recently when I...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recently when I was troubleshooting one of the DAG Datacenter Switchover issues, I felt, there is a need for an Exchange 2010 DAG Datacenter Switch flow-chart as it helps to understand process logically. We have made a flow-chart and sharing with you.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This version of flow-chart is additional resource to the DAG Datacenter Switchover GWT (<a href="https://support.microsoft.com/common/survey.aspx?scid=sw;en;3510&amp;showpage=1">https://support.microsoft.com/common/survey.aspx?scid=sw;en;3510&amp;showpage=1</a>). This was done intentionally. So the flow-chart will enhance the DAG Datacenter Switchover knowledge with less effort.</p>
<p></p>
<p><strong>Features:</strong></p>
<p>&gt;&gt;&nbsp;It is a detailed Secondary/DR Site DAG switchover flow-chart.</p>
<p>&gt;&gt; The flow-chart helps to get better logical understanding of the switch-over process.</p>
<p>&gt;&gt;&nbsp;Knowledge gained from DAG Datacenter Switchover GWT enhanced thru flow-chart as you can visualize whole activity in a sequential flow.</p>
<p>&gt;&gt;&nbsp;Easy navigation between pages.</p>
<p>&nbsp;</p>
<p><strong>The Flow-Chart Availability:</strong></p>
<p>You can download the Exchange 2010 DAG Datacenter Switchover Flow-Chart from&nbsp;<a href="https://gallery.technet.microsoft.com/Exchange-2010-DAG-b95d1e48">https://gallery.technet.microsoft.com/Exchange-2010-DAG-b95d1e48</a></p>
<p><strong>&nbsp;</strong></p>
<p><strong>Feedback/Suggestion:</strong></p>
<p>We welcome your suggestion and feedback.</p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/Flow-Chart.png"><img style="margin-right:auto;margin-left:auto" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/Flow-Chart.png" border="0" /></a></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Tool to manage Microsoft Exchange ActiveSync | EASAdmin 1.0 (Beta)</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/tool-to-manage-microsoft-exchange-activesync-easadmin-1-0-beta</link>
      <pubDate>Sat, 05 Oct 2013 10:45:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/10/05/tool-to-manage-microsoft-exchange-activesync-easadmin-1-0-beta/</guid>
      <description><![CDATA[Disclaimer:
The EASAdmin Tool facilitates to manage Exchange ActiveSync Device on Office365 and...]]></description>
      <content:encoded><![CDATA[<p><strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7853.logo.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7853.logo.png" alt="" width="108" height="108" border="0" /></a></strong></p>
<p><strong>Disclaimer:</strong></p>
<p style="text-align: justify">The EASAdmin Tool facilitates to manage Exchange ActiveSync Device on Office365 and Exchange On-Premises. This tool is provided "as is" without warranty of any kind. Microsoft and Tool Developer, Tool Supplier further disclaim all implied warranties including but not limited to any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the samples remains with you. In no event shall Microsoft or the Tool Developer, Suppliers be liable for any damages whatsoever (including but not limited to damages for loss of business profits,business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the tool, even if Microsoft, the Tool Developer, Suppliers have advised of the possibility of such damages.</p>
<p><span style="background-color: #ffff00"><strong><strong>** EASAdmin Version 1.0.0.2&nbsp;is updated with multi-domain feature. The feature will fetch the users, devices from across domains in a forest.</strong>&nbsp;</strong></span></p>
<p><strong>Introduction</strong><strong>:</strong></p>
<p>The Exchange ActiveSync Admin (EASAdmin) tool enables administrators to manage the process of remotely erasing lost, stolen, or otherwise compromised mobile devices. The EASAdmin Tool is designed for use with Exchange Server 2010, Exchange 2013, Office 365 (Wave14 and 15).</p>
<p>By using the EASAdmin tool, administrators can perform the following actions on Office 365 and Exchange On-Premise:</p>
<ul>
<li>View a list of all devices that are being used by any enterprise user.</li>
<li>Find Inactive Devices.</li>
<li>Get No. of devices per user.</li>
<li>Block/Allow devices.</li>
<li>Select/De-select devices to be remotely erased.</li>
<li>View the status of pending remote erase requests for each device.</li>
<li>Remove Mobile Devices.</li>
<li>Enable,Disable ActiveSync/MAPI/EWS/OWA Exchange features during troubleshooting.</li>
<li>Clear Blocked/Allowed Devices.</li>
<li>Execute Get-CASMailbox, Get-Mailbox,Get-ActiveSyncDeviceStatistics,Get-MailboxFolderStatistics,Get-ActiveSyncDeviceClass,Get-ActiveSyncDeviceAccessRule,Get-ActiveSyncOrganizationSettings,Get-ActiveSyncMailboxPolicy.</li>
<li>Parse IIS log and get reports to troubleshoot ActiveSync related Issue and manage the device/user from report output.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Pre-Requisite</strong><strong>:</strong></p>
<p>The tool is written using C# Visual Studio 2012, PowerShell 3.0, Log Parser 2.2, .Net Framework 4.0. It is tested with Exchange 2010,Exchange 2013 and Office 365 (Wave 14 &amp; 15) and run from Windows 7, Windows 8, Windows 2008 R2 and Windows 2012.</p>
<p><strong>System Requirement:</strong></p>
<ul>
<li>.Net Framework 4. (<a href="https://www.microsoft.com/en-in/download/details.aspx?id=17718">https://www.microsoft.com/en-in/download/details.aspx?id=17718</a> )</li>
<li>PowerShell 2.0 or Later. (<a href="https://support.microsoft.com/kb/968929">https://support.microsoft.com/kb/968929</a> )</li>
<li>Log Parser 2.2 (<a href="https://www.microsoft.com/en-in/download/details.aspx?id=24659">https://www.microsoft.com/en-in/download/details.aspx?id=24659</a> )</li>
<li>The tool screen layout works best with resolution 1920 x 1080.</li>
<li>Verify that Windows PowerShell can run scripts:</li>
</ul>
<ol>
<li>Click&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start &gt; All Programs &gt; Accessories &gt; Windows PowerShell.</li>
<li>Do&nbsp;one of the following to open Windows PowerShell:</li>
<ul>
<li>If you're running Windows Vista,Windows 7, or Windows Server 2008 R2, right-click Windows PowerShell and select Run as administrator. If you get a user account control prompt that asks if you would like to continue, respond Continue.</li>
<li>If you're running Windows XP or Windows Server 2003, click Windows PowerShell.</li>
</ul>
<li>Run the following command:Get-ExecutionPolicy</li>
<li>If the value returned is anything other than <code>RemoteSigned</code>, you need to&nbsp;change the value to <code>RemoteSigned</code>.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; <strong>Note</strong>&nbsp;&nbsp;&nbsp;When&nbsp;you set the script execution policy to <code>RemoteSigned</code>, you can&nbsp; only run scripts that you create on your computer or scripts that are signed by a trusted source.</li>
</ol>
<p>Enable scripts to run in Windows PowerShell</p>
<p>In Windows PowerShell session you just opened as an administrator, run the following command:</p>
<p>Set-ExecutionPolicy RemoteSigned</p>
<p>&nbsp;</p>
<ul>
<li>As the tool does not store any user data on the disk, physical RAM requirement various based on the data retrieval from server. The tool minimum requires 500 MB of RAM.</li>
</ul>
<p align="right">&nbsp;</p>
<p><strong>How Tool Works</strong><strong>:</strong></p>
<p>As an Office 365/Exchange Administrator, if you want to perform any activity on ActiveSync that are in the cloud, you will use <strong>Remote PowerShell </strong>or <strong>Online Portal</strong>. Both connect to the remote server over the Internet.</p>
<p>Similarly, the EASAdmin tool requires Internet connection to connect to Office 365 servers.The tool has to connect to Remote Powershell to perform the tasks. The tool performs various SET &amp; GET tasks. It is expected that the machine that runs the tool installed with pre-requisites for the commands to function. So please refer the pre-requisite section in the documentation before using the tool.</p>
<p>If you are using On-Prem option in the tool, the authentication method will be Kerberos and it will be HTTP communication. If there is any Kerberos unsupported device between tool and server, authentication may fail.</p>
<p><strong>Note:</strong> I have titled the fields/options as per Microsoft Exchange Terminology used with Exchange Shell for the easier understanding.</p>
<p><strong>Important: There are options in the tool that can wipe entire data on devices. Please know the options before you execute it. </strong></p>
<p><strong>&nbsp;</strong></p>
<p><strong>How to Use the Tool</strong><strong>:</strong></p>
<p>It is a stand-alone tool and is multi-instance capable. The tool cannot be run in DOS/Command Prompt as it is GUI based.When you double-click the tool short-cut or the application file, the tool presents you<br />with log on screen. If you wish to work with Office 365, give sign-in address and password to connect to Office 365 server. Instead you prefer to work with Exchange On-Premise server, you have to provide FQDN of<br />Exchange 2010/2013 CAS server.</p>
<p align="center"><br /> <br /> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1462.logon.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1462.logon.png" alt="" width="207" height="371" border="0" /></a><br />&nbsp;&nbsp;</p>
<p>After successful logon, Disclaimer/About page displayed. By Default, All the option are disabled until you click &ldquo;I Agree&rdquo; button.</p>
<p align="center"><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3618.Disclaimer.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3618.Disclaimer.png" alt="" border="0" /></a></p>
<p align="right"><strong>&nbsp;</strong></p>
<p><strong>ActiveSync Device List</strong><strong>:</strong></p>
<p>The tab lists all the device details. You can retrieve the data from the server, then work with it. More the data you ask, more the time it takes.</p>
<p align="center"><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8322.DeviceList.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8322.DeviceList.png" alt="" border="0" /></a></p>
<p align="right">&nbsp;</p>
<p>The data retrieval from the server can be restricted with,</p>
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3716.DeviceListA.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3716.DeviceListA.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>Important:</strong> Clear/Wipe Mobile Device option will clear all the data on the device. Please use it with caution. The tool restricts to send remote wipe request to only three devices at a time to reduce the damage, if the option executed accidently.</p>
<p align="right"><strong>&nbsp;</strong></p>
<p><strong>IIS Log Parser for ActiveSync</strong><strong>:</strong></p>
<p>The option can be used only if IIS log is available.So it will be used primarily with Exchange On-Premise. The result can be further used to disable ActiveSync or view the properties of users.</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/2772.IISLogParser.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/2772.IISLogParser.png" alt="" border="0" /></a></p>
<p><strong>Exchange Feature:</strong></p>
<p>Exchange Feature executes Get-CASMailbox and retrieve the data from server based the condition you choose.You can enable/disable Exchange Feature and execute Get-CASMailbox,Get-Mailbox,Get-ActiveSyncDeviceStatistics, Get-MailboxFolderStatistics.</p>
<p>&nbsp;&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8461.XFeatures.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8461.XFeatures.png" alt="" border="0" /></a></p>
<p><strong>&nbsp;</strong></p>
<p><strong>Device Block Clear, Device Allow Clear:</strong> When you run Get-CASMailbox command for any user, it will list the devices blocked and allowed for users. At times, you want to set this value to $Null. The command<br />will do the same.</p>
<p>The data retrieval from the server can be restricted with,</p>
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0410.XFeaturesA.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0410.XFeaturesA.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p><strong>General ActiveSync Output:</strong></p>
<p>As name suggests, you can generate multiple ActiveSync related reports. The command output is displayed in the text box. It does not append the current output to the previous command output. It is done intentionally.</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8625.General.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8625.General.png" alt="" border="0" /></a></p>
<p><strong>Known Issues:</strong><strong></strong></p>
<p>If you leave the Remote PowerShell session running for a long time (may be over 6 hours) without using the tool, then you try to use the PS related option, if you may get unexpected behavior due to session time out.</p>
<p><strong>&nbsp;</strong></p>
<p><strong>Troubleshooting:</strong></p>
<p>&nbsp;</p>
<p><strong>Issue #1</strong>:</p>
<p>PowerShell Session to the server will expire if the tool is not actively used. If you create the session and do not use the tool for a long time, then try to use it after session expiry, you will see the below error. You have to reopen the tool and create new PowerShell Session thru Authentication Tab.</p>
<p align="right">&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/2364.Issue1.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/2364.Issue1.png" alt="" border="0" /></a></p>
<p>Troubleshooting: Restart the tool to create new session and check.</p>
<p><strong></strong>&nbsp;</p>
<p><strong>Issue #2:</strong></p>
<p>If you are not able to create Remote PowerShell Session to the server. Please check whether you are able to connect to Remote PowerShell manually following the method detail in the article : <a href="https://help.outlook.com/en-us/140/cc952755.aspx">https://help.outlook.com/en-us/140/cc952755.aspx</a></p>
<p>If you receive error like,</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0552.Issue2A.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0552.Issue2A.png" alt="" border="0" /></a></p>
<p>Please set the proper proxy server.</p>
<p>Troubleshooting: Run the command: netsh winhttp show proxy and check what the proxy server is set. If you are using proxy, but the output of the command shown as below, set the correct proxy server.</p>
<p align="right">&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8623.Issue2B.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8623.Issue2B.png" alt="" border="0" /></a></p>
<p>To set the proxy server, run the command : netsh winhttp set proxy &lt;Proxy Server Name:Port&gt;</p>
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3021.Issue2C.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3021.Issue2C.png" alt="" border="0" /></a></p>
<p>If you are not able to connect to PowerShell by following the method in the link : <a href="https://help.outlook.com/en-us/140/cc952755.aspx">https://help.outlook.com/en-us/140/cc952755.aspx</a>, the PS related options in the tool will not work.</p>
<p align="right"><strong></strong>&nbsp;</p>
<p><strong>Issue #3:</strong></p>
<p>At times, all looks good but the session may not be established due to server connection rejection or intermittent issues or transient failure.</p>
<p>Troubleshooting: Close the tool and try to create the session after a couple of minutes.</p>
<p><strong>Issue #4:</strong></p>
<p>No Error reported when you Fetch Data and also it completes the task in no time. The issue could be due to PowerShell Script Execution restriction.Run Get-ExecutionPolicy from Windows PowerShell and check the policy. The tool requires execution policy set to RemoteSigned or Unrestricted,else the behavior is expected.</p>
<p><strong>&nbsp;</strong></p>
<p><strong>Support/Feedback:</strong></p>
<p>If you have any questions or feedback, you can contact me at: <a href="mailto:sukum@microsoft.com">sukum@microsoft.com</a> / <a href="mailto:raghuv@microsoft.com">raghuv@microsoft.com</a></p>
<p>&nbsp;</p>
<p><strong>Download :</strong></p>
<p><strong><a title="Download EASAdmin 1.0 Beta" href="https://gallery.technet.microsoft.com/Tool-to-manage-Exchange-8a458b2a"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3426.Download.png" alt="" width="94" height="106" border="0" /></a></strong></p>
<p>&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><span style="font-size: small"><span style="font-family: Calibri">***</span></span></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Send Birthday Greetings</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/send-birthday-greetings</link>
      <pubDate>Wed, 10 Jul 2013 04:15:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/07/10/send-birthday-greetings/</guid>
      <description><![CDATA[Objective:

The sample script to send birthday greetings.&nbsp;A separate email will be sent to...]]></description>
      <content:encoded><![CDATA[<div class="endscriptcode">
<div class="endscriptcode">Objective:</div>
</div>
<p>The sample script to send birthday greetings.&nbsp;A separate email will be sent to individual users who will be celebrating birthday on the day the script&nbsp;runs. The script can be used with windows Task Scheduler to automate the process with a minimum modification.&nbsp;</p>
<p>Features:</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The script includes the function to help the users to run the friendly command: Send-DOBGreetings.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;It can be used with Server,Database,FrmEmailID,HUBServer parameters.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp; FrmEmailID,HUBServer are mandatory.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database and Server parameters are optional.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the Server/Database is not used, it will run against all the mailboxes.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp; You cannot use Server and Database parameters together.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp; FrmEmailID will be used to send BirthDay Greeting Email to the users.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp; You cannot use&nbsp;administrator email ID or credential to send email. When you use&nbsp; other user's email id to send message, You should have at least "Send As" permission.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;You will be prompted with credential once to send emails. Only after successful authentication, the email will be sent.</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;Script does not make any modification, apart from running Get-Mailbox&nbsp; commands.</p>
<p>-&nbsp;&nbsp;&nbsp; Script can be used with Exchange 2007/2010/2013 and Office 365.</p>
<p>&nbsp;Sample Screen-Shot:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3582.SendBDay.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3582.SendBDay.png" alt="" border="0" /></a></p>
<p>- You may download the script from <a title="Donwload Script" href="https://gallery.technet.microsoft.com/scriptcenter/Send-Birthday-Greetings-deb04c0c">TechNet Gallery</a></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>List Inactive Mailboxes on Exchange 2007/2010/2013.</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/list-inactive-mailboxes-on-exchange-200720102013</link>
      <pubDate>Tue, 25 Jun 2013 04:39:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/06/25/list-inactive-mailboxes-on-exchange-200720102013/</guid>
      <description><![CDATA[Objective: 
The script to get list of inactive mailboxes. Inactive is very relative term. For...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small">Objective: </span></p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small">The script to get list of inactive mailboxes. Inactive is very relative term. For Example, some organizations mark the mailbox as inactive, if it is not accessed for a long time. Other organizations mark the mailbox as inactive, if the user did not sent email for a long period. If you ask me, why they should go by sent item. Some of the reasons could be, the mailboxes are scanned by AV/management tool that changes logon date. So they cannot go by access date. The script identify the inactive mailboxes based on Sent Items.</span></p>
<p style="text-align: justify">&nbsp;</p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small">Features:</span></p>
<p style="text-align: justify">&nbsp;</p>
<p>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: arial,helvetica,sans-serif;font-size: small">&nbsp;The script includes the function to help the users to run the friendly command: Get-InActiveMailbox.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;It can be used with Server,IdleDays,FilePath,Database,EmailID,HUBServer parameters.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IdleDays Parameter is mandatory and with the range 1 &ndash; 5000.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilePath,Database,EmailID,HUBServer and Server parameters are optional.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If the FilePath is not given, the output will be stored in current folder. If the Server is not used, it will run against all the mailboxes.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; You cannot use Server and Database parameters together.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If you wish to have the output file sent thru email. You can use EmailID parameter. The EmailID should be used with HUBServer parameter.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; You cannot use&nbsp;administrator email ID or credential to send email. When you use other user's email id to send message, You should have at least "Send As" permission.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If the email option used, you will be prompted with credential. Only after successful authentication, the email will be sent.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Script does not make any modification, apart from running Get-Mailbox and Get-MailboxFolderStatistics commands.</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;font-size: small">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The output will be stored to the file with the name &lt; IdleDays &gt; DayInactiveMailbox.csv.</span></p>
<p style="text-align: justify">&nbsp;</p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small">You can <a title="Download the script" href="https://gallery.technet.microsoft.com/scriptcenter/List-Inactive-Mailboxes-on-1ac82ddf">download</a> the script from ,</span></p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small"><a href="https://gallery.technet.microsoft.com/scriptcenter/List-Inactive-Mailboxes-on-1ac82ddf">https://gallery.technet.microsoft.com/scriptcenter/List-Inactive-Mailboxes-on-1ac82ddf</a></span></p>
<p style="text-align: justify">&nbsp;</p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small">Sample Screen-Shots:</span></p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8304.command.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8304.command.png" alt="" border="0" /></a></p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4101.progress.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4101.progress.png" alt="" border="0" /></a></p>
<p style="text-align: justify"><span style="font-family: arial,helvetica,sans-serif;font-size: small"><strong>Note : The output may include system mailboxes. If you wish to process further with output, make sure you do not distrub/disable/delete system mailboxes.Refer <a href="https://technet.microsoft.com/en-us/library/gg588318(v=exchg.141).aspx">https://technet.microsoft.com/en-us/library/gg588318(v=exchg.141).aspx</a>&nbsp;for more details.</strong></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange DSAccess / ADAccess and AD site Link</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/exchange-dsaccess-adaccess-and-ad-site-link</link>
      <pubDate>Fri, 08 Feb 2013 02:46:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/02/08/exchange-dsaccess-adaccess-and-ad-site-link/</guid>
      <description><![CDATA[By writing the article, I hope that you will be able to understand the criteria considered by DS...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:verdana,geneva;font-size:small">By writing the article, I hope that you will be able to understand the criteria considered by DS Access to list GCs in Event ID 2080. The article will allow you to ensure continuity in case of a server failure.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">I will start by listing how DS Access/AD Access identifies the topology by using the following steps for the benefit of Exchange administrators:</span></p>
<ol start="1">
<li><span style="font-family:verdana,geneva;font-size:small">The system attendant process, mad.exe, instantiates and initializes DSAccess.dll during startup.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">From the local domain, DSAccess opens an LDAP connection to a randomly chosen Domain Controller (DC). This DC is referred to as the bootstrap server.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">DSAccess reads the local registry to determine if the topology is hard coded. If the topology is hard coded, the discovery process stops. If no hard coding is detected, DSAccess continues the discovery process.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">DSAccess queries the bootstrap server to identify local DCs and Global Catalog servers (GCs). DSAccess then determines server suitability and assigns server roles.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">DSAccess queries the bootstrap server to determine if one or more secondary sites are connected to the local site. If secondary sites exist, DSAccess sorts the siteLink objects for each site from lowest cost to highest cost. DSAccess places the lowest cost sites in a secondary topology list.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">DSAccess queries the bootstrap server to identify the DCs and GCs that are located in the secondary topology sites.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">DSAccess identifies the full topology and compiles a list of working domain controllers and a list of working GCs.</span></li>
</ol>
<p><span style="font-family:verdana,geneva;font-size:small">There are situations when Exchange DS Access/AD Access does not show the GCs from other AD Sites in Event ID 2080. As an Exchange administrator, you may be wondering why the event 2080 does not list all GCs in the domain even though the GCs are healthy. To save you a lot of production downtime and effort, I will discuss the following aspects.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Exchange DS Access/AD Access uses AD Site Link details while listing GCs in Out-Of-Site in Event ID 2080. If there is no direct site link between AD site where Exchange exists and other AD sites, the AD sites&#039; GCs&nbsp;will not be considered to be listed in Event ID 2080.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">I thought that giving an explanation on <strong>AD site link criteria used by DS Access/AD Access</strong> will help you to manage the GC resource efficiently for better Exchange functionality.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Since a picture is worth a thousand words, I will explain the topic in question using examples and diagrams.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Let&rsquo;s say we have the following lab setup:</span></p>
<ul>
<li><span style="font-family:verdana,geneva;font-size:small">Four AD sites named Site A, Site B, Site C, and Site D</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">All sites belong to a domain &ndash; CONTOSO.COM</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">Each site has two GCs</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">The Site A is installed with Exchange server</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">There are direct AD Site links between Site A and Site B, Site A and Site C, Site A and Site D</span></li>
</ul>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8228.Pciture1.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8228.Pciture1.jpg" border="0" /></a>&nbsp;</p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 1</span></strong></span></p>
<p>&nbsp;</p>
<p><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Scenario 1:</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">The Site A, the Exchange site, has direct AD site link with other AD sites. All site links have the same site Link Cost i.e. 100. So, the Event ID 2080 on Exchange will appear like in the following snapshot, <strong><span style="text-decoration:underline">Picture 1A</span></strong>:</span></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3146.Picture1A.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/3146.Picture1A.jpg" border="0" /></a>&nbsp;</p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 1A</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Scenario 2:</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">If I change my AD site Link Cost as shown in <strong><span style="text-decoration:underline">Picture 2</span></strong>, then Exchange will pick the GCs from the Site with lowest cost to list under Out-Of-Site in Event ID 2080 and will ignore other AD Site GCs.</span></p>
<p style="text-align:center">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7433.Picture2.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/7433.Picture2.jpg" border="0" /></a></p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 2: </span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Exchange will consider only the Site Link with lowest cost for the Out-Of-Site GCs. So, the Event ID 2080 will look like Picture 2A.</span></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1682.Picture2A.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1682.Picture2A.jpg" border="0" /></a>&nbsp;</p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 2A</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Other GCs in Site B and Site C will not be listed in Event ID 2080. Therefore, Exchange will not use the other GCs i.e. GC5, GC6, GC7 and GC8 in sites B and C.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Scenario 3:</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">If I change my AD site Link as shown in <strong><span style="text-decoration:underline">Picture 3</span></strong> then Exchange will pick the GCs from the Site C to list under Out-Of-Site in Event ID 2080, and it will ignore other AD Site GCs i.e. GC3, GC4, GC7 and GC8.</span></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0456.Pciture3.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/0456.Pciture3.jpg" border="0" /></a>&nbsp;</p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 3</span></strong></span></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4721.Picture3A.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4721.Picture3A.jpg" border="0" /></a>&nbsp;</p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 3A</span></strong></span></p>
<p>&nbsp;</p>
<p><span style="font-family:verdana,geneva;font-size:small"><strong>Scenario 4:</strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">This scenario may be a little odd and may not usually happen as there is no AD with multiple AD sites but no site link. Still, I wanted to talk about this scenario so that the logic can be clearly understood. If there are no site links for any site as in <strong><span style="text-decoration:underline">Picture 4</span></strong>, sites are not considered. It will only use local site DC/GC.</span></p>
<p>&nbsp;</p>
<p align="center">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4786.Picture4.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4786.Picture4.jpg" border="0" /></a></p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 4</span></strong><strong></strong></span></p>
<p align="center">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4606.Picture4A.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/4606.Picture4A.jpg" border="0" /></a></p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 4A</span></strong></span></p>
<p>&nbsp;</p>
<p><span style="font-family:verdana,geneva;font-size:small">Now that you&rsquo;ve gone over various scenarios, you may ask, what if I hardcode the GCs that are:</span></p>
<ul>
<li><span style="font-family:verdana,geneva;font-size:small">In-Site but do not have a direct site link with Site A, the Exchange Site, or</span></li>
<li><span style="font-family:verdana,geneva;font-size:small">there is no site link with Site A, the Exchange site,</span></li>
</ul>
<p><span style="font-family:verdana,geneva;font-size:small">Will exchange use the GCs?</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">The answer is yes. It will use GCs, because if you hard code the directory servers, DSAccess bypasses the discovery process and checks only for server suitability. Similarly when you set StaticExcludedDomainControllers, the excluded DC will be listed in 2080 event, but &nbsp;scores for the DC in the event will be set to 0 for all except&nbsp;GC Capable.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Let&lsquo;s say, I run the following command, the exchange will get updated and will log the Event ID 2080 as in <strong><span style="text-decoration:underline">Picture 5</span></strong>:</span></p>
<p><span style="font-family:verdana,geneva;font-size:small">Get-ExchangeServer MSX | Set-Exchangeserver &ndash;identity MSX &ndash; StaticDomainControllers GC3.CONTOSO.COM, GC5.CONTOSO.COM, GC7.CONTOSO.COM &ndash; StaticGlobalCatalogs GC3.CONTOSO.COM, GC5.CONTOSO.COM, GC7.CONTOSO.COM &ndash; StaticConfigDomainController GC3.CONTOSO.COM</span></p>
<p align="center">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1538.Picture5.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/1538.Picture5.jpg" border="0" /></a></p>
<p align="center"><span style="font-family:verdana,geneva;font-size:small"><strong><span style="text-decoration:underline">Picture 5</span></strong></span></p>
<p><span style="font-family:verdana,geneva;font-size:small">In conclusion, you can ensure service continuity and minimize service downtime by setting a proper AD site link.</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h5><span style="font-family:verdana,geneva;font-size:small">Applies to</span></h5>
<p>Microsoft Exchange Server 2010</p>
<p>Microsoft Exchange Server 2007</p>
<p>Microsoft Exchange Server 2003</p>]]></content:encoded>
    </item>
    <item>
      <title>The Tool, Office 365 Delegates is here.</title>
      <link>https://docs.microsoft.com/archive/blogs/sukum/the-tool-office-365-delegates-is-here</link>
      <pubDate>Tue, 22 Jan 2013 19:59:00 GMT</pubDate>
      <dc:creator><![CDATA[SUKUM - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/sukum/2013/01/22/the-tool-office-365-delegates-is-here/</guid>
      <description><![CDATA[A new Office 365 tool developed and available to use. The tool named as O365 Delegates.  Let me...]]></description>
      <content:encoded><![CDATA[<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8666.O365MainPage.png"><img style="margin-right: auto;margin-left: auto" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/97/49/8666.O365MainPage.png" alt="" border="0" /></a>

A new Office 365 tool developed and available to use. The tool named as O365 Delegates.  Let me explain , why the tool developed and what the tool does.

<span style="font-size: medium">Why the tool, O365 Delegates Developed ?</span>
<ul>
	<li>During the course of Office 365 Exchange related troubleshooting, You need to generate various PowerShell command to collect various data.</li>
	<li>At times, You may feel using Powershell is not very comfortable to collect the data.</li>
	<li>I had heard from friends that if they have a tool to perform their day to day activities in managing the mailboxes rather using remote PowerShell, it will be very useful.</li>
	<li>Also when I was checking various Microsoft Developers forums, I could see a huge demand for a sample tool to help the Office 365 tool developers.</li>
	<li>In Order to help, Office 365 Exchange Administrators, Office 365 Tool Developers,   The O365 Delegates tool developed.</li>
</ul>
<span style="font-size: medium">What the tool does ?</span>
<p class="Default">The tool can be used to:</p>

<ul>
	<li>Allow others to manage your mailbox and calendar by giving delegate permission.</li>
	<li>Find existing distribution list members.</li>
	<li>List delegate permission.</li>
	<li>Remove delegate permission.</li>
	<li>Modify delegate permission level.</li>
	<li>Grant &amp; Revoke “Full Mailbox” and “Send As” Permission.</li>
	<li>Run various Office 365 PowerShell commands to retrieve user/mailbox details.</li>
	<li>It is provisioned to get LDP dump of the on-premise user through PowerShell.</li>
</ul>
As the tool can be used to perform the task that can be done with other application and thru manual PowerShell, but with less effort, it is named as Office 365 Delegates.

&nbsp;

<span style="font-size: medium">What is next for the tool ?</span>

O365 Delegates to include the followings in Version 2.0,
<ul>
	<li>Customizable PowerShell commands to generate various advance reports .</li>
	<li>Run the command for multiple users.</li>
	<li>Perform various Set commands to manage O365 mailboxes and the list goes on.</li>
</ul>
&nbsp;

&nbsp;

<span style="font-size: medium">The Tool’s Availability:</span>

If you are a developer and looking for sample, you can download the complete tool from the link :

<a href="https://code.msdn.microsoft.com/vstudio/Retrieve-office-365-user-63e054ad">https://code.msdn.microsoft.com/vstudio/Retrieve-office-365-user-63e054ad</a>

I hope the tool is helpful.

&nbsp;

&nbsp;]]></content:encoded>
    </item>
  </channel>
</rss>