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

<channel>
	<title>www.telnetport25.com</title>
	<atom:link href="http://www.telnetport25.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.telnetport25.com</link>
	<description>The ramblings of an Exchange admin</description>
	<lastBuildDate>Sun, 06 May 2012 09:27:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Quick Tip &#8211; Script to collate Exchange 2010 OAB Generation Logs&#8230;</title>
		<link>http://www.telnetport25.com/2012/05/quick-tip-script-to-collate-exchange-2010-oab-generation-logs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-script-to-collate-exchange-2010-oab-generation-logs</link>
		<comments>http://www.telnetport25.com/2012/05/quick-tip-script-to-collate-exchange-2010-oab-generation-logs/#comments</comments>
		<pubDate>Sun, 06 May 2012 09:01:08 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Exchange 2010 (Mailbox)]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[ADSI]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[OAB]]></category>
		<category><![CDATA[OAB Logging]]></category>
		<category><![CDATA[OAB not updating]]></category>
		<category><![CDATA[Offline Address Book]]></category>
		<category><![CDATA[Offline Address Books]]></category>
		<category><![CDATA[Powerhshell]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1336</guid>
		<description><![CDATA[The other day whilst trying to send an e-mail to a new starter in my organisation I discovered that their name did not appear to be on the Global Address List within my Outlook client (Outlook 2010). Now I knew that the user had been created correctly (and had been several days ago), was also [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The other day whilst trying to send an e-mail to a new starter in my organisation I discovered that their name did not appear to be on the Global Address List within my Outlook client (<em>Outlook 2010</em>). Now I knew that the user had been created correctly (<em>and had been several days ago</em>), was also not hidden from the GAL, and others folks were quite happily sending her e-mails &ndash; so I suspected that as I was using Outlook Cached mode (<em>which normally I don&rsquo;t</em>) there was a problem with the Offline Address Book.</p>
<p>This problem could of course be local, or on the Exchange Server&nbsp; &#8211; but first I needed to confirm that this was indeed a OAB problem.</p>
<p>I did this by temporarily turning off cached mode and then checking the address book from within Outlook by using direct mode &ndash; and I found that the user was present, I further backed up my theory about the oddness with the OAB by checking to see if the user was present from within the OWA address list &ndash; she was as well.</p>
<p>To eliminate a local issue&nbsp; &#8211; my first action was to exit Outlook and delete all of the local Offline Address Book cache files on my local machine ~ if you are using Windows 7 with Outlook 2010 these are located in: [ <strong>%UserProfile%\AppData\Local\Microsoft\Outlook\Offline Address Books\</strong> ] and are listed as:</p>
<table border="1" cellspacing="1" class="table" style="line-height: normal;" width="453">
<tbody>
<tr>
<td style="padding: 1px;" width="173">
<p><b><font color="#000000" size="2">ANSI</font></b></p>
</td>
<td style="padding: 1px;" width="275">
<p><b><font color="#000000" size="2">Unicode</font></b></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="174">
<p><font color="#000000" size="2">Anrdex.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Uanrdex.oab</font></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="175">
<p><font color="#000000" size="2">Browse.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Ubrowse.oab</font></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="175">
<p><font color="#000000" size="2">Details.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Udetails.oab</font></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="175">
<p><font color="#000000" size="2">Rdndex.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Urdndex.oab</font></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="175">
<p><font color="#000000" size="2">Pdndex.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Updndex.oab</font></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" width="175">
<p><font color="#000000" size="2">Tmplts.oab</font></p>
</td>
<td style="padding: 1px;" width="274">
<p><font color="#000000" size="2">Utmplts.oab</font></p>
</td>
</tr>
</tbody>
</table>
<p><strong>Source:</strong> <a href="http://support.microsoft.com/kb/841273" target="_blank">Microsoft</a></p>
<p>Once I had deleted the files, I restarted Outlook and then from the &ldquo;<strong>Send / Receive&rdquo; </strong>ribbon select<strong> [ Send / Receive Groups &ndash;&gt; Download Address Book</strong> ] &ndash; see below</p>
<p><img alt="OAB_DownloadAdd" height="238" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd.png" style="display: inline;" title="OAB_DownloadAdd" width="305" /></p>
<p>I then un-ticked the &ldquo;<strong><em>Download changes since last Send / Receive</em></strong>&rdquo; (<em>this will ensure that a full download is instigated</em>) and then clicked on the &ldquo;<strong><em>OK</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="OAB_DownloadAdd2" height="287" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd2.png" style="display: inline;" title="OAB_DownloadAdd2" width="374" /></p>
<p>This did not work, as the user that I was trying to find did not appear in my local address list.</p>
<p>This indicated that the problem was not with the local copy of the Offline Address List &ndash; but was an issue with the generated OAB on the Exchange Servers within my organisation. So I opened up an Exchange Management Console Session and ran the following cmdlet:</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Update-OfflineAddressBook &ndash;Identity &ldquo;Address Book Name&rdquo;</span></pre>
<p>Executing the above command does pretty much what you would expect it to &ndash; e.g. it starts a refresh of the Offline Address Book which is outside its normal schedule on the designated OAB Generation Server. Generally this can take a little while to complete (<em>depending on the size of the organisation and the number of recipients</em>)</p>
<p>If you would like to get the details of your Offline Address Books and the Generation Servers you can use the following command:</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Get-OfflineAddressBook </span><span style="color: blue;">| Select Name</span><span style="color: black;">,</span><span style="color: blue;">Server</span></pre>
<p>Which will produce output that looks like the following:</p>
<p><img alt="OAB_DownloadAdd3" height="118" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd3.png" style="display: inline;" title="OAB_DownloadAdd3" width="603" /></p>
<p>Anyhow &#8211; I gave it about 30 minutes and tried the OAB download again within Outlook, and unfortunately &ndash; no luck, my elusive user was still missing.</p>
<p>When this happens the root cause is <strong><em>* generally *</em></strong> something screwy within the bowels of Active Directory that will need intervention using something like ADSI edit.</p>
<p><strong><em>Of course the question was what? &ndash; What is wrong in AD?</em></strong></p>
<p>Now the only way that I was going to deduce this was to increase the logging levels on the [ <strong>MSExchangeSA\OAL Generator</strong> ] logging level on the OAB generation server.</p>
<p>This can be done in two ways:</p>
<ul>
<li><strong>Via the Exchange Management Console</strong></li>
</ul>
<p>Open the Exchange Management Console navigate to [ <strong>Server Configuration</strong> ] from the right hand pane &ndash; right click on the OAB Generation Server and from the context menu that appears choose &ldquo;<strong><em>Manage Diagnostic Logging Properties</em></strong>&rdquo; &ndash; see below</p>
<p><img alt="OAB_DownloadAdd4" height="350" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd4.png" style="display: inline;" title="OAB_DownloadAdd4" width="553" /></p>
<p>From the dialog box that appears &ndash; select [ <strong>MSExchangeSA &ndash;&gt; OAL Generator</strong> ] then select the relevant logging level (<em>Lowest, Low, Medium, High, or Expert</em>) and then click on the &ldquo;<strong><em>Manage</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="OAB_DownloadAdd5" height="543" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd5.png" style="display: inline;" title="OAB_DownloadAdd5" width="623" /></p>
<ul>
<li><strong>Via the Exchange Management Shell directly on the Generation Server</strong></li>
</ul>
<p>You can also set the diagnostic logging level for the OAL Generator from the Exchange Management Shell directly on the Generation Server using the following command line:</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Set-EventLogLevel -Identity </span><span style="color: maroon;">&quot;MSExchangeSA\OAL Generator&quot; </span><span style="color: rgb(95, 158, 160);">-Level </span><span style="color: blue;">Expert </span><span style="color: red;">-</span><span style="color: blue;">Confirm</span><span style="color: black;">:</span><span style="color: blue;">$False</span></pre>
<p>You can also execute this command remotely by using a Powershell remote session (<em>which is the direction that we are heading in for reasons that will become clear very soon</em>) &ndash; see below</p>
<pre class="code"><span style="color: purple;">$Session </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">New-PSSession -ConfigurationName </span><span style="color: rgb(139, 69, 19);">Microsoft.Exchange </span><span style="color: rgb(95, 158, 160);">-ConnectionURI </span><span style="color: blue;">http</span><span style="color: black;">:</span><span style="color: red;">//</span><span style="color: blue;">servername</span><span style="color: red;">/</span><span style="color: blue;">powershell
</span><span style="color: rgb(95, 158, 160);">Invoke-Command -Session </span><span style="color: purple;">$Session  </span><span style="color: black;">{
    </span><span style="color: rgb(95, 158, 160);">Set-EventLogLevel -Identity </span><span style="color: maroon;">&quot;MSExchangeSA\OAL Generator&quot; </span><span style="color: rgb(95, 158, 160);">-Level </span><span style="color: blue;">Expert </span><span style="color: red;">-</span><span style="color: blue;">Confirm</span><span style="color: black;">:</span><span style="color: blue;">$False
</span><span style="color: black;">}
</span><span style="color: rgb(95, 158, 160);">Exit-PSSession</span></pre>
<p>Of course by setting the Logging level to &ldquo;<strong><em>Expert</em></strong>&rdquo; on the Generation Server &ndash; I was presented with a situation that I personally found a little long winded &#8211; as the process that I had to go through to both update the offline address book and gather the logging information involved:</p>
<ul>
<li>Raising the Event Logging of the &ldquo;<strong><em>MSExchangeSA\OAL Generator</em></strong>&rdquo; on the designated generation server to &ldquo;<strong><em>Expert</em></strong>&rdquo;</li>
<li>Performing another &ldquo;<strong><em>Update-OfflineAddressBook</em></strong>&rdquo; command after I had raised the logging level on the Generation Server</li>
<li>Logging onto the OAB Generation Server and review the Application Event Log and filter out all System Attendant Events which are part of the OAL Generator category</li>
<li>Put the Event Logging Level back to &ldquo;<strong><em>Lowest</em></strong>&rdquo; on the OAB generation server</li>
</ul>
<p>So I decided to write a Powershell script that would automate all of the above tasks for me that could also be executed from any Exchange Server / Computer that had the Exchange Management tools installed and then compile the results into a HTML based report file.</p>
<h2>The Script</h2>
<p>The script that I came up with is detailed below (<em>with an associated download should a copy and past from the website not work as it should</em>)</p>
<pre class="code"><span style="color: green;">&lt;#
.DESCRIPTION

   This script will perform an update of the Offline Address Book Service, but will configure logging levels
   to aid in troubleshooting. These logs will then be collated into a single log file for viewing.

.PARAMETER oAddressBook

   -oAddressBook &quot;Address Book Name&quot; -fHTML &quot;Path and Filename for HTML Report&quot;

.EXAMPLE

   .\updateOABandLog.ps1 -oAddressBook &quot;&lt;Name of Address Book&gt;&quot; -fHTML &lt;Path to HTML file&gt;

.Copyright_Author

    (c) 2012 www.telnetport25.com
    Author: Andy Grogan

.Version
    v1.0 - First Release

#&gt;

</span><span style="color: blue;">param</span><span style="color: black;">(
    [</span><span style="color: blue;">parameter</span><span style="color: black;">(</span><span style="color: blue;">Mandatory</span><span style="color: red;">=</span><span style="color: blue;">$true</span><span style="color: black;">,</span><span style="color: blue;">ValueFromPipeline</span><span style="color: red;">=</span><span style="color: blue;">$false</span><span style="color: black;">,</span><span style="color: blue;">HelpMessage</span><span style="color: red;">=</span><span style="color: maroon;">&quot;Name of the Offline Address Book that you wish to update&quot;</span><span style="color: black;">)]</span><span style="color: purple;">$oAddressBook</span><span style="color: black;">,
    [</span><span style="color: blue;">parameter</span><span style="color: black;">(</span><span style="color: blue;">Mandatory</span><span style="color: red;">=</span><span style="color: blue;">$true</span><span style="color: black;">,</span><span style="color: blue;">ValueFromPipeline</span><span style="color: red;">=</span><span style="color: blue;">$false</span><span style="color: black;">,</span><span style="color: blue;">HelpMessage</span><span style="color: red;">=</span><span style="color: maroon;">&quot;Path and Filename to report file&quot;</span><span style="color: black;">)]</span><span style="color: purple;">$fHTML
</span><span style="color: black;">)

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">checkExchangeSN
</span><span style="color: black;">{
    </span><span style="color: blue;">if </span><span style="color: black;">(</span><span style="color: red;">! </span><span style="color: black;">(</span><span style="color: rgb(95, 158, 160);">Get-PSSnapin </span><span style="color: rgb(139, 69, 19);">Microsoft.Exchange.Management.PowerShell.E2010 </span><span style="color: red;">-</span><span style="color: blue;">ErrorAction</span><span style="color: black;">:</span><span style="color: blue;">SilentlyContinue</span><span style="color: black;">) )
    {
        </span><span style="color: rgb(95, 158, 160);">Add-PSSnapin </span><span style="color: rgb(139, 69, 19);">Microsoft.Exchange.Management.PowerShell.E2010 </span><span style="color: red;">-</span><span style="color: blue;">ErrorAction</span><span style="color: black;">:</span><span style="color: blue;">Stop
    </span><span style="color: black;">}
}

</span><span style="color: rgb(95, 158, 160);">New-Item -ItemType </span><span style="color: blue;">file </span><span style="color: purple;">$fHTML </span><span style="color: rgb(95, 158, 160);">-Force </span><span style="color: blue;">| </span><span style="color: rgb(95, 158, 160);">Out-Null
</span><span style="color: purple;">$ComputerName </span><span style="color: red;">= </span><span style="color: purple;">$env:COMPUTERNAME
</span><span style="color: rgb(95, 158, 160);">Write-Host </span><span style="color: maroon;">&quot;Execution Computer Name is: &quot; </span><span style="color: purple;">$ComputerName </span><span style="color: rgb(95, 158, 160);">-ForegroundColor </span><span style="color: blue;">White

function </span><span style="color: rgb(0, 0, 205);">writeHeader</span><span style="color: black;">{
    </span><span style="color: blue;">param</span><span style="color: black;">(</span><span style="color: purple;">$fileName</span><span style="color: black;">)
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;html&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;head&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;meta http-equiv=&#39;Content-Type&#39; content=&#39;text/html; charset=iso-8859-1&#39;&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&#39;&lt;title&gt;OAB Events Report&lt;/title&gt;&#39;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&#39;&lt;STYLE TYPE=&quot;text/css&quot;&gt;&#39;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;!--&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;td {&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;font-family: Tahoma;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;font-size: 12px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;border-top: 1px solid #999999;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;border-right: 1px solid #999999;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;border-bottom: 1px solid #999999;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;border-left: 1px solid #999999;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;padding-top: 0px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;padding-right: 0px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;padding-bottom: 0px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;padding-left: 0px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;}&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName    </span><span style="color: maroon;">&quot;.Headings {&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;font-family: Tahoma;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;font-size: 14px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;font-weight: bold;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;}&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;body {&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;margin-left: 5px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;margin-top: 5px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;margin-right: 0px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;margin-bottom: 10px;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;table {&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;border: thin solid #000000;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;}&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;--&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;/style&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/head&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;body&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;table width=&#39;100%&#39;&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;tr bgcolor=&#39;#3366FF&#39;&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;td colspan=&#39;7&#39; height=&#39;25&#39; align=&#39;left&#39;&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;font face=&#39;tahoma&#39; color=&#39;#FFFFFF&#39; size=&#39;4&#39;&gt;&lt;strong&gt;Offline Address Book Processing Log - Executed on: $ComputerName&lt;/strong&gt;&lt;/font&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;/tr&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-content </span><span style="color: purple;">$fileName  </span><span style="color: maroon;">&quot;&lt;/table&gt;&quot;
</span><span style="color: black;">}

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">WriteFooter</span><span style="color: black;">(){

    </span><span style="color: blue;">Param</span><span style="color: black;">(</span><span style="color: purple;">$fileName</span><span style="color: black;">)
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/body&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/html&gt;&quot;

</span><span style="color: black;">}

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">script_Logging</span><span style="color: black;">(</span><span style="color: purple;">$logEntry</span><span style="color: black;">,</span><span style="color: purple;">$Colour</span><span style="color: black;">){
    </span><span style="color: rgb(95, 158, 160);">Write-Host </span><span style="color: purple;">$logEntry </span><span style="color: rgb(95, 158, 160);">-ForegroundColor </span><span style="color: purple;">$Colour
</span><span style="color: black;">}

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">get_OABServer</span><span style="color: black;">{
    </span><span style="color: purple;">$oabGenSrv </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-OfflineAddressBook </span><span style="color: purple;">$oAddressBook  </span><span style="color: blue;">| Select </span><span style="color: rgb(95, 158, 160);">-ExpandProperty </span><span style="color: blue;">Server
    return </span><span style="color: purple;">$oabGenSrv
</span><span style="color: black;">}

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">set_Logging</span><span style="color: black;">(</span><span style="color: purple;">$switch</span><span style="color: black;">){
    </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Getting OAB Generation Server&quot; &quot;Green&quot;
    </span><span style="color: purple;">$GenerationServer </span><span style="color: red;">= </span><span style="color: blue;">get_OABServer
    script_Logging </span><span style="color: maroon;">&quot;OAB Generation Server is: $GenerationServer&quot; &quot;Yellow&quot;
    </span><span style="color: purple;">$URIString </span><span style="color: red;">= </span><span style="color: maroon;">&quot;http://&quot; </span><span style="color: red;">+  </span><span style="color: purple;">$GenerationServer </span><span style="color: red;">+ </span><span style="color: maroon;">&quot;/Powershell&quot;
    </span><span style="color: blue;">script_Logging </span><span style="color: purple;">$URIString </span><span style="color: maroon;">&quot;Green&quot;
    </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Setting up new PS Session to remote host&quot; &quot;Green&quot;
    </span><span style="color: purple;">$Session </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">New-PSSession -ConfigurationName </span><span style="color: rgb(139, 69, 19);">Microsoft.Exchange </span><span style="color: rgb(95, 158, 160);">-ConnectionURI </span><span style="color: purple;">$URIString
    </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Getting Mode&quot; &quot;Green&quot;

    </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$switch</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">ToLower</span><span style="color: black;">() </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;enable&#39;</span><span style="color: black;">){
        </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Mode Set to Enable&quot; &quot;Green&quot;
        </span><span style="color: rgb(95, 158, 160);">Invoke-Command -Session </span><span style="color: purple;">$Session  </span><span style="color: black;">{

            </span><span style="color: rgb(95, 158, 160);">Set-EventLogLevel -Identity </span><span style="color: maroon;">&quot;MSExchangeSA\OAL Generator&quot; </span><span style="color: rgb(95, 158, 160);">-Level </span><span style="color: blue;">Expert </span><span style="color: red;">-</span><span style="color: blue;">Confirm</span><span style="color: black;">:</span><span style="color: blue;">$False
        </span><span style="color: black;">}
        </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Exiting Remote PS Session&quot; &quot;Cyan&quot;
        </span><span style="color: rgb(95, 158, 160);">Exit-PSSession
    </span><span style="color: black;">}</span><span style="color: blue;">else</span><span style="color: black;">{
        </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Mode Set to Disable&quot; &quot;Green&quot;
        </span><span style="color: rgb(95, 158, 160);">Invoke-Command -Session </span><span style="color: purple;">$Session </span><span style="color: black;">{

            </span><span style="color: rgb(95, 158, 160);">Set-EventLogLevel -Identity </span><span style="color: maroon;">&quot;MSExchangeSA\OAL Generator&quot; </span><span style="color: rgb(95, 158, 160);">-Level </span><span style="color: blue;">Lowest </span><span style="color: red;">-</span><span style="color: blue;">Confirm</span><span style="color: black;">:</span><span style="color: blue;">$False
        </span><span style="color: black;">}
        </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Exiting Remote PS Session&quot; &quot;Cyan&quot;
        </span><span style="color: rgb(95, 158, 160);">Exit-PSSession
    </span><span style="color: black;">}
}

</span><span style="color: blue;">function </span><span style="color: rgb(0, 0, 205);">update_OAB</span><span style="color: black;">{
    </span><span style="color: blue;">Param</span><span style="color: black;">(</span><span style="color: purple;">$fileName</span><span style="color: black;">)
    </span><span style="color: purple;">$PerformUpdate </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Update-OfflineAddressBook -Identity </span><span style="color: purple;">$oAddressBook

    </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Sleeping for 60 Seconds - ZZZZZZzzzzzzzzzz&quot; &quot;Green&quot;
    </span><span style="color: blue;">Sleep </span><span style="color: black;">60
    </span><span style="color: purple;">$GenerationServer </span><span style="color: red;">= </span><span style="color: blue;">get_OABServer
    script_Logging </span><span style="color: maroon;">&quot;Getting Event Logs from System Attendant on OAB Server&quot; &quot;Green&quot;
    </span><span style="color: purple;">$oabEVENTS </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-EventLog -ComputerName </span><span style="color: purple;">$GenerationServer </span><span style="color: rgb(95, 158, 160);">-LogName </span><span style="color: maroon;">&quot;Application&quot; </span><span style="color: rgb(95, 158, 160);">-Source </span><span style="color: maroon;">&quot;MSExchangeSA&quot; </span><span style="color: blue;">| where </span><span style="color: black;">{</span><span style="color: navy;">$_</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">Category </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;OAL Generator&#39;</span><span style="color: black;">}

    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;p class=headings&gt;OAB Generation Event Logs from OAB Generation Server: $GenerationServer&lt;/p&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;table&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;tr&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Event ID&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Time Generated&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Machine Name&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Entry Type&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;&lt;strong&gt;Message&lt;/strong&gt;&lt;/td&gt;&quot;
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/tr&gt;&quot;

    </span><span style="color: blue;">foreach</span><span style="color: black;">(</span><span style="color: purple;">$evt </span><span style="color: blue;">in </span><span style="color: purple;">$oabEVENTS</span><span style="color: black;">){

        </span><span style="color: purple;">$evtID </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">EventID
        </span><span style="color: purple;">$evtTime </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">TimeGenerated
        </span><span style="color: purple;">$evtMachine </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">MachineName
        </span><span style="color: purple;">$evtCat </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">Category
        </span><span style="color: purple;">$evtType </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">EntryType
        </span><span style="color: purple;">$evtMessage </span><span style="color: red;">= </span><span style="color: purple;">$evt</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">Message

        </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$evtType </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;Error&#39;</span><span style="color: black;">){
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;tr bgcolor=&quot;&quot;#FF0000&quot;&quot;&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtID&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtTime&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMachine&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtCat&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtType&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMessage&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/tr&gt;&quot;
        </span><span style="color: black;">}</span><span style="color: blue;">elseif</span><span style="color: black;">(</span><span style="color: purple;">$evtType </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;Warning&#39;</span><span style="color: black;">){
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;tr bgcolor=&quot;&quot;FBDA05&quot;&quot;&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtID&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtTime&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMachine&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtCat&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtType&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMessage&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/tr&gt;&quot;
        </span><span style="color: black;">}</span><span style="color: blue;">else</span><span style="color: black;">{

            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;tr&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtID&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtTime&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMachine&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtCat&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtType&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;td&gt;$evtMessage&lt;/td&gt;&quot;
            </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/tr&gt;&quot;
        </span><span style="color: black;">}
    }
    </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$fileName </span><span style="color: maroon;">&quot;&lt;/table&gt;&quot;
</span><span style="color: black;">}
    </span><span style="color: blue;">writeHeader </span><span style="color: purple;">$fHTML
    </span><span style="color: blue;">checkExchangeSN
    set_logging </span><span style="color: maroon;">&quot;enable&quot; &quot;Green&quot;
    </span><span style="color: blue;">update_OAB </span><span style="color: purple;">$fHTML
    </span><span style="color: blue;">set_logging </span><span style="color: maroon;">&quot;disable&quot; &quot;Green&quot;
    </span><span style="color: blue;">writeFooter </span><span style="color: purple;">$fHTML
    </span><span style="color: blue;">script_Logging </span><span style="color: maroon;">&quot;Script Completed&quot; &quot;Yellow&quot;
    </span><span style="color: rgb(95, 158, 160);">Invoke-Item </span><span style="color: purple;">$fHTML</span></pre>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/exchange2010/UpdateOABandLog.ps1" target="_blank">UpdateOABandLog.ps1 &ndash; 8KB</a> ]</p>
<h2>Script Usage</h2>
<p>Should you wish to use the script download it to a location on one of your Exchange Servers (<em>or a computer with the Exchange 2010 management tools installed</em>), open a Powershell session and type in the following command:</p>
<pre>.\UpdateOABandLog.ps1 -oAddressBook &quot;PrepAD Offline Address List&quot; -fHTML x:\scripts\OAB-Report.html</pre>
<p>If execution fails you might need to follow some of the steps that are detailed in the article that I detailed <a href="http://www.telnetport25.com/2012/02/quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file/" target="_blank">here</a>.</p>
<h2>Sample Script Output</h2>
<p>When the script is executed you will see output similar to the following screenshot</p>
<p><img alt="OAB_DownloadAdd7" height="199" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd7.png" style="display: inline;" title="OAB_DownloadAdd7" width="675" /></p>
<p>When the script has finished you should be presented with report within your default web browser that details all events that occurred during the execution of the &ldquo;<strong><em>Update-OfflineAddressBook</em></strong>&rdquo; cmdlet. The script is designed to highlight Warnings in Yellow and Errors in Red &ndash; see below</p>
<p><img alt="OAB_DownloadAdd6" height="446" src="http://www.telnetport25.com/wp-content/uploads/2012/05/OAB_DownloadAdd6.png" style="display: inline;" title="OAB_DownloadAdd6" width="680" /></p>
<h2>So what was my problem?</h2>
<p>I suppose that the above is a bit of a leading question really &#8211; those who know me will say that I have <em>loads</em> of problems, but in the context of this post the reason why my user was not appearing in the Offline Address List was down to a previously deleted OAB entry which was still the default OAB within Active Directory (<em>don&rsquo;t know who did this as I inherited this Exchange installation</em>) &ndash; after a bit of reconfiguration using ADSI edit all was back to normal &ndash; but using this script helped me identify the problem from a single workstation, and I hope that it will be of some use to someone out there.</p>
<div class="shr-publisher-1336"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F05%2Fquick-tip-script-to-collate-exchange-2010-oab-generation-logs%2F' data-shr_title='Quick+Tip+%26ndash%3B+Script+to+collate+Exchange+2010+OAB+Generation+Logs%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/05/quick-tip-script-to-collate-exchange-2010-oab-generation-logs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting a Lync 2010 adventure &#8211; some initial &#8220;newbie&#8221; issues that I found when deploying a Lync 2010 Lab&#8230;</title>
		<link>http://www.telnetport25.com/2012/04/starting-a-lync-2010-adventure-some-initial-newbie-issues-that-i-found-when-deploying-a-lync-2010-lab/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=starting-a-lync-2010-adventure-some-initial-newbie-issues-that-i-found-when-deploying-a-lync-2010-lab</link>
		<comments>http://www.telnetport25.com/2012/04/starting-a-lync-2010-adventure-some-initial-newbie-issues-that-i-found-when-deploying-a-lync-2010-lab/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 20:00:16 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Lync Server 2010 [ Deployment ]]]></category>
		<category><![CDATA[Lync Server 2010 [ General ]]]></category>
		<category><![CDATA[Lync]]></category>
		<category><![CDATA[Lync 2010]]></category>
		<category><![CDATA[Lync Databases]]></category>
		<category><![CDATA[Lync Deployment]]></category>
		<category><![CDATA[Lync Installation]]></category>
		<category><![CDATA[Lync Installation troubleshooting]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1322</guid>
		<description><![CDATA[I probably should have started to look at Lync Server a long time ago, but I never quite got around to it for one reason or another (I was going to say that I was just being lazy, but in truth I have really not had the time with all the other stuff that I [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I probably should have started to look at Lync Server a long time ago, but I never quite got around to it for one reason or another (<em>I was going to say that I was just being lazy, but in truth I have really not had the time with all the other stuff that I work on</em>). Recently however I have been asked to start looking at an &ldquo;<strong><em>in house</em></strong>&rdquo; Lync deployment for the company that I am currently working for. Whereas I have been sent a deluge of Lync related material by my boss, with me being me &ndash; and the way I like to learn I have decided to deploy it into my test lab without first RTFM&rsquo;ing as I kind of like to suffer the consequences!</p>
<p>Initially I have found that if you are used to purely setting up Exchange server (<em>2007 or 2010</em>), the Lync Deployment Wizard and topology builder will seem <strong><u>very</u></strong> alien and convoluted whilst at the same time making no sense whatsoever.</p>
<p><strong><u>However</u></strong>, that being said, I found &ndash; that you should preserve with the setup process &#8211; as after your sixth attempt (<em>it was around attempt 6 for me</em>) at the point when your configuration starts to work &ndash; it begins to become clear to you why the setup process structured in the way it is.</p>
<p>I would also go as far to say, that when it &ldquo;<strong><em>clicks</em></strong>&rdquo; in your head &#8211; you can see a number of similarities between Lync deployment and Exchange &#8211; although I need to stress that that Lync is a IMHO more complex beast, but it is obvious that a lot of thought has gone into the setup experience (<em>Elan, if you are reading this &ndash; kudos to you for working with Lync for so long and producing the content that you do </em><img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wlEmoticon-smile2.png" />)</p>
<p>I won&rsquo;t get into too much detail about the method that I used to get my environment up and running (<em>just yet</em>), mainly because it is a test lab (<em>where I want to test a few features whilst getting a feel for the kind of resourcing that a real deployment will require</em>), and is not intended for production scenarios and I admit that at the moment I do not know enough about Lync HA deployments &ndash; there are plenty of people around who know more than me about it at this point in time <img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wlEmoticon-smile2.png" />.</p>
<p>However if you really need a good reference to get your started &#8211; I can <strong><u>HIGHLY</u></strong> recommend <a href="http://policelli.com/blog/">John Policelli&#39;s Blog</a> where he has published an excellent <a href="http://policelli.com/Files/Deploying_Lync_Server_2010_Enterprise.pdf" target="_blank">100 page guide which focuses on deploying an Enterprise configuration of Lync 2010 in a lab environment</a>.</p>
<h2>Ok, so what was I trying to achieve with my lab?</h2>
<p>The requirements of my lab at this stage were (are):</p>
<ul>
<li>Provide IM and Presence abilities / Information for Lync enabled accounts</li>
<li>Provide Audio and Video conferencing</li>
</ul>
<p>I have provided a very simple &ldquo;<strong><em>high level</em></strong>&rdquo; overview of the setup below:</p>
<p><img alt="Lab-Lync-Overview" height="366" src="http://www.telnetport25.com/wp-content/uploads/2012/04/Lab-Lync-Overview.png" style="display: inline;" title="Lab-Lync-Overview" width="675" /></p>
<h2>What issues have a encountered so far?</h2>
<h3>SQL 2012</h3>
<p>I like all shiny new things, especially when its either Exchange or SQL server &ndash; but, whatever you do don&rsquo;t try and use Microsoft SQL Server 2012 as the backend database for Lync (<em>or any other Database which Lync uses for that matter</em>). I tried for days to get them to talk to one another &ndash; and had some successes, but ultimately &ndash; it does not work in the end and let&rsquo;s not forget &ndash; <strong><u>its not supported</u></strong>.</p>
<p>Honestly, I know that when we read about &ldquo;<strong><em>not supported</em></strong>&rdquo; we think, &ldquo;<strong><em>probably will work</em></strong>&rdquo; &ndash; but in this case it just doesn&rsquo;t &ndash; so don&rsquo;t try it &ndash; I did and wasted a load of time &ndash; if you need the official support stance and reasons why have a look <a href="http://blogs.technet.com/b/dcaro/archive/2012/03/13/support-of-sql-server-2012-with-microsoft-lync-2010.aspx" target="_blank">here</a> <img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wlEmoticon-smile2.png" /></p>
<h3>Local RTCLOCAL Database configuration failed on the Enterprise FE Server (for the XDS DB)</h3>
<p>This first issue which I encountered was admittedly down to my own stupidity, in essence my first few attempts at installing Lync resulted in a lot of aborted effort (<em>think of these failed attempts as Neanderthal man trying to make fire &ndash; there was a lot of keyboard banging and the words &ldquo;<strong>ugg, ugg</strong>&rdquo; then poo being thrown around</em>).</p>
<p>In essence I had ended up in a situation where I could publish the Lync Topology, but when using the [ <strong><em>Lync Deployment Wizard &ndash; &gt; Install or Update Lync Server System &ndash;&gt; Install Local Configuration Store</em></strong> ] on the Enterprise Front End Server &ndash; I was presented with a number of SQL database creation errors which related to the local &ldquo;<strong><em>RTCLOCAL</em></strong>&rdquo; instance (<em>this is the replica instance of the Central Configuration Store which is on each Enterprise FE server</em>).</p>
<p>This was caused by a failed installation where I had then tried to remove Lync and all its components from the FE server &ndash; this had only partially completed leaving both the MSSQL Express Instance (RTCLOCAL) and the &ldquo;<strong><em>Lync Server Replica Replicator Agent</em></strong>&rdquo; Services installed.</p>
<p>In the end I installed SQL 2008 R2 Express Edition Management Studio, and physically deleted the XDS database (<em>which was the only DB that had been created</em>). Of course this now left me without a means to begin the Database recreation process (<em>as I could not remove Lync fully</em>) &ndash; or progress my installation ~ bugger!.</p>
<p>Now I did not wish to blow away my lab at this point (<em>as I had foolishly activated the Windows 2008 R2 Server instances with MS</em>) and not taken a checkpoint of the VM&rsquo;s so my only way forward was to try and rescue the Lync instances.</p>
<p>As luck would have it I found this <a href="http://terenceluk.blogspot.co.uk/2011/05/how-lync-server-2010-setup-installs-and.html" target="_blank">wonderful article</a> by <a href="http://terenceluk.blogspot.co.uk/" target="_blank">Terence Luk</a> which whilst it did not solve my problem &ndash; did give me a major clue about how I could correct the issue. Essentially within Terence&rsquo;s post he explained that during a successful install of Lync server a file called <strong>LCSSetup_Commands.txt is created within <em>C:\Users\install account\AppData\Local\Temp</em></strong>&nbsp; created which contains all of the relevant PS and CSCRIPT commands which build your installation are stored.</p>
<p>It occurred to me at some point during my faffing about, the XDS Database must have been at the very least created correctly (<em>before I then blew it up</em>) &ndash; so if I could trace back through the &ldquo;<strong><em>LCSSetup_Commands.txt</em></strong>&rdquo; file I might be able to find the command line that creates the XDS replica database. I was then thinking that if I could get the XDS database working correctly, I might be able to run the Local Configuration Store process again.</p>
<p>Whilst looking inside the file I found the following command entry:</p>
<pre>CScript.exe //U //Nologo DBSetup.wsf /sqlserver:localhost\rtclocal /serveracct:&quot;PROD-LYNC-01\RTC Server Local Group;PROD-LYNC-01\RTC Component Local Group&quot; /adminacct:&quot;PROD-LYNC-01\RTC Local Administrators&quot; /roacct:&quot;PROD-LYNC-01\RTC Local Read-only Administrators&quot; /role:se /verbose</pre>
<p>Given that the whole process of setting up setting up the local replica instances had gone to &ldquo;<strong><em>hell in a hand basket</em></strong>&rdquo; seemed logical to execute again. So I opened up a Windows CMD prompt, navigated to the &ldquo;<strong><em>C:\Program Files\Common Files\Microsoft Lync Server 2010\DBSetup</em></strong>&rdquo; and executed the above command again (<em>this is probably not supported by MS BTW</em>) &ndash; but &ndash; it worked! and I was able to complete the process of installing the Local Configuration Store.</p>
<h3>Install Roles &ndash; Prerequisite WMF2008R2 Fails to install</h3>
<p>After I got past my (<em>self inflicted</em>) issues with the Lync Replica database I then encountered the following failure when attempting to run the Lync Server Components wizard:</p>
<p><img alt="wmf2008_instError" height="263" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wmf2008_instError.png" style="display: inline;" title="wmf2008_instError" width="676" /></p>
<p>In essence &ldquo;<strong><em>WMF2008R2</em></strong>&rdquo; is part of the media components for Lync server &ndash; and thankfully getting around error is very well documented on the web (for example here: <a href="http://www.howexchangeworks.com/2011/05/lync-2010-server-components-setup.html" title="http://www.howexchangeworks.com/2011/05/lync-2010-server-components-setup.html">http://www.howexchangeworks.com/2011/05/lync-2010-server-components-setup.html</a>) &ndash; I won&rsquo;t reproduce Rajith Jose Enchiparambil article in full here as I don&rsquo;t have permission, but suffice to say there is a command that you can run that corrects the issue (<em>in essence it adds the correct version of the pre-req to the Windows database</em>).</p>
<h3>Lync Address Book Updates</h3>
<p>After over coming the issues that I experienced above, the rest of the installation went very smoothly and before long I had a functional Lync system (<em>well at least from a server perspective</em>). The next thing was to provision a couple of users within the environment to give it a little test run. The provisioning process went smoothly (<em>I used the web based control panel as at this stage I am a bit of a wimp</em>) &ndash; see below</p>
<p><img alt="lync_ad_CP" height="185" src="http://www.telnetport25.com/wp-content/uploads/2012/04/lync_ad_CP.png" style="display: inline;" title="lync_ad_CP" width="675" /></p>
<p>I provisioned two users (<em>with a view to setup a bit of IM traffic and have a online conference meeting via the Lync client</em>) &ndash; this is where I hit a problem &ndash; When looking for my &ldquo;<strong><em>partner</em></strong>&rdquo; to add to my contact list I would receive the following message:</p>
<p>&ldquo;<strong><em>Address book is synchronizing. Results might not be current</em></strong>&rdquo; &ndash; see below</p>
<p><img alt="lync_ad_Client" height="255" src="http://www.telnetport25.com/wp-content/uploads/2012/04/lync_ad_Client.png" style="display: inline;" title="lync_ad_Client" width="473" /></p>
<p>In essence the above should really be down to being willing to wait for Lync&rsquo;s internal processes to complete &#8211; but you can force an Address Book Update by using the following command from the Lync Management Shell:</p>
<pre>Update-CsAddressBook</pre>
<p>In the example below I have added the &ndash;Verbose switch so you can see messages that are returned from the command:</p>
<p><img alt="lync_ad_ADBK3" height="79" src="http://www.telnetport25.com/wp-content/uploads/2012/04/lync_ad_ADBK3.png" style="display: inline;" title="lync_ad_ADBK3" width="601" /></p>
<p>You should then see the following event within the servers event logs (<em>below 21010 means that the process has completed</em>) &ndash; see below</p>
<p><img alt="lync_ad_ADBK1" height="280" src="http://www.telnetport25.com/wp-content/uploads/2012/04/lync_ad_ADBK1.png" style="display: inline;" title="lync_ad_ADBK1" width="711" /></p>
<p>And Event 21056 gives you an overview of the entire process &ndash; see below</p>
<p><img alt="lync_ad_ADBK2" height="413" src="http://www.telnetport25.com/wp-content/uploads/2012/04/lync_ad_ADBK2.png" style="display: inline;" title="lync_ad_ADBK2" width="675" /></p>
<p>However, even if you do see the above events; you still might not see the relevant contacts (<em>or updates</em>) appear within the Lync client as the it does not bring down the latest version of the address book immediately (<em>this is performed at a random interval of between 1 and 60 minutes</em>).</p>
<p>You can force this process by following the excellent guidance which Lync MVP <a href="http://blog.schertz.name/author/jeff-schertz/">Jeff Schertz</a> has provided <a href="http://blog.schertz.name/2010/09/updating-the-lync-2010-address-book/" target="_blank">here</a>.</p>
<p>So, that is it for now &ndash; I will be posting more over the next few weeks!</p>
<div class="shr-publisher-1322"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fstarting-a-lync-2010-adventure-some-initial-newbie-issues-that-i-found-when-deploying-a-lync-2010-lab%2F' data-shr_title='Starting+a+Lync+2010+adventure+%26ndash%3B+some+initial+%26ldquo%3Bnewbie%26rdquo%3B+issues+that+I+found+when+deploying+a+Lync+2010+Lab%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/starting-a-lync-2010-adventure-some-initial-newbie-issues-that-i-found-when-deploying-a-lync-2010-lab/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>March / April 2012 www.telnetport25.com Newsletter</title>
		<link>http://www.telnetport25.com/2012/04/march-april-2012-www-telnetport25-com-newsletter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=march-april-2012-www-telnetport25-com-newsletter</link>
		<comments>http://www.telnetport25.com/2012/04/march-april-2012-www-telnetport25-com-newsletter/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 16:16:58 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[April 2012]]></category>
		<category><![CDATA[March 2012]]></category>
		<category><![CDATA[Newsletters]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1311</guid>
		<description><![CDATA[The March and April 2012 www.telnetport25.com newsletter(s) are available for download from the following location: [ March / April 2012 Newsletter – 800KB ]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The March and April 2012 <a href="http://www.telnetport25.com">www.telnetport25.com</a> newsletter(s) are available for download from the following location:</p>
<p><img alt="adobe" src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" width="40" height="40" /> [ <a href="http://www.telnetport25.com/downloads/newsletters/telnetport25NewsletterMarchApril2012.pdf" target="_blank">March / April 2012 Newsletter – 800KB</a> ]</p>
<div class="shr-publisher-1311"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fmarch-april-2012-www-telnetport25-com-newsletter%2F' data-shr_title='March+%2F+April+2012+www.telnetport25.com+Newsletter'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/march-april-2012-www-telnetport25-com-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re-launch of Service Desk.NET 3.5.1&#8230;</title>
		<link>http://www.telnetport25.com/2012/04/re-launch-of-service-desk-net-3-5-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=re-launch-of-service-desk-net-3-5-1</link>
		<comments>http://www.telnetport25.com/2012/04/re-launch-of-service-desk-net-3-5-1/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 11:20:54 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Windows - Active Directory]]></category>
		<category><![CDATA[Windows 2003 IIS]]></category>
		<category><![CDATA[Windows 2008]]></category>
		<category><![CDATA[Windows 2008 (IIS)]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Password Reset Tool for Windows Active Directory Domains]]></category>
		<category><![CDATA[Passwords]]></category>
		<category><![CDATA[Service Desk]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1308</guid>
		<description><![CDATA[A looooong time ago (in about 2010 I think) I wrote an ASP.NET web enabled application that allowed for a defined group Service Desk users to be delegated password reset access for users within a given organisation. I had initially wrote the code for use within a company that I was working for at the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>A <strong><em>looooong</em></strong> time ago (in about 2010 I think) I wrote an ASP.NET web enabled application that allowed for a defined group Service Desk users to be delegated password reset access for users within a given organisation. I had initially wrote the code for use within a company that I was working for at the time as we were not keen on deploying ADUC to the service desk for a number of reasons.</p>
<p>I did make the tool available for download on <a href="http://www.telnetport25.com/" target="_blank">Telnetport25.com</a>, but somewhere during the migration from Joomla to WordPress I lost the source code, didn’t bring across the previous versions download location and could not find the original Word source of the Installation and Users manual (<em>doh!</em>)</p>
<p>However the other day (<em>during my migration from VMWARE to Hyper-V</em>) I found a load of old LAB machines hiding on an external hard drive – which I decided to “<strong><em>power on</em></strong>” to see what they used to do (<em>just in case there was something useful on them</em>). </p>
<p>To my delight I found the full source code for Service Desk.NET, as well as a load of the supporting documentation that I had written at the time – so I decided to give the tool a little bit of a face lift (<em>not by much</em>) – and add some new features to it &#8211; as well as tidy up the installation process (<em>which for the original tool was pretty intense</em>).</p>
<p>I have made ServiceDesk.NET available for download from the following location: <a title="http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/" href="http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/">http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/</a> so if you are looking for a pretty simple tool where you can simply delegate password resets to a group of users – check it out <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wlEmoticon-smile1.png" /></p>
<div class="shr-publisher-1308"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fre-launch-of-service-desk-net-3-5-1%2F' data-shr_title='Re-launch+of+Service+Desk.NET+3.5.1%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/re-launch-of-service-desk-net-3-5-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ServiceDesk.NET &#8211; Version 3.5.1</title>
		<link>http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=servicedesk-net-version-3-5-1</link>
		<comments>http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 11:11:48 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Password Reset Tool for Windows Active Directory Domains]]></category>
		<category><![CDATA[Passwords]]></category>
		<category><![CDATA[Service Desk]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1303</guid>
		<description><![CDATA[Information The telnetport25.com Service Desk.NET Password Reset tool is designed for small to medium sized organisations which have Service Desk operators whom it is not appropriate to provide access to the MMC of ADUC (Active Directory Users and Computers) &#8211; but require a secure means to reset customer passwords. Normally Service Desk Operators whom reset [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Information</h2>
<p>The telnetport25.com Service Desk.NET Password Reset tool is designed for small to medium sized organisations which have Service Desk operators whom it is not appropriate to provide access to the MMC of ADUC (Active Directory Users and Computers) &ndash; but require a secure means to reset customer passwords.</p>
<p>Normally Service Desk Operators whom reset domain passwords at the front line have their rights delegated to them via the Active Directory administrators for the organisation.</p>
<p>This method can be fiddly and indeed requires the Windows ADMIN PAK to be installed on each service desk operator&rsquo;s machines or indeed another 3<sup>rd</sup> party tool which can be expensive.</p>
<p>The telnetport25.com Service Desk.NET tool is simple to install, web based and allows for Service Desk Operative to reset customer&rsquo;s passwords under their own basic set of security principles (there is no delegation required by the Active Directory Admin).</p>
<p>The tool allows for Active Directory Administrators to configure restricted groups &ndash; whereby if the target account is a member of a group which is &ldquo;Disavowed&rdquo; the password cannot be reset and an event is logged in a secure database.</p>
<p><img alt="ServiceDeskdNET351" border="0" height="454" src="http://www.telnetport25.com/wp-content/uploads/2012/04/ServiceDeskdNET351.png" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="ServiceDeskdNET351" width="566" /></p>
<h2>System Requirements</h2>
<ul>
<li>Windows 2003 x32 Standard or Enterprise Edition (R2) &ndash; RTM Edition is fully supported, however SP2 is recommended.</li>
<li>Windows 2003 x64 Standard or Enterprise Edition (R2)</li>
<li>Windows 2008 x32 Standard or Enterprise Edition (R2) &ndash; RTM is supported (Windows 2008 is the recommended configuration)</li>
<li>IIS 6.0 / 7.0</li>
<li>NET Framework 3.5 (minimum)</li>
<li>Microsoft SQL Server 2008 (Standard, Enterprise or Express Edition) &ndash; <i>The software will function with SQL 2000 / 2005 but no configuration instructions are provided for these versions</i></li>
</ul>
<h2>Download</h2>
<p><img alt="setupIcon" height="55" src="http://www.telnetport25.com/wp-content/uploads/2012/03/setupIcon.png" title="setupIcon" width="57" />[ <a href="http://www.telnetport25.com/downloads/applications/ServiceDesk35/ServiceDeskInstaller.msi" target="_blank">Service Desk.NET 3.5.1 &ndash; Password Reset Tool &ndash; 800KB</a> ]</p>
<p><img src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" /> [ <a href="http://www.telnetport25.com/downloads/applications/ServiceDesk35/ServiceDesk-NET351-InstallUsersGuide.pdf" target="_blank">Installation and Users Guide &ndash; 5MB</a> ]</p>
<div class="shr-publisher-1303"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fservicedesk-net-version-3-5-1%2F' data-shr_title='ServiceDesk.NET+%26ndash%3B+Version+3.5.1'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/servicedesk-net-version-3-5-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip &#8211; hiberfil.sys on Windows 2003 Server&#8230;</title>
		<link>http://www.telnetport25.com/2012/04/quick-tip-rouge-hiberfil-sys-on-windows-2003-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-rouge-hiberfil-sys-on-windows-2003-server</link>
		<comments>http://www.telnetport25.com/2012/04/quick-tip-rouge-hiberfil-sys-on-windows-2003-server/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 17:37:18 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Windows Server 2003 (General)]]></category>
		<category><![CDATA[Hiberfil.sys]]></category>
		<category><![CDATA[Remove Hiberfil.sys]]></category>
		<category><![CDATA[VGASave]]></category>
		<category><![CDATA[Windows 2003]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1299</guid>
		<description><![CDATA[This is not an Exchange focussed post &#8211; but it is something that has driven me nuts for the last few days on one server within my Exchange 2007 lab running on Windows 2003 Server which I ported from VMWARE to Hyper-V. The situation was that on this specific LAB server &#8211; I found an [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>This is not an Exchange focussed post &ndash; but it is something that <u>has driven me nuts</u> for the last few days on one server within my Exchange 2007 lab running on Windows 2003 Server which I ported from VMWARE to Hyper-V.</p>
<p>The situation was that on this specific LAB server &#8211; I found an instance of &ldquo;<strong><em>hiberfil.sys</em></strong>&rdquo; weighing in at 3GB located in the root of the C: drive that I could not get rid of!</p>
<p>Now, I know that you can drop to a command line and use &ldquo;<strong><em>powercfg &ndash;h off</em></strong>&rdquo; or turn the hibernation features off from the Power Options applet within the control panel &ndash; but I found that the command line would return the following error when trying to execute the command:</p>
<p><img alt="hiberFile003" height="170" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile003.png" style="display: inline;" title="hiberFile003" width="662" /></p>
<p>and the Hibernation tab (<em>in the GUI</em>) was missing &ndash; see below:</p>
<p><img alt="hiberFile004" height="446" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile004.png" style="display: inline;" title="hiberFile004" width="402" /></p>
<p>To compound matters &#8211; when trying to delete the &ldquo;<strong><em>hiberfil.sys</em></strong>&rdquo; file (<em>from the root of C:\</em>) I received &ldquo;<strong><em>This file is in use by another process</em></strong>&rdquo; or &ldquo;<strong><em>Access is Denied</em></strong>&rdquo;.</p>
<h2>The solution</h2>
<p>After a lot of messing around with the server in question, I arrived at the following solution (<em>detailed in the following steps</em>):</p>
<h3>Step1:</h3>
<p>Add the following command to the &ldquo;<strong><em>boot.ini</em></strong>&rdquo; file (<em>which is typically found in the root of c:</em>\):</p>
<pre>/MAXMEM=4096</pre>
<p>An example of my &ldquo;<strong><em>boot.ini</em></strong>&rdquo; is&nbsp; provided below:</p>
<p><img alt="hiberFile001" height="216" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile001.png" style="display: inline;" title="hiberFile001" width="445" /></p>
<p><strong><u>DO NOT</u></strong> reboot your computer at this stage.</p>
<h3>Step 2:</h3>
<p>Open Computer Management MMC and expand &ldquo;<strong><em>System Tools</em></strong>&rdquo;&nbsp; node and then right click on the &ldquo;<strong><em>Device Manager</em></strong>&rdquo; node. From the context menu that appears choose [ <strong><em>VIEW-&gt;Show hidden devices</em></strong> ] &ndash; see below</p>
<p><img alt="hiberFile005" height="309" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile005.png" style="display: inline;" title="hiberFile005" width="448" /></p>
<p>In the right hand pane that appears navigate to [ <strong><em>Non-Plug and Play Drivers &ndash;&gt; VGA Display Controllers</em></strong> ] &ndash; see below</p>
<p><img alt="hiberFile006" height="739" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile006.png" style="display: inline;" title="hiberFile006" width="277" /></p>
<p>Right click on the entry for the &ldquo;<strong><em>VGA Display Controller</em></strong>&rdquo; &ndash; and from the context menu that appears choose &ldquo;<strong><em>Uninstall</em></strong>&rdquo; &ndash; see below:</p>
<p><img alt="hiberFile007" height="103" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile007.png" style="display: inline;" title="hiberFile007" width="320" /></p>
<h3>Step 3:</h3>
<p>When the &ldquo;<strong><em>VGA Display Controller</em></strong>&rdquo; has been removed from the system reboot your computer (<em>you should be prompted for </em><em>the reboot</em>).</p>
<h3>Step 4:</h3>
<p>When the reboot has completed you will see that within the &ldquo;<strong><em>Power Options</em></strong>&rdquo; control panel the &ldquo;<strong><em>Hibernate</em></strong>&rdquo; tab will now be displayed &ndash; un-tick the &ldquo;<strong><em>Enable hibernation</em></strong>&rdquo; check box under the &ldquo;<strong><em>Hibernate</em></strong>&rdquo; option area and then click on &ldquo;<strong><em>OK</em></strong>&rdquo; &ndash; see below:</p>
<p><img alt="hiberFile008" height="446" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile008.png" style="display: inline;" title="hiberFile008" width="408" /></p>
<p>If you then run the &ldquo;<strong><em>powercfg &ndash;h off</em></strong>&rdquo; you will see that the values for system hibernation are now set to &ldquo;<strong><em>Never</em></strong>&rdquo; &ndash; see below:</p>
<p><img alt="hiberFile009" height="228" src="http://www.telnetport25.com/wp-content/uploads/2012/04/hiberFile009.png" style="display: inline;" title="hiberFile009" width="339" /></p>
<p>and most importantly the &ldquo;<strong><em>hiberfil.sys</em></strong>&rdquo; has now been removed from your computer.</p>
<div class="shr-publisher-1299"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fquick-tip-rouge-hiberfil-sys-on-windows-2003-server%2F' data-shr_title='Quick+Tip+-+hiberfil.sys+on+Windows+2003+Server%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/quick-tip-rouge-hiberfil-sys-on-windows-2003-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip &#8211; Programmatically Returning all Distribution Groups in AD within a C# project&#8230;</title>
		<link>http://www.telnetport25.com/2012/04/quick-tip-programmatically-returning-all-distribution-groups-in-ad-within-a-c-project/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-programmatically-returning-all-distribution-groups-in-ad-within-a-c-project</link>
		<comments>http://www.telnetport25.com/2012/04/quick-tip-programmatically-returning-all-distribution-groups-in-ad-within-a-c-project/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 09:35:18 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Windows - Active Directory]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Distribution Groups]]></category>
		<category><![CDATA[Programmatically Listing Distribution Groups]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1289</guid>
		<description><![CDATA[I am working on a new application at the moment which requires for all Distribution Groups within an Exchange 2010 environment to be populated into a Drop Down list on the default ASP.NET page, and then based upon the selected Distribution group place the SMTP addresses of each member of that group into a list [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I am working on a new application at the moment which requires for all Distribution Groups within an Exchange 2010 environment to be populated into a Drop Down list on the default ASP.NET page, and then based upon the selected Distribution group place the SMTP addresses of each member of that group into a list box.</p>
<p>Having a hunt all over the web to see if this has been done before (well I say “<strong><em>all over the web</em></strong>”, maybe about 0.016% of it!) – I could not find a code example which quite met my needs.</p>
<p>Therefore I decided to have a crack at it myself – and to my surprise came up with the following code which works! (<em>I am not saying that it is the most efficient way of doing it – just that it works</em>).</p>
<p>If you are interested in using the code sample below, you will need to start a new C# project in Visual Studio, and ensure that the you have imported the “<strong>System.DirectoryServices</strong>” reference into your project – this is accomplished by adding the reference at the top of your main code file – see below</p>
<pre class="code"><span style="color: blue">using </span>System.DirectoryServices;</pre>
<p>You will also need to add the following Controls for your Form:</p>
<ul>
<li>A drop down list control – called dd_Membership </li>
<li>A List control – called lb_Members </li>
</ul>
<p>The main part of the code uses LDAP filters within the DirectorySearcher object to perform the following actions:</p>
<ul>
<li>Locate all Groups in the Directory that are of the type “Distribution” – this uses the filter:
<pre class="code"><span style="color: #a31515">(&amp;(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))
</span></pre>
</li>
<li>Locate all members of the selected distribution group using the following filter:
<pre style="width: 654px; height: 82px" class="code"><span style="color: #a31515">(&amp;(objectCategory=person)(|(objectClass=contact)(objectClass=user))(memberOf=&quot; </span>+ dd_Membership.Text + <span style="color: #a31515">&quot;))
</span></pre>
</li>
</ul>
<p>The code looks which populates both the Distribution list and get the membership to the list box looks like the following:</p>
<pre class="code"><span style="color: blue">public static </span><span style="color: #2b91af">DirectoryEntry </span>GetDirectoryEntry()
       {
           <span style="color: blue">try
           </span>{
               <span style="color: #2b91af">DirectoryEntry </span>entryRoot = <span style="color: blue">new </span><span style="color: #2b91af">DirectoryEntry</span>(<span style="color: #a31515">&quot;LDAP://RootDSE&quot;</span>);
               <span style="color: blue">string </span>Domain = (<span style="color: blue">string</span>)entryRoot.Properties[<span style="color: #a31515">&quot;defaultNamingContext&quot;</span>][0];

               <span style="color: #2b91af">DirectoryEntry </span>de = <span style="color: blue">new </span><span style="color: #2b91af">DirectoryEntry</span>();

               de.Path = <span style="color: #a31515">&quot;LDAP://&quot; </span>+ Domain;
               de.AuthenticationType = <span style="color: #2b91af">AuthenticationTypes</span>.Secure;

               <span style="color: blue">return </span>de;
           }
           <span style="color: blue">catch
           </span>{
               <span style="color: blue">return null</span>;
           }

       }

       <span style="color: blue">protected void </span>Page_Load(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
       {

           <span style="color: #2b91af">DirectoryEntry </span>entry = GetDirectoryEntry();
           <span style="color: #2b91af">DirectorySearcher </span>search = <span style="color: blue">new </span><span style="color: #2b91af">DirectorySearcher</span>(entry);
           search.Filter = <span style="color: #a31515">&quot;(&amp;(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))&quot;</span>;
           <span style="color: #2b91af">SearchResultCollection </span>results;
           results = search.FindAll();

           <span style="color: blue">foreach </span>(<span style="color: #2b91af">SearchResult </span>ent <span style="color: blue">in </span>results)
           {
               dd_Membership.Items.Add(ent.Properties[<span style="color: #a31515">&quot;DistinguishedName&quot;</span>][0].ToString());
           }

           search.Filter = <span style="color: #a31515">&quot;(&amp;(objectCategory=person)(|(objectClass=contact)(objectClass=user))(memberOf=&quot; </span>+ dd_Membership.Text + <span style="color: #a31515">&quot;))&quot;</span>;
           results = search.FindAll();

           lb_Members.Items.Clear();

           <span style="color: blue">foreach </span>(<span style="color: #2b91af">SearchResult </span>ent <span style="color: blue">in </span>results)
           {

               lb_Members.Items.Add(ent.Properties[<span style="color: #a31515">&quot;mail&quot;</span>][0].ToString());
           }
       }</pre>
<p>Which produces results like the following within your application:</p>
<p><img style="display: inline" title="distListcSharpeExample" alt="distListcSharpeExample" src="http://www.telnetport25.com/wp-content/uploads/2012/04/distListcSharpeExample.png" width="605" height="311" /></p>
<p>Of course there might be more efficient ways to accomplish the above (which if you have come across, please feel free to link them in the comments section) – but I thought that this might help someone out along the way.</p>
<div class="shr-publisher-1289"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fquick-tip-programmatically-returning-all-distribution-groups-in-ad-within-a-c-project%2F' data-shr_title='Quick+Tip+%26ndash%3B+Programmatically+Returning+all+Distribution+Groups+in+AD+within+a+C%23+project%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/quick-tip-programmatically-returning-all-distribution-groups-in-ad-within-a-c-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MVP Award for 2012  &#8211;  4th time&#8217;s a charm (and special)&#8230;</title>
		<link>http://www.telnetport25.com/2012/04/mvp-award-for-2012-4th-times-a-charm-and-special/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mvp-award-for-2012-4th-times-a-charm-and-special</link>
		<comments>http://www.telnetport25.com/2012/04/mvp-award-for-2012-4th-times-a-charm-and-special/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 15:58:38 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[MVP Award]]></category>
		<category><![CDATA[MVP]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1284</guid>
		<description><![CDATA[I am (almost) speechless – I have just received a notification that I have been re-awarded the status of Exchange MVP for the 4th year running from Microsoft. I am really pleased &#8211; and again – humbled and honoured that people who read this site and my community peers still think that all this time [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I am (<em>almost</em>) speechless – I have just received a notification that I have been re-awarded the status of Exchange MVP for the 4th year running from Microsoft. I am really pleased &#8211; and again – <strong><em>humbled</em></strong> and honoured that people who read this site and my community peers still think that all this time later I am still worth the time to nominate and consider.</p>
<p>It has been an interesting couple of years, having moved out of the “<strong><em>hands on</em></strong>” technical role to a strategic endeavour and more recently (<em>in the last month</em>) back into a senior technical position &#8211; I will admit that it has been hard to keep my time up on the site and keeping pace with the ever changing world of Exchange Server <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.telnetport25.com/wp-content/uploads/2012/04/wlEmoticon-smile.png" />.</p>
<p>One of the very best things about being an MVP is the people who you meet and converse with online – whether they are readers of a (<em>this</em>) site, members of forums, fellow MVP’s, Community Site owners or Microsoft employees – each and everyone of those individuals contribute to a single MVP’s status and for want of a better term ~ success.</p>
<p>I would not have managed to of been re-awarded this year if it were not for the continued advice of other MVP’s, the consideration of people like Barbara Matysik-Magro (of <a href="http://www.msexchange.org/" target="_blank">MSExchange.org</a>) and – a <strong><em>very, very</em></strong> personal thanks to my MVP lead <strong><u>Claire Smyth</u></strong> who supported me with an issue with my submission when she did not really have to.</p>
<p>But <strong><em>most </em></strong>importantly – I thank <strong><u>you</u></strong>, the reader(<em>s</em>) of this – who (<em>and to sound cliché</em>) – it really would not be worth it, unless you viewed, commented upon and suggested things. Even if I were not an MVP I would still put my energies into <a href="http://www.telnetport25.com">www.telnetport25.com</a> as even if my inane ramblings helps one person – then it is worth it!</p>
<p>Anyhow ~ I am hoping to produce a bumper year here on <strong><em>telnetport25.com</em></strong> (<em>I have a load of ideas that I want to get published</em>) – so all that I have left to say is ~ thank you once again – and of course have a great Easter!</p>
<div class="shr-publisher-1284"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F04%2Fmvp-award-for-2012-4th-times-a-charm-and-special%2F' data-shr_title='MVP+Award+for+2012++-++4th+time%26rsquo%3Bs+a+charm+%28and+special%29%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/04/mvp-award-for-2012-4th-times-a-charm-and-special/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quick Tip &#8211; Delegating Distribution Group Creation &amp; Management in Exchange 2010&#8230;</title>
		<link>http://www.telnetport25.com/2012/03/quick-tip-delegating-distribution-group-creation-management-in-exchange-2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-delegating-distribution-group-creation-management-in-exchange-2010</link>
		<comments>http://www.telnetport25.com/2012/03/quick-tip-delegating-distribution-group-creation-management-in-exchange-2010/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 19:09:08 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Distribution Groups]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange Control Panel]]></category>
		<category><![CDATA[RBAC]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1281</guid>
		<description><![CDATA[I was asked the above question the other day – essentially, how do you have a group of people with delegated access to manage all aspects of Distribution Lists within Exchange 2010? There was a desire to devolve the management of its Distribution Lists the HR section, therefore releasing a number of members from the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I was asked the above question the other day – essentially, how do you have a group of people with delegated access to manage all aspects of Distribution Lists within Exchange 2010?   </p>
<p>There was a desire to devolve the management of its Distribution Lists the HR section, therefore releasing a number of members from the 3rd tier support group.</p>
<p>Luckily there is a built-in RBAC role in Exchange 2012 called “<strong><em>Manage Distribution Groups</em></strong>” which is designed to allow for delegated control of distribution management and creation – which by default has no members (<em>or groups</em>) – therefore it is relatively straight forward to add in a custom Universal Security Group in AD to the RBAC role to allow for member of the security group to administer.</p>
<h2>Create a Universal Security Group in Active Directory</h2>
<p>In order to take advantage of the built in RBAC group you should create a universal security group within your active directory environment which will contain the user accounts that will have the permissions to create / modify Distribution lists.</p>
<p>You can of course assign members to the RBAC role on a per account basis, but this ultimately becomes difficult to manage – so the group based approach is highly recommended.</p>
<p>In order to setup the security group that will contain the user accounts that you wish to delegate administrative permissions to &#8211; open <strong>Active Directory Users and Computers</strong> and “<strong><em>right click</em></strong>” on the location where you would like to store the security group – then from the context menu that appears choose [ <strong>New –&gt; Group</strong> ] – see below:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="distMgmt001" border="0" alt="distMgmt001" src="http://www.telnetport25.com/wp-content/uploads/2012/03/distMgmt001.png" width="460" height="508" /></p>
<p>From the “<strong><em>New Object – Group</em></strong>” properties dialog box fill in the information (<strong><em>Group Name and Group Name (pre-Windows 2000</em></strong>) as you wish, ensure that the group scope is set to “<strong><em>Universal</em></strong>” and the “<strong><em>Group Type</em></strong>” is set to “<strong><em>Security</em></strong>” – see below</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="distMgmt002" border="0" alt="distMgmt002" src="http://www.telnetport25.com/wp-content/uploads/2012/03/distMgmt002.png" width="446" height="380" /></p>
<p>You can now add the members of the security group that you wish to manage all distribution groups within the directory and Exchange environment.</p>
<p>When you are done, click on the “<strong><em>OK</em></strong>” button and close ADUC.</p>
<h2>Exchange Management Shell Command</h2>
<p>Open the Exchange Management Shell and type in the following command:</p>
<p><font face="Courier New">Add-RoleGroupMember “Manage Distribution Groups” –Member “&lt;name of the security group&gt;”</font></p>
<p>Where the “<strong><em>&lt;name of security group&gt;</em></strong>” is the name of the group that you created in AD – see below</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="distMgmt003" border="0" alt="distMgmt003" src="http://www.telnetport25.com/wp-content/uploads/2012/03/distMgmt003.png" width="566" height="57" /></p>
<p>After these changes have been made, the members of the AD security group that you defined will be able to manage distribution lists either from Outlook, or within the Exchange Control Panel (ECP) – see below</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="distMgmt004" border="0" alt="distMgmt004" src="http://www.telnetport25.com/wp-content/uploads/2012/03/distMgmt004.png" width="710" height="633" /></p>
<div class="shr-publisher-1281"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F03%2Fquick-tip-delegating-distribution-group-creation-management-in-exchange-2010%2F' data-shr_title='Quick+Tip+-+Delegating+Distribution+Group+Creation+%26amp%3B+Management+in+Exchange+2010%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/03/quick-tip-delegating-distribution-group-creation-management-in-exchange-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducing the Nagios Discovery Tool for Windows&#8230;</title>
		<link>http://www.telnetport25.com/2012/03/introducing-the-nagios-discovery-tool-for-windows/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-the-nagios-discovery-tool-for-windows</link>
		<comments>http://www.telnetport25.com/2012/03/introducing-the-nagios-discovery-tool-for-windows/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 13:47:48 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Nagios Discovery Tool for Windows]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1274</guid>
		<description><![CDATA[Back in February I delivered a preview of a new tool that I had been working on called the “Nagios Discovery Tool for Windows” – or the NDT for short. Since then I have been trying to get a manual for the tool together, but as is the way of my life it has been [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img style="margin: 5px 11px 0px 0px; display: inline; float: left" title="NagiosLogo" alt="NagiosLogo" align="left" src="http://www.telnetport25.com/wp-content/uploads/2012/03/NagiosLogo.png" width="220" height="76" />Back in February I delivered a preview of a new tool that I had been working on called the “<strong><em>Nagios Discovery Tool for Windows</em></strong>” – or the NDT for short.     <br />Since then I have been trying to get a manual for the tool together, but as is the way of my life it has been very hectic so I have made little progress on that front.</p>
<p>A number of readers have commented and mailed me asking to test the tool for which I am very grateful – but I did not want to put it out into the open until I had at least put some sort of very basic user guide together. Therefore I decided that I would do a few videos which take you through the installation and configuring a basic monitoring setup – these are now done ~ <em>yaaaa!</em> – and I am pleased to announce that I have made the program available for download.</p>
<p>Now there are a couple of things that I would like to point out to folks, just so there is a little bit of expectation management:</p>
<ol>
<li>I consider the tool very much in the “<strong><em>Release Candidate</em></strong>” phase – therefore there are some elements of the tool that will be subject to change (<strong><em>or might not work as well as expected</em></strong>). If you should find something odd, let me know and I<img style="background-image: none; border-right-width: 0px; margin: 7px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NagDisLogo" border="0" alt="NagDisLogo" align="right" src="http://www.telnetport25.com/wp-content/uploads/2012/03/NagDisLogo.png" width="249" height="261" /> will fit it into a bug release ~ but my time at the moment is a little limited so bear with me on fixing stuff </li>
<li>Aside from the videos that I am putting on my You Tube channel – <u>there is no official documentation</u> as of yet – I am writing it, but naturally its fairly time consuming ~ so please bear with me </li>
<li>The tool is designed to be used in conjunction with my own Nagios series – therefore some of the more interesting service monitors (<strong><em>Exchange DAG and the AD replication Monitors for example</em></strong>) will need to be setup on your Nagios Core server as per the articles located <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">here</a>, <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">here</a>, <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/" target="_blank">here</a> and <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/" target="_blank">here</a> </li>
</ol>
<h2>Download Link</h2>
<p>The download page for the Nagios Discovery Tool is located here: <a title="http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/" href="http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/">http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/</a></p>
<p>On the download page you will find some useful release information, as well as some video overviews which cover installation and very basic usage.</p>
<div class="shr-publisher-1274"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F03%2Fintroducing-the-nagios-discovery-tool-for-windows%2F' data-shr_title='Introducing+the+Nagios+Discovery+Tool+for+Windows%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/03/introducing-the-nagios-discovery-tool-for-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Discovery Tool (NDT) &#8211; Version 1.01</title>
		<link>http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-discovery-tool-version-1-0</link>
		<comments>http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 18:34:01 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Infrastructure Monitoring]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Nagios Discovery Tool for Windows]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1265</guid>
		<description><![CDATA[Information The Nagios Discovery tool is designed to make the process of discovering devices on your network and then configuring them for active monitoring with Nagios Core simpler. The Tool provides a GUI interface to scan for hosts and configure the relevant monitoring facets (services) that are associated with them. The tool comes supplied with [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Information</h2>
<p>The Nagios Discovery tool is designed to make the process of discovering devices on your network and then configuring them for active monitoring with Nagios Core simpler. The Tool provides a GUI interface to scan for hosts and configure the relevant monitoring facets (<strong><em>services</em></strong>) that are associated with them.</p>
<p>The tool comes supplied with a number of XML files which define some common service elements to monitor (<strong><em>for example Basic Windows Services</em></strong>) – this is called the <strong>Nagios Discovery Tool XML Service Framework</strong>. </p>
<p>I have also supplied a number of XML files which allow for the configuration of the Scripts that I have supplied as part of my on-going series of Monitoring Exchange Server with Nagios Core (<strong><em>the series started </em></strong><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank"><strong><em>here</em></strong></a>) and the scripts are located for download <a href="http://www.telnetport25.com/category/scriptsrep/ex2010scrpts/exchange-2010-nagios/" target="_blank">here</a>.</p>
<p>The service monitoring capabilities of the Nagios Discovery tool are designed to be extended via this XML framework which removes the need for the actual executable file to be replaced and allows for users of the tool to customise the monitoring functionality that it provides (<em>e.g. if you develop your own custom NRPE scripts</em>).</p>
<p><img style="display: inline" title="NagDiscScreenExample" alt="NagDiscScreenExample" src="http://www.telnetport25.com/wp-content/uploads/2012/03/NagDiscScreenExample.png" width="696" height="690" /></p>
<h2>Firewalls</h2>
<p>The Nagios Discovery Tool needs to be able to connect to your local network and use ICMP to both resolve and confirm that hosts are online.    <br />Given the above, if you are running a local Firewall you will need to configure an exception for the tool, otherwise it will not work properly.</p>
<p>It is<strong><u> important</u></strong> to note that you should not disable your local Firewall as this will leave your system unprotected.</p>
<p>Conversely if hosts which are to be monitored are running a local Firewall then there is a chance that the tool will not find them, therefore Firewall exceptions may need to be implemented to allow for the discovery process to succeed.</p>
<h2>Scanning Network Ranges</h2>
<p>This tool has the ability to scan network ranges. Whilst all it does is look for hosts, resolve their name and try to ping them, you should ensure that by using the NDT you are complying with your organisations acceptable use policies and are authorised to perform range scans. Furthermore, do not use the tool to scan hosts on the Internet.</p>
<h2>System Requirements</h2>
<ul>
<li>Windows Vista (x32 &amp; x64), Windows 7 (x32 &amp; x64), Windows Server 2003 (all editions + x32 &amp; x64), Windows Server 2008 (all editions + x32 &amp; x64), Windows Server 2008 R2 </li>
<li><strong>.NET Framework version 4.0 </strong></li>
<li>Nagios Core – version 3.3.1 (<em>this is the version that the tool has been tested against – but it is likely to work with future releases of Nagios Core</em>). </li>
</ul>
<h2>Download</h2>
<p><img style="display: inline" title="setupIcon" alt="setupIcon" src="http://www.telnetport25.com/wp-content/uploads/2012/03/setupIcon.png" width="57" height="55" />[ <a href="http://www.telnetport25.com/downloads/applications/nagiosdiscovertool/NagiosDiscoverySetup.msi" target="_blank">Nagios Discovery Tool for Windows – Version 1.0 – 570KB</a> ]</p>
<h2>Installation</h2>
<p>A video tutorial is available below:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7ce31966-524d-4355-b277-93d02dbb9bcc" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/1XriRK8Qt3s?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/1XriRK8Qt3s?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Installing the Nagios Discovery Tool</div>
</div>
<h2>Usage</h2>
<p>A video tutorial is available below:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b8bf6e1b-eece-4ef8-809f-fd4a81616ce7" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/cBYTrx_7a84?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/cBYTrx_7a84?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Basic use of the Nagios Discovery Tool</div>
</div>
<h2>Nagios Discovery Tool XML Service Framework (NDT-X)</h2>
<p>The Nagios Discovery Tool XML Services Framework is designed to allow for both customisation and servicing of the NDT.    <br />Supplied with the tool are a number of XML files which allow for you as the user and me as the author to add to the service check command set for each host within your Nagios installation.</p>
<p><strong><em>For example</em></strong>; if you have been following my series of how to create custom Powershell scripts for use with Nagios for monitoring Exchange server as an example, you can add in your service check commands into the supplied XML files – and have them available for new hosts as you bring them onto the network.</p>
<p>Below I have supplied an overview of the Framework (<strong><em>full documentation is still being complied</em></strong>) for reference, and perhaps to get some of you started with customisation.</p>
<p><img src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" /> [ <a href="http://www.telnetport25.com/downloads/applications/nagiosdiscovertool/NagiosDiscoveryTool-XMLServicesFrameworkOverview.pdf" target="_blank">NDT-X Framework Overview – 350KB</a> ]</p>
<h2>Credits</h2>
<p>The Nagios Discovery Tool uses modified portions of code by <a href="http://www.codeproject.com/script/Membership/View.aspx?mid=834772" target="_blank">Sharpoverride</a> – I thank him for his efforts in developing a very basic IP range scanner.</p>
<div class="shr-publisher-1265"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F03%2Fnagios-discovery-tool-version-1-0%2F' data-shr_title='Nagios+Discovery+Tool+%28NDT%29+-+Version+1.01'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/03/nagios-discovery-tool-version-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting notified of Active Directory Group Membership&#8230;</title>
		<link>http://www.telnetport25.com/2012/03/getting-notified-of-active-directory-group-membership/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-notified-of-active-directory-group-membership</link>
		<comments>http://www.telnetport25.com/2012/03/getting-notified-of-active-directory-group-membership/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 20:04:35 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows 2008]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>
		<category><![CDATA[Active Directory Management Gateway Services]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Monitoring Windows Groups]]></category>
		<category><![CDATA[Powerhshell]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1260</guid>
		<description><![CDATA[Ok, whilst this is not a Exchange focussed post, I am hoping that it will help some folks out there. I have over the years been in charge of some quite large Active Directory environments, which naturally have a number of Administrators – some of which are based in many locations and sometimes in different [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Ok, whilst this is not a Exchange focussed post, I am hoping that it will help some folks out there. I have over the years been in charge of some quite large Active Directory environments, which naturally have a number of Administrators – some of which are based in many locations and sometimes in different physical groups within a given company.</p>
<p>Now, in such scenarios you tend to to end up with people whom are responsible for the administration having different levels of discipline in controlling access to sensitive, key groups within the directory or who make changes in a dis-jointed fashion without communicating the changes. I think that most of us have encountered that person who will add a user into the “<strong><em>Domain Admins</em></strong>” or “<strong><em>Enterprise Admins</em></strong>” group to solve an immediate permissions issue (<em>and of course by doing so committing a cardinal sin of any form of AD management</em>) – and then forget to remove them.</p>
<p>In some organisations (<em>especially large ones with lots of admins</em>) this is usually only picked upon when there is an audit (<em>this has happened to me on a number of occasions</em>) and as “<a href="http://en.wikipedia.org/wiki/Sod's_law" target="_blank">sods law</a>” dictates you will be left looking kind of silly in front of the auditor that you just told that you run a ship toighter than <a href="http://www.youtube.com/watch?v=gu31VyXlTzo" target="_blank">Goldmember’s tiger</a>!</p>
<p>Now, unless you have some form of dedicated group monitoring product – which is keeping track of who has been placed within your critical security groups – effective governance can be a little difficult (<em>mainly down to the fact that as administrators you probably have 101 other things to be worried about</em>) – so, I have written a very simple script in Powershell that will scan the group membership of any number of groups that you stipulate and send an e-mail to you which tells you who the current members of each group are.</p>
<p>You can schedule this script to run periodically (<em>or depending on your organisational inspection policy</em>) and review the results for irregularities.</p>
<p>This script is designed to be executed against Domain Controllers which are running Active Directory Management Gateway Service – therefore your environment will require at least one domain controller that conforms to the following:</p>
<ul>
<li>Windows 2008 R2 (native support) </li>
<li>Windows 2008 RTM (with the <a href="http://www.microsoft.com/download/en/details.aspx?id=2852" target="_blank">Active Directory Management Gateway Service Installed</a>) </li>
<li>Windows 2008 SP2 (with the <a href="http://www.microsoft.com/download/en/details.aspx?id=2852" target="_blank">Active Directory Management Gateway Service Installed</a>) </li>
<li>Windows 2003 R2 (with the <a href="http://www.microsoft.com/download/en/details.aspx?id=2852" target="_blank">Active Directory Management Gateway Service Installed</a>) </li>
<li>Windows 2003 SP2 (with the <a href="http://www.microsoft.com/download/en/details.aspx?id=2852" target="_blank">Active Directory Management Gateway Service Installed</a>) </li>
</ul>
<p>It is recommended that you execute this script on a DC which has the Management Gateway service installed, if you only have a single domain controller with this service you will need to ensure that the <font face="Courier New">$ADWSDC</font> value at the top of the script is populated with the name of that DC ~ I would personally recommend that all of your Domain Controllers have this service installed.</p>
<p>You should also populate the <font face="Courier New">$SMTPServer</font> value with that of an SMTP server which you can relay the notification messages off of, as well as the <font face="Courier New">$MessageFrom</font> and <font face="Courier New">$MessageTo</font> values set (<em>as the sender and recipient respectively for the report</em>).</p>
<p>If you would like to add additional groups which are to be inspected by the script – have a look at the <font face="Courier New">$strCriticalGroups</font> constant – you can add additional groups but typing in their name (<em>separating them via a comma</em>) and saving the script.</p>
<h2>The Script</h2>
<p>You can view the script below and copy and paste it into a new PS1 script file on your domain controller. If you would like to schedule the script via the task Scheduler – there are some instructions <a href="http://www.telnetport25.com/2012/02/quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file/" target="_blank">here</a> which explain how you can use Powershell scripts from the command line or via batch files, which can then be used with the Task Scheduler to run at periodic intervals.</p>
<pre class="code"><span style="color: green"># Active Directory Group Notification Reporting Script
# Author: Andy Grogan
# www.telnetport25.com
# Credits: sendMail function based upon code from the
# Windows PowerShell Team:
# http://blogs.msdn.com/b/powershell/archive/2009/10/30/sending-automated-emails-with-send-mailmessage-convertto-html-and-the-powershellpack-s-taskscheduler-module.aspx

</span><span style="color: purple">$ADWSDC </span><span style="color: red">= </span><span style="color: maroon">&quot;prod-dc-01&quot;
</span><span style="color: purple">$SMTPServer </span><span style="color: red">= </span><span style="color: maroon">&quot;172.31.253.140&quot;
</span><span style="color: purple">$MessageFrom </span><span style="color: red">= </span><span style="color: maroon">&quot;infoSec@prepad.local&quot;
</span><span style="color: purple">$MessageTo </span><span style="color: red">= </span><span style="color: maroon">&quot;administrator@prepad.local&quot;

</span><span style="color: #5f9ea0">Import-Module </span><span style="color: maroon">ActiveDirectory
</span><span style="color: black">[</span><span style="color: teal">Array</span><span style="color: black">]</span><span style="color: purple">$strCriticalGroups </span><span style="color: red">= </span><span style="color: maroon">&quot;Enterprise Admins&quot;</span><span style="color: black">,</span><span style="color: maroon">&quot;Domain Admins&quot;</span><span style="color: black">,</span><span style="color: maroon">&quot;Exchange Servers&quot;

</span><span style="color: blue">function </span><span style="color: #5f9ea0">sendMail</span><span style="color: black">(</span><span style="color: purple">$strBody</span><span style="color: black">){

    </span><span style="color: purple">$ErrorActionPreference </span><span style="color: red">= </span><span style="color: maroon">&quot;Stop&quot;
        </span><span style="color: blue">try </span><span style="color: black">{
            </span><span style="color: purple">$messageParameters </span><span style="color: red">= </span><span style="color: black">@{
                Subject </span><span style="color: red">= </span><span style="color: maroon">&quot;Domain Group Notification Report Update&quot;
                </span><span style="color: black">Body </span><span style="color: red">= </span><span style="color: purple">$strBody
                </span><span style="color: black">From </span><span style="color: red">= </span><span style="color: purple">$MessageFrom
                </span><span style="color: black">To </span><span style="color: red">= </span><span style="color: purple">$MessageTo
                </span><span style="color: black">SmtpServer </span><span style="color: red">= </span><span style="color: purple">$SMTPServer
            </span><span style="color: black">}
            </span><span style="color: #5f9ea0">Send-MailMessage </span><span style="color: black">@messageParameters </span><span style="color: #5f9ea0">-BodyAsHtml
        </span><span style="color: black">} </span><span style="color: blue">catch </span><span style="color: black">{
            </span><span style="color: purple">$_ </span><span style="color: black">|
                </span><span style="color: #5f9ea0">Out-File </span><span style="color: maroon">x:\grpMonSMTPerr.txt </span><span style="color: #5f9ea0">-Append -Width </span><span style="color: black">1000
        }
}

</span><span style="color: purple">$messBody </span><span style="color: red">+= </span><span style="color: maroon">&quot;&lt;p&gt;Please find enclosed your Group Monitoring Report: &lt;/p&gt;&quot;

</span><span style="color: blue">foreach</span><span style="color: black">(</span><span style="color: purple">$grp </span><span style="color: blue">in </span><span style="color: purple">$strCriticalGroups</span><span style="color: black">){

    </span><span style="color: purple">$GroupMembers </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-ADGroupMember </span><span style="color: purple">$grp </span><span style="color: #5f9ea0">-Server </span><span style="color: purple">$ADWSDC
    $messBody </span><span style="color: red">+= </span><span style="color: maroon">&quot;&lt;h1&gt;&quot; </span><span style="color: red">+ </span><span style="color: purple">$grp </span><span style="color: red">+ </span><span style="color: maroon">&quot;&lt;/h1&gt;&quot; </span><span style="color: red">+ </span><span style="color: maroon">&quot;&lt;br&gt;&quot;
    </span><span style="color: blue">foreach</span><span style="color: black">(</span><span style="color: purple">$member </span><span style="color: blue">in </span><span style="color: purple">$GroupMembers</span><span style="color: black">){
        </span><span style="color: purple">$messBody </span><span style="color: red">+= </span><span style="color: purple">$member</span><span style="color: black">.Name </span><span style="color: red">+ </span><span style="color: maroon">&quot;&lt;br&gt;&quot;
    </span><span style="color: black">}

}
</span><span style="color: #5f9ea0">sendMail </span><span style="color: purple">$messBody</span></pre>
<p>The following is some sample output from the script:</p>
<p><img style="display: inline" title="adGroupsMonExample" alt="adGroupsMonExample" src="http://www.telnetport25.com/wp-content/uploads/2012/03/adGroupsMonExample.png" width="509" height="776" /></p>
<div class="shr-publisher-1260"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F03%2Fgetting-notified-of-active-directory-group-membership%2F' data-shr_title='Getting+notified+of+Active+Directory+Group+Membership%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/03/getting-notified-of-active-directory-group-membership/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring e-Mail Notifications in Nagios Core&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/configuring-e-mail-notifications-in-nagios-core/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuring-e-mail-notifications-in-nagios-core</link>
		<comments>http://www.telnetport25.com/2012/02/configuring-e-mail-notifications-in-nagios-core/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 14:19:21 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux with Exchange]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[MailX]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Notifications]]></category>
		<category><![CDATA[POSTFIX]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1243</guid>
		<description><![CDATA[Linked to my multi part series on using Nagios Core with Exchange server, I would like to explain how you can configure mail notifications to recipients when status changes occur within the Nagios monitoring environment. If you are just joining us here, I recommend that you have a look at the series in its entirety [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Linked to my multi part series on using Nagios Core with Exchange server, I would like to explain how you can configure mail notifications to recipients when status changes occur within the Nagios monitoring environment.</p>
<p>If you are just joining us here, I recommend that you have a look at the series in its entirety before reading any further, as there are a few concepts used in this article which were covered in-depth within previous four parts. You can view them here:</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">In Part 1</a> <br />
		I covered how you can install Nagios Core 3.3.1 onto an existing Ubuntu 11.10 server within your environment</li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">In Part 2</a> <br />
		I covered how you can setup basic monitoring on your first Windows Server &ndash; making use of the NSClient++, I also covered how you could setup a basic &ldquo;<strong><em>check_nt</em></strong>&rdquo; monitoring service</li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">In Part 3</a> <br />
		I covered how you can install the NRPE daemon onto your Nagios Server &ndash; and then use the NSClient to execute a basic Powershell script and report the output back into the Nagios interface</li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">In Part 4</a> <br />
		I covered how you can build some custom PowerShell scripts to monitor you Exchange environment</li>
</ul>
<h2>Making Sure that you DNS Configuration is correct</h2>
<p>Before you begin to setup the tools which will enable mail notifications to be sent from Nagios, you should ensure that you destination mail domain can be resolved from your Ubuntu server. I have assumed that you will be sending notifications to a mailbox within your Exchange infrastructure which naturally is separate to the Nagios implementation.</p>
<p>In my example, my destination domain is &ldquo;<strong><em>prepad.com</em></strong>&rdquo; &ndash; therefore in order to check if the Nagios server can lookup the MX record for that domain you can use the &ldquo;<strong><em>dig</em></strong>&rdquo; command like so:</p>
<pre>dig prepad.com mx</pre>
<p>If everything is ok, you should receive an output to the command similar to that below:</p>
<p><img alt="nagNotify006" height="410" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify006.png" style="display: inline;" title="nagNotify006" width="644" /></p>
<h2>Installing POSTFIX</h2>
<p>Postfix is a free MTA for Linux which is designed to be easier to setup and configure than the more traditional SendMail offering. Combined with Heirloom-MailX (<strong><em>see next section</em></strong>) Nagios can be configured to use the two products to send e-mail notifications to a designated set of contacts in the event of an alert being generated.</p>
<p>From the perspective of using Postfix to send e-mail from Nagios &ndash; the setup is very simple (<em>e.g. I am not going to go into huge amounts of detail on how you can configure Postfix</em>).</p>
<p>In order to install Postfix open an SSH session to your Nagios Ubuntu Server using PuTTY and type in the following command:</p>
<pre>sudo apt-get install postfix</pre>
<p><img alt="nagNotify001" height="55" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify001.png" style="display: inline;" title="nagNotify001" width="365" /></p>
<p>You will then be presented with a two step setup Wizard &ndash; the first page will ask you what type of POSTFIX SMTP Server you would like to use &ndash; ensure that you have selected the &ldquo;<strong><em>Internet Site</em></strong>&rdquo; option, when done navigate (using TAB) to the &ldquo;<strong><em>OK</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="nagNotify002" height="558" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify002.png" style="display: inline;" title="nagNotify002" width="691" /></p>
<p>You will then be asked to supply a Domain Name which the source e-mails will be sent from &ndash; in my example I have used &ldquo;<strong><em>nagios.notify</em></strong>&rdquo; &ndash; when you are done tab to the &ldquo;<strong><em>OK</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="nagNotify003" height="499" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify003.png" style="display: inline;" title="nagNotify003" width="706" /></p>
<p>This will then complete the configuration of Postfix.</p>
<h2>Installing Heirloom-MailX</h2>
<p>Heirloom-MailX is a small binary program that is used by Nagios to send mail to the Postfix mail server &ndash; it is very easy to install. <br />
	From the SSH console, type in the following command:</p>
<pre>sudo apt-get install heirloom-mailx</pre>
<p><img alt="nagNotify004" height="61" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify004.png" style="display: inline;" title="nagNotify004" width="411" /></p>
<h2>Configuring Exchange to accept messages from your Nagios Server</h2>
<p>There are better ways to do this, however if you want to ensure that your Exchange Hub transport servers are accepting mail from your Nagios server, you should ensure that the Default Receive Connector on your HT is configured to accept anonymous connections &ndash; you can do this by opening up the Exchange Management Console and navigating to [<strong> Microsoft Exchange On-Premises &ndash;&gt; Server Configuration &ndash;&gt; Hub Transport</strong> ], then select your HT and then from the low pane (<strong><em>Receive Connectors</em></strong>) right click on the &ldquo;<strong><em>Default &lt;Your HT&gt;</em></strong>&rdquo; &ndash; from the context menu that appears choose &ldquo;<strong><em>Properties</em></strong>&rdquo; &ndash; see below</p>
<p><img alt="nagNotify007" height="327" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify007.png" style="display: inline;" title="nagNotify007" width="386" /></p>
<p>From the properties box that appears, click on the &ldquo;<strong><em>Permission Groups</em></strong>&rdquo; tab, and then tick the &ldquo;<strong><em>Anonymous Users</em></strong>&rdquo; tick box, and then click on the &ldquo;<strong><em>OK</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="nagNotify008" height="495" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify008.png" style="display: inline;" title="nagNotify008" width="443" /></p>
<p>In the real world, you should probably consider creating a dedicated Receive Connector for the Nagios instance.</p>
<h2>Configuring Nagios to Send Mail Notifications</h2>
<p>Now that you have installed the required components to enabled Nagios to send mail notifications, you will need to download two configurations files from your Nagios Server (using FileZilla and edit them using Notepad++ &ndash; if you need to understand how to do this, please review <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">part 2</a> of my installing Nagios for Exchange series).</p>
<p>These files are:</p>
<ol>
<li>commands.cfg</li>
<li>contacts.cfg</li>
</ol>
<p>Which are located in:</p>
<pre>/usr/local/nagios/etc/objects</pre>
<p>Open the commands.cfg file in Notepad++ and modify the following two lines:</p>
<pre># &#39;notify-host-by-email&#39; command definition
define command{
    command_name    notify-host-by-email
    command_line    /usr/bin/printf &quot;%b&quot; &quot;***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n&quot; | /bin/mailx -s &quot;** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **&quot; $CONTACTEMAIL$
    }

# &#39;notify-service-by-email&#39; command definition
define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf &quot;%b&quot; &quot;***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n&quot; | /bin/mailx -s &quot;** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **&quot; $CONTACTEMAIL$
    }</pre>
<p>To look like the following:</p>
<pre># &#39;notify-host-by-email&#39; command definition
define command{
    command_name    notify-host-by-email
    command_line    /usr/bin/printf &quot;%b&quot; &quot;***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n&quot; | /usr/bin/mailx -s &quot;** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **&quot; $CONTACTEMAIL$
    }

# &#39;notify-service-by-email&#39; command definition
define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf &quot;%b&quot; &quot;***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n&quot; | /usr/bin/mailx -s &quot;** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **&quot; $CONTACTEMAIL$
    }</pre>
<p>In essence you are changing the<strong> /bin/mail </strong>part of each command to<strong> /usr/bin/mailx</strong></p>
<p>When you are done, save the file and then using FileZilla upload it back to your Nagios Server.</p>
<p>Next open the contacts.cfg file and change the &ldquo;email&rdquo; property to that of the account where you would like the notifications to be sent &ndash; see below</p>
<pre>define contact{
        contact_name                    nagiosadmin        ; Short name of user
        use                                generic-contact        ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin        ; Full name of user
        email                           administrator@prepad.com    ; &lt;&lt;***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }</pre>
<p>When you are done, save the file, and upload it back to your Nagios server.</p>
<p>To finish up the configuration, from a PuTTY session type in the following command:</p>
<pre>sudo /etc/init.d/nagios restart</pre>
<p>For the configuration changes to take effect.</p>
<p>When there is now a problem with either a service or a host, the chosen recipient should receive a mail notification like the following:</p>
<p><img alt="nagNotify009" height="552" src="http://www.telnetport25.com/wp-content/uploads/2012/02/nagNotify009.png" style="display: inline;" title="nagNotify009" width="631" /></p>
<div class="shr-publisher-1243"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Fconfiguring-e-mail-notifications-in-nagios-core%2F' data-shr_title='Configuring+e-Mail+Notifications+in+Nagios+Core%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/configuring-e-mail-notifications-in-nagios-core/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Video Preview of the Nagios Discovery Tool&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/video-preview-of-the-nagios-discovery-tool/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-preview-of-the-nagios-discovery-tool</link>
		<comments>http://www.telnetport25.com/2012/02/video-preview-of-the-nagios-discovery-tool/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 09:06:55 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Nagios Discovery Tool for Windows]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1232</guid>
		<description><![CDATA[Recently I have been doing quite a bit of work with Nagios Core, which if you have not seen the article series you are most welcome to have a look at them below: In Part 1 I covered how you can install Nagios Core 3.3.1 onto an existing Ubuntu 11.10 server within your environment In [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Recently I have been doing quite a bit of work with Nagios Core, which if you have not seen the article series you are most welcome to have a look at them below:</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">In Part 1</a>       <br />I covered how you can install Nagios Core 3.3.1 onto an existing Ubuntu 11.10 server within your environment </li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">In Part 2</a>       <br />I covered how you can setup basic monitoring on your first Windows Server – making use of the NSClient++, I also covered how you could setup a basic “<strong><em>check_nt</em></strong>” monitoring service </li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">In Part 3</a>       <br />I covered how you can install the NRPE daemon onto your Nagios Server – and then use the NSClient to execute a basic Powershell script and report the output back into the Nagios interface </li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/" target="_blank">In Part 4</a>       <br />I covered how you can build some custom PowerShell scripts to monitor you Exchange environment </li>
</ul>
<p>What I have found throughout my work with Nagios Core, is that whilst it is an excellent monitoring tool, there are some downsides to it. Perhaps the two biggest failings are:</p>
<ol>
<li>There is no provision for auto discovering hosts on your network </li>
<li>As a result of above, each host has to be manually entered into the Nagios Configuration files, and the Administrator has to then add in each associated monitored service for each host. Then upload the configuration files back to the Nagios Server </li>
</ol>
<p>This results in quite a lot of typing (<em>if you have a large number of hosts to add to the system</em>) – so I thought that I would break out my trusty copy of Visual Studio and see if I could come up with a tool that would make life a little easier for people.     <br />The net result is the “<strong><em>Nagios Discovery Tool for Windows</em></strong>” – which I would like to provide you all with a Video preview of before I upload it to the site for download.</p>
<p>Of course to get around this people can opt to use <a href="http://www.nagios.com/products/nagiosxi" target="_blank">Nagios XI</a> which is the commercial offering of Nagios which has a number of rather sexy features, however that version is not free (<em>well I say its not free ~ you can select a special license mode which will allow for up to 7 hosts to be monitored</em>).</p>
<p>The Nagios Discovery tool has the following features:</p>
<ul>
<li>Network Scanning API which can resolve host names within certain IP Address Ranges</li>
<li>The ability to check if resolved hosts are responding to pings</li>
<li>A fully customisable XML based overlay which allows the user of the tool to build their own Nagios Monitoring Commands directly into the GUI without needing updates from me</li>
<li>The ability to add hosts to the Nagios “<strong><em>windows.cfg</em></strong>” file, and configure services on the host to be monitored</li>
</ul>
<p>I plan to release the tool for download in the next week or so (<strong><em>I am still working on the manual, and a few “how to” videos</em></strong>) – however, if anyone is interested in being an early tester – drop me a line and I will make the installer available to you, in the mean time – here is the preview video:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:697a6bc2-29b6-465c-86b0-896ab5cdc092" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/CFVdKyTm0lg?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/CFVdKyTm0lg?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Nagios Discovery Tool for Windows–Video Preview</div>
</div>
<div class="shr-publisher-1232"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Fvideo-preview-of-the-nagios-discovery-tool%2F' data-shr_title='Video+Preview+of+the+Nagios+Discovery+Tool%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/video-preview-of-the-nagios-discovery-tool/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quick Tip &#8211; Running Exchange Based PowerShell script files from the command line or a batch file&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file</link>
		<comments>http://www.telnetport25.com/2012/02/quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 13:22:23 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2007 (Admin)]]></category>
		<category><![CDATA[Exchange 2007 (General)]]></category>
		<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Exchange 2007]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Execution Policies]]></category>
		<category><![CDATA[Powershell Scripts]]></category>
		<category><![CDATA[Running Powershell Scripts]]></category>
		<category><![CDATA[Set-ExecutionPolicy]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1228</guid>
		<description><![CDATA[I have been asked this quite a bit over the years, and indeed in most of my articles where I provide PS based scripts I tend to re-iterate the process for running or scheduling them. So rather than continue to cover the process over and over again, I thought that I would put together a [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I have been asked this quite a bit over the years, and indeed in most of my articles where I provide PS based scripts I tend to re-iterate the process for running or scheduling them. So rather than continue to cover the process over and over again, I thought that I would put together a full post on how you can run scripts within your respective environments.</p>
<h2>First things first, understanding Execution Policies</h2>
<p>PowerShell was designed to be a more secure scripting platform over its main predecessors within a Windows environment (<em>e.g. VBScript or JScript</em>) &ndash; therefore a number of security features were built into it &ndash; the most prominent of which was the principles of &ldquo;<strong><em>Execution Policies</em></strong>&rdquo;.</p>
<p>In essence Execution Policies set a number of conditions in which scripts and configuration files can be executed from within or using the Shell. Execution Policies can be set at the following levels:</p>
<ul>
<li>Local Machine</li>
<li>Currently Logged on User</li>
<li>Specific PowerShell session</li>
</ul>
<p>Group Policy can also be used to determine settings at a user and computer level.</p>
<p>There are a number of levels which Execution Policies can be set at &ndash; these are shown below (which is based upon the following information Source: <a href="http://technet.microsoft.com/en-us/library/dd347641.aspx" title="http://technet.microsoft.com/en-us/library/dd347641.aspx">http://technet.microsoft.com/en-us/library/dd347641.aspx</a>):</p>
<table border="0" cellpadding="0" cellspacing="0" style="line-height: normal; border-collapse: collapse;" width="668">
<colgroup>
<col style="width: 177pt; mso-width-source: userset; mso-width-alt: 8630;" width="236" />
<col style="width: 226pt; mso-width-source: userset; mso-width-alt: 11008;" width="301" />
<col style="width: 98pt; mso-width-source: userset; mso-width-alt: 4790;" width="131" /></colgroup>
<tbody>
<tr height="20" style="height: 15pt;">
<td align="center" class="xl69" height="20" style="border: 0.5pt solid windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>Level</strong></font></font></td>
<td align="center" class="xl70" style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>Description</strong></font></font></td>
<td align="center" class="xl71" style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: bottom; background-color: rgb(141, 180, 226);" width="130"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>Security Rating</strong></font></font></td>
</tr>
<tr height="20" style="height: 15pt;">
<td align="center" class="xl69" height="20" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>&nbsp;</strong></font></font></td>
<td align="center" class="xl70" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>&nbsp;</strong></font></font></td>
<td align="center" class="xl71" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: bottom; background-color: rgb(141, 180, 226);"><font face="Arial"><font color="#000000" style="font-size: 10pt;"><strong>&nbsp;</strong></font></font></td>
</tr>
<tr height="119" style="height: 89.25pt;">
<td class="xl68" height="119" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236">
<div xmlns="http://www.w3.org/1999/xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" xmlns:cs="http://msdn.microsoft.com/en-us/" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:mtps="http://msdn2.microsoft.com/mtps">
<div xmlns="http://www.w3.org/1999/xhtml">
<div dir="ltr"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Restricted</font></font></div>
</p></div>
</p></div>
</p></div>
</td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;">This is the Default execution policy. <br />
				Permits individual commands, but will not run scripts. <br />
				Prevents running of all script files, including formatting and configuration files (.ps1xml), module script files (.psm1), and Windows PowerShell profiles (.ps1).</font></font></td>
<td class="xl73" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(0, 176, 80);"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">OK</font></font></td>
</tr>
<tr height="136" style="height: 102pt;">
<td class="xl74" height="136" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;">AllSigned</font></font></td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301">
<div xmlns="http://www.w3.org/1999/xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" xmlns:cs="http://msdn.microsoft.com/en-us/" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:mtps="http://msdn2.microsoft.com/mtps">
<div xmlns="http://www.w3.org/1999/xhtml">
<div dir="ltr"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Scripts can run. <br />
								Requires that all scripts and configuration files be signed by a trusted publisher, including scripts that you write on the local computer. <br />
								Prompts you before running scripts from publishers that you have not yet classified as trusted or untrusted. <br />
								Risks running signed, but malicious, scripts.</font></font></div>
</p></div>
</p></div>
</p></div>
</td>
<td class="xl75" style="border: 0.5pt solid rgb(127, 127, 127); padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(255, 192, 0);"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">Moderate Risk</font></font></td>
</tr>
<tr height="204" style="height: 153pt;">
<td class="xl74" height="204" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;">RemoteSigned</font></font></td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Scripts can run. <br />
				Requires a digital signature from a trusted publisher on scripts and configuration files that are downloaded from the Internet (including e-mail and instant messaging programs). <br />
				Does not require digital signatures on scripts that you have run and that you have written on the local computer (not downloaded from the Internet). <br />
				Risks running unsigned scripts from sources other than the Internet and signed, but malicious, scripts.</font></font></td>
<td class="xl75" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor rgb(127, 127, 127) rgb(127, 127, 127); padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(255, 192, 0);"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">Moderate Risk</font></font></td>
</tr>
<tr height="85" style="height: 63.75pt;">
<td class="xl74" height="85" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Unrestricted</font></font></td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Unsigned scripts can run. (This risks running malicious scripts.) <br />
				Warns the user before running scripts and configuration files that are downloaded from the Internet.</font></font></td>
<td class="xl76" style="border-width: 0.5pt 0.5pt 0.5pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: red;"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">High Risk</font></font></td>
</tr>
<tr height="136" style="height: 102pt;">
<td class="xl74" height="136" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Bypass</font></font></td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Nothing is blocked and there are no warnings or prompts. <br />
				This execution policy is designed for configurations in which a Windows PowerShell script is built in to a larger application or for configurations in which Windows PowerShell is the foundation for a program that has its own security model.</font></font></td>
<td class="xl76" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: red;"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">High Risk</font></font></td>
</tr>
<tr height="85" style="height: 63.75pt;">
<td class="xl74" height="85" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="236"><font face="Arial"><font color="#000000" style="font-size: 10pt;">Undefined</font></font></td>
<td class="xl72" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top;" width="301"><font face="Arial"><font color="#000000" style="font-size: 10pt;">There is no execution policy set in the current scope. <br />
				If the execution policy in all scopes is Undefined, the effective execution policy is Restricted, which is the default execution policy.</font></font></td>
<td class="xl73" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(0, 176, 80);"><font face="Arial Black"><font color="#ffffff" style="font-size: 10pt;">OK</font></font></td>
</tr>
<tr height="20" style="height: 15pt;">
<td class="xl77" height="20" style="border-width: medium 0.5pt 0.5pt; border-style: none solid solid; border-color: currentcolor windowtext windowtext; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="236"><font face="Calibri"><font color="#000000" style="font-size: 10pt;">&nbsp;</font></font></td>
<td class="xl78" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: top; background-color: rgb(141, 180, 226);" width="301"><font face="Calibri"><font color="#000000" style="font-size: 10pt;">&nbsp;</font></font></td>
<td class="xl79" style="border-width: medium 0.5pt 0.5pt medium; border-style: none solid solid none; border-color: currentcolor windowtext windowtext currentcolor; padding-top: 1px; padding-right: 1px; padding-left: 1px; vertical-align: bottom; background-color: rgb(141, 180, 226);"><font face="Calibri"><font color="#000000" style="font-size: 10pt;">&nbsp;</font></font></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>On my servers I tend to run either &ldquo;<strong><em>AllSigned</em></strong>&rdquo; or &ldquo;<strong><em>RemoteSigned</em></strong>&rdquo; as those levels are sufficient to give me a good trade off between security and functionality. <br />
	You can check your PowerShell Script Execution Policy setting by opening a PowerShell Session on your machine and typing in the following command:</p>
<pre>Get-ExecutionPolicy &ndash;List | FL</pre>
<p>Which will produce some output similar to the following:</p>
<p><img alt="psExecution001" height="255" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution001.png" style="display: inline;" title="psExecution001" width="340" /></p>
<p>Given the above, if you are intending to run scripts that you have downloaded to your Local Machine you will need an Execution Policy of either &ldquo;<strong><em>AllSigned</em></strong>&rdquo; or &ldquo;<strong><em>RemoteSigned</em></strong>&rdquo; in order to run them.</p>
<p>For example &ndash; if you want to change the Execution Policy to &ldquo;<strong><em>RemoteSigned</em></strong>&rdquo; (<em>my preferred personal level</em>) &ndash; open a PowerShell session (<em>you will need to run PowerShell as an Administrator</em>) &ndash; and type the following command:</p>
<pre>Set-ExecutionPolicy &ldquo;RemoteSigned&rdquo;</pre>
<p><img alt="psExecution002" height="138" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution002.png" style="display: inline;" title="psExecution002" width="666" /></p>
<p>You should also note that if you are using &ldquo;<strong><em>RemoteSigned</em></strong>&rdquo; as the Execution Policy and you have downloaded a script from the Internet you will be presented with the following error upon script Execution:</p>
<p><img alt="psExecution003" height="155" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution003.png" style="display: inline;" title="psExecution003" width="667" /></p>
<p>You will need to &ldquo;<strong><em>Unblock</em></strong>&rdquo; the script in order for it to function (<em>this is because an attempt is made to find a Trusted Publisher for the script on the web and cannot do so, as the script may not be signed</em>) &ndash; this is done by selecting the script file using a right click and from the context menu that appears &ndash; choose properties, and then from the properties dialog click on the &ldquo;<strong><em>Unblock</em></strong>&rdquo; button &ndash; see below:</p>
<p><img alt="psExecution004" height="524" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution004.png" style="display: inline;" title="psExecution004" width="379" /></p>
<p>For more information on Set-ExecutionPolicy see the following TechNet article: <a href="http://technet.microsoft.com/en-us/library/dd347628.aspx" title="http://technet.microsoft.com/en-us/library/dd347628.aspx">http://technet.microsoft.com/en-us/library/dd347628.aspx</a></p>
<h2>Executing Exchange PowerShell Script Files from the Command Line</h2>
<p>You have a couple of options here:</p>
<ol>
<li>Executing a script from within an open PowerShell session</li>
<li>Executing a script from a CMD command window</li>
</ol>
<p>If you wish to run an Exchange PowerShell script from within an existing PowerShell session the easiest way is to do so via the Exchange Management Shell.</p>
<p>Open the Exchange Management Shell and then type in the path to your Exchange based PS script:</p>
<p><img alt="psExecution006" height="92" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution006.png" style="display: inline;" title="psExecution006" width="374" /></p>
<p>If you would like to run a script from the Windows command prompt you can:</p>
<pre>Powershell.exe &ndash;command &ldquo;&amp; {&lt;path to script&gt; }&rdquo;</pre>
<p><img alt="psExecution007" height="87" src="http://www.telnetport25.com/wp-content/uploads/2012/02/psExecution007.png" style="display: inline;" title="psExecution007" width="573" /></p>
<p>It is important to note that if you are running Exchange based scripts from the Windows Command prompt by passing them as a parameter to Powershell.exe you should add the following line at the top of each script:</p>
<h3>For Exchange 2010:</h3>
<pre>Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010</pre>
<h3>For Exchange 2007:</h3>
<pre>Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin</pre>
<p>This will load the relevant Exchange Management Shell commands for your script from the vanilla PowerShell session.</p>
<h2>Executing Exchange Scripts from a Batch File</h2>
<p>You can execute your scripts by adding the the Powershell.exe command (see above) into a Windows Batch file. The batch File can then be scheduled to run as part of a scheduled task &ndash; or configured within Group Policy to execute as a start up script.</p>
<div class="shr-publisher-1228"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Fquick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file%2F' data-shr_title='Quick+Tip+%26ndash%3B+Running+Exchange+Based+PowerShell+script+files+from+the+command+line+or+a+batch+file%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/quick-tip-running-exchange-based-powershell-script-files-from-the-command-line-or-a-batch-file/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing &amp; Using the Microsoft PST Capture Tool&#8211;Part 2&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-using-the-microsoft-pst-capture-toolpart-2</link>
		<comments>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-2/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 20:08:30 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Compliance)]]></category>
		<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Exchange 2010 (Mailbox)]]></category>
		<category><![CDATA[Mailbox Databases]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[PST Capture]]></category>
		<category><![CDATA[PST Capture Central Service]]></category>
		<category><![CDATA[PST Capture Tool]]></category>
		<category><![CDATA[PST Files]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1218</guid>
		<description><![CDATA[In the previous part of this series I explained what the Microsoft PST Capture tool was, described a little bit about its architecture and components, and then took you through how you can install the tool onto a server within your environment. In this part I would like to explain how you can install the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In the <a href="http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-1/" target="_blank">previous part of this series</a> I explained what the Microsoft PST Capture tool was, described a little bit about its architecture and components, and then took you through how you can install the tool onto a server within your environment.</p>
<p>In this part I would like to explain how you can install the PST Capture Agent to relevant machines in your organisation, both manually and through automated distribution, and then take you through the process of a manual PST Capture to a mailbox.</p>
<h2>Installing the PST Capture Agent Manually</h2>
<p>One of the first things that you might be considering is – where do I (<em>or should I</em>) install the PST Capture Agent?</p>
<p>What might help you during this process is to remember that the primary purpose of the PST capture tool is to enhance compliance and discovery of e-mail data within your organisation – therefore if you start by thinking where do users store PST files?</p>
<p>This will vary between environments – but the following are a couple of ideas to get you going:</p>
<ul>
<li>Laptops </li>
<li>File shares on Fileservers </li>
<li>NAS locations </li>
<li>Local Desktops </li>
</ul>
<p>The PST Capture agent is available in both x32 and x64 bit versions and is available for download from the following location: <a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767">http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767</a></p>
<p>In order to manually install the agent doubt click on either the PSTCaptureAgent_x86.msi or the PSTCaptureAgent.msi (x64) file which will start the installation.</p>
<p>From the welcome screen click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool014.png"><img style="display: inline" title="pstCaptureTool014" alt="pstCaptureTool014" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool014_thumb.png" width="498" height="384" /></a></p>
<p>Tick the “<strong><em>I accept the terms in the License Agreement</em></strong>” and then click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool009.png"><img style="display: inline" title="pstCaptureTool009" alt="pstCaptureTool009" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool009_thumb.png" width="499" height="384" /></a></p>
<p>You will then be prompted to confirm the installation folder for the PST Capture Agent – you can set this to a location of your own choosing or accept the defaults, when done click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool010.png"><img style="display: inline" title="pstCaptureTool010" alt="pstCaptureTool010" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool010_thumb.png" width="499" height="386" /></a></p>
<p>You will then be asked to provide either the host name or IP address of the PST Capture Central Server (that you setup in <a href="http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-1/" target="_blank">part 1</a>) – you can leave the ports at the default – when done – click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool011.png"><img style="display: inline" title="pstCaptureTool011" alt="pstCaptureTool011" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool011_thumb.png" width="500" height="385" /></a></p>
<p>You will then be presented with a summary of your installation options – if you are happy with them click on the “<strong><em>Install</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool012.png"><img style="display: inline" title="pstCaptureTool012" alt="pstCaptureTool012" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool012_thumb.png" width="498" height="385" /></a></p>
<p>The installer will then copy the relevant files and configure your options – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool013.png"><img style="display: inline" title="pstCaptureTool013" alt="pstCaptureTool013" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool013_thumb.png" width="499" height="382" /></a></p>
<p>When setup is completed you will be presented with the following screen – click on “<strong><em>Finish</em></strong>” to exit – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool0141.png"><img style="display: inline" title="pstCaptureTool014" alt="pstCaptureTool014" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool014_thumb1.png" width="498" height="384" /></a></p>
<h2>Installing the PST Capture Agent via Automation</h2>
<p>If you have a large infrastructure or you are looking at deploying the agent to a number of machines, you are probably not going to want to use the manual installation method for the agent.</p>
<p>The good news is that as the agent is packaged within an MSI file which allows for silent installation – the command syntax that is used is detailed below:</p>
<pre>msiexec /i PSTCaptureAgent_x86.msi /q CENTRALSERVICEHOST=172.31.253.152 SERVICEPORT=6674</pre>
<p>You can use the above command to deploy the agent via SMS, Group Policy or any other software distribution means that you have available to you. Remember you will need to ensure that you deploy the correct agent CPU architecture according to the version of Windows that is running.</p>
<p>If you chose to deploy via a Start-up script via group policy, I have provided a simple example below:</p>
<pre class="code"><span style="color: purple">$PackageInstallOption </span><span style="color: red">= </span><span style="color: maroon">&quot;/i&quot;
</span><span style="color: purple">$MSIExecMode </span><span style="color: red">= </span><span style="color: maroon">&quot;/q&quot;
</span><span style="color: purple">$MSIx32 </span><span style="color: red">= </span><span style="color: maroon">&quot;PSTCaptureAgent_x86.msi&quot;
</span><span style="color: purple">$MSIx64 </span><span style="color: red">=  </span><span style="color: maroon">&quot;PSTCaptureAgent.msi&quot;
</span><span style="color: purple">$PSTCentralControlServer </span><span style="color: red">= </span><span style="color: maroon">&quot;CENTRALSERVICEHOST=172.31.253.152&quot;
</span><span style="color: purple">$PSTControlPort </span><span style="color: red">= </span><span style="color: maroon">&quot;SERVICEPORT=6674&quot;

</span><span style="color: blue">if </span><span style="color: black">((</span><span style="color: purple">$ENV:Processor_Architecture </span><span style="color: red">-eq </span><span style="color: maroon">&quot;x86&quot; </span><span style="color: red">-and </span><span style="color: black">(</span><span style="color: rgb(95,158,160)">test-path </span><span style="color: black">env:PROCESSOR_ARCHITEW6432)) </span><span style="color: red">-or </span><span style="color: black">(</span><span style="color: purple">$ENV:Processor_Architecture </span><span style="color: red">-eq </span><span style="color: maroon">&quot;AMD64&quot;</span><span style="color: black">)) {

    </span><span style="color: green"># Launch x64 installer
    </span><span style="color: black">&amp; </span><span style="color: maroon">'msiexec.exe' </span><span style="color: purple">$PackageInstallOption $MSIx64 $MSIExecMode $PSTCentralControlServer $PSTControlPort

</span><span style="color: black">} </span><span style="color: blue">elseif</span><span style="color: black">(</span><span style="color: purple">$ENV:Processor_Architecture </span><span style="color: red">-eq </span><span style="color: maroon">'x86'</span><span style="color: black">){

    </span><span style="color: green"># Launch x32 installer
    </span><span style="color: black">&amp; </span><span style="color: maroon">'msiexec.exe' </span><span style="color: purple">$PackageInstallOption $MSIx32 $MSIExecMode $PSTCentralControlServer $PSTControlPort

</span><span style="color: black">}</span><span style="color: blue">else</span><span style="color: black">{

    </span><span style="color: green"># Dunno!
    </span><span style="color: black">Exit 1

}</span></pre>
<p>The CPU architecture logic above is based upon following article: <a title="http://techibee.com/powershell/powershell-get-cpu-architecture-on-windows-7-computer/1012" href="http://techibee.com/powershell/powershell-get-cpu-architecture-on-windows-7-computer/1012">http://techibee.com/powershell/powershell-get-cpu-architecture-on-windows-7-computer/1012</a>)</p>
<p>If you do decide to use the script above, you should change the paths in $MSIx32 and $MSIx64 to reflect a share on the network where you have stored the agent installer packages.</p>
<h2>Performing a Manual Capture &#8211; Using the PST Capture Tool</h2>
<p>On your Central Capture Server, open the PST Capture Console and from the “<strong><em>PST Searches</em></strong>” area select “<strong><em>New PST Search</em></strong>” – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool015.png"><img style="display: inline" title="pstCaptureTool015" alt="pstCaptureTool015" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool015_thumb.png" width="560" height="269" /></a></p>
<p>You will be asked to select the computers that you would like to include within the search – you will only be able to search computers that are online (<strong><em>really?</em></strong>) and which have the PST Capture agent installed – select each machine as required and then click on the “<strong><em>Next</em></strong>” button – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool016.png"><img style="display: inline" title="pstCaptureTool016" alt="pstCaptureTool016" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool016_thumb.png" width="560" height="450" /></a></p>
<p>You will then be asked for the locations on each machine that you would like to search, or provide areas which you would like to leave out, in the example below I have chosen only to search the X: drive of the machine(s) that I selected in the previous step, when you are done click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool017.png"><img style="display: inline" title="pstCaptureTool017" alt="pstCaptureTool017" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool017_thumb.png" width="560" height="450" /></a></p>
<p>You will then based asked if you would like to run the discovery manually or via a schedule – for the purposes of this example I have chosen “<strong><em>No Schedule (run manually)</em></strong>” but you are of course welcome to schedule to scan when convenient for you. When you are done click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool018.png"><img style="display: inline" title="pstCaptureTool018" alt="pstCaptureTool018" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool018_thumb.png" width="560" height="449" /></a></p>
<p>Finally you will be asked to name your scheduled scan, when you are done, click on the “<strong><em>Next</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool019.png"><img style="display: inline" title="pstCaptureTool019" alt="pstCaptureTool019" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool019_thumb.png" width="560" height="450" /></a></p>
<p>The PST Capture window will then change to reflect your settings – as this is a manual scan click on the “<strong><em>Search All Now</em></strong>” button, which when complete will populate the lower pane with the PSTs that have been found on each host. From the lower pane, tick the PSTs that you would like to import and then click on the “<strong><em>New Import List</em></strong>” button and select either “<strong><em>Cloud Import List</em></strong>” or “<strong><em>OnPrem Import List</em></strong>” (<em>for my example I am using OnPrem</em>) – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool020.png"><img style="display: inline" title="pstCaptureTool020" alt="pstCaptureTool020" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool020_thumb.png" width="560" height="279" /></a></p>
<p>The window will then change to reflect your import list selection. On each PST in the “<strong><em>Location</em></strong>” area – using the Right hand mouse button click on the PST entry and from the context menu that appears choose the “<strong><em>Set Destination Mailbox</em></strong>” (you also have the option of clicking on the “<strong><em>Set to file owner</em></strong>” button which will set each destination mailbox to that of the account which owns the file) – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool021.png"><img style="display: inline" title="pstCaptureTool021" alt="pstCaptureTool021" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool021_thumb.png" width="560" height="268" /></a></p>
<p>When you click on the “<strong><em>Set destination Mailbox</em></strong>” button you will be presented with a pick list of mailboxes that you can import into, choose the relevant mailboxes and then click on the “<strong><em>OK</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool022.png"><img style="display: inline" title="pstCaptureTool022" alt="pstCaptureTool022" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool022_thumb.png" width="443" height="465" /></a></p>
<p>Click on the “<strong><em>Import all now</em></strong>” button – and the process will begin – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool023.png"><img style="display: inline" title="pstCaptureTool023" alt="pstCaptureTool023" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool023_thumb.png" width="560" height="268" /></a></p>
<p>Of course there are many options that you can play with within the PST Capture tool that I have not covered within this two part series, therefore I encourage you to explore (in a test lab) to get a better feel for the tool, but I hope that you have enjoyed the basic overview.</p>
<div class="shr-publisher-1218"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Finstalling-using-the-microsoft-pst-capture-toolpart-2%2F' data-shr_title='Installing+%26amp%3B+Using+the+Microsoft+PST+Capture+Tool%26ndash%3BPart+2%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Installing &amp; Using the Microsoft PST Capture Tool&#8211;Part 1&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-using-the-microsoft-pst-capture-toolpart-1</link>
		<comments>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-1/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 20:05:14 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Compliance)]]></category>
		<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Exchange 2010 (Mailbox)]]></category>
		<category><![CDATA[Mailbox Databases]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[PST Capture]]></category>
		<category><![CDATA[PST Capture Central Service]]></category>
		<category><![CDATA[PST Capture Tool]]></category>
		<category><![CDATA[PST Files]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1184</guid>
		<description><![CDATA[The PST Capture Tool was released on the 30th Jan 2012 (see: http://blogs.technet.com/b/exchange/archive/2012/01/30/pst-time-to-walk-the-plank.aspx for more information) after a fairly long and highly anticipated wait by the Exchange Community. In essence the PST Capture tool has two main tiers of operation: PST Capture Central Service The PST Capture Central Service maintains the knowledge of the PST [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The PST Capture Tool was released on the 30th Jan 2012 (see: <a title="http://blogs.technet.com/b/exchange/archive/2012/01/30/pst-time-to-walk-the-plank.aspx" href="http://blogs.technet.com/b/exchange/archive/2012/01/30/pst-time-to-walk-the-plank.aspx">http://blogs.technet.com/b/exchange/archive/2012/01/30/pst-time-to-walk-the-plank.aspx</a> for more information) after a fairly long and highly anticipated wait by the Exchange Community.</p>
<p>In essence the PST Capture tool has two main tiers of operation:</p>
<ol>
<li><strong>PST Capture Central Service</strong> The PST Capture Central Service maintains the knowledge of the PST files found within your organisation and processes the data as it’s moved to your internal (on-premises) Exchange servers or Exchange Online Accounts. </li>
<li><strong>PST Capture Agent</strong> Discovery of PST files on remote machines is performed by the PST Capture agent that is installed locally on computers within your organisation. The agent Service will also send the relevant PST files to the Central Service Server when requested for Import operations. </li>
</ol>
<p>There is technically a 3rd tier to the PST Capture Tool which is known as the PST Capture Console – which it the primary management interface that is used by administrators to locate the relevant PST’s on machines and manage the process of PST imports into mailboxes.</p>
<p>Before you crack on and install the tool there are a few Pre-Requisites that you should be aware of before you begin (<em>these are taken from:</em> <a title="http://technet.microsoft.com/en-us/library/hh781033.aspx" href="http://technet.microsoft.com/en-us/library/hh781033.aspx">http://technet.microsoft.com/en-us/library/hh781033.aspx</a>):</p>
<ul>
<li>If you intend to import the captured PSTs to an on-premises Exchange server, your organization must be running Exchange 2010 </li>
</ul>
<blockquote><p><font color="#111111"><strong><u>NOTE:</u></strong> The tool can be used with Exchange 2007, but it is important to point out that it has NOT been tested with 2007 – therefore if you run into problems then you are unlikely to be supported by Microsoft.</font></p>
</blockquote>
<ul>
<li>If you intend to import the captured PSTs to Exchange Online, your organization must have an Office 365 or BPOS subscription. </li>
<li>Microsoft .NET Framework 3.5 or 3.5 Service Pack 1 (SP1). </li>
<li>64-bit version of Microsoft Outlook 2010 (<em>required only on the host computer where you install the PST Capture Console</em>). </li>
<li>A Central Service account. Depending on how you plan to use PST Capture, you must grant specific rights to the service account (<em>these are detailed below</em>). </li>
<li>The server which you choose to install the Central Service must be Windows 2008 x64 or R2. </li>
</ul>
<h2>Quick Tip (from painful experience)</h2>
<p>You should ensure that you have all of your domain controllers online and working, especially if you have a configuration that has child domains. Failure to do so could result in the PST Capture Service terminating.</p>
<h2>Installation</h2>
<p>Download the Tool from the following location: <a title="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767">http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767</a>, ensure that your chosen server which will host the Central Service meets the prerequisites mentioned above.</p>
<p>When downloaded double click on the “<strong><em>PSTCapture.msi</em></strong>” file which will launch the installation wizard (click on the “<strong><em>Next</em></strong>” button) – see below;</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool001.png"><img style="display: inline" title="pstCaptureTool001" alt="pstCaptureTool001" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool001_thumb.png" width="499" height="383" /></a></p>
<p>On the EULA screen, tick the “<strong><em>I accept the terms in the license Agreement</em></strong>” and then click on the “<strong><em>Next</em></strong>” button – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool002.png"><img style="display: inline" title="pstCaptureTool002" alt="pstCaptureTool002" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool002_thumb.png" width="497" height="386" /></a></p>
<p>On the “<strong><em>Destination Folder</em></strong>” screen – choose the location where you want the tool installed – personally I would leave it at the default location and then click on the “<strong><em>Next</em></strong>” button – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool003.png"><img style="display: inline" title="pstCaptureTool003" alt="pstCaptureTool003" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool003_thumb.png" width="500" height="382" /></a></p>
<p>You will then be asked to provide the details of the Central Service Account. You will need to ensure that the account that you provide has the following permissions (borrowed from: <a title="http://technet.microsoft.com/en-us/library/hh781036.aspx" href="http://technet.microsoft.com/en-us/library/hh781036.aspx">http://technet.microsoft.com/en-us/library/hh781036.aspx</a> )</p>
<table style="border-bottom: #ddd 1px solid; border-left: #ddd 1px solid; line-height: normal; margin: 5px 10px 5px 5px; border-collapse: collapse; clear: both; border-top: #ddd 1px solid; border-right: #ddd 1px solid" width="97%">
<tbody style="margin: 5px 10px 5px 5px">
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<th style="border-bottom: #c8cdde 1px solid; border-left: #ccc 0px solid; padding-bottom: 5px; background-color: #ccc; padding-left: 5px; padding-right: 5px; vertical-align: bottom; border-top: #ccc 0px solid; border-right: #ccc 0px solid; padding-top: 5px" align="left">
<p align="center"><font face="Verdana"><font style="font-size: 8.2pt" color="#000066">Scenario </font></font></p>
</th>
<th style="border-bottom: #c8cdde 1px solid; border-left: #ccc 0px solid; padding-bottom: 5px; background-color: #ccc; padding-left: 5px; padding-right: 5px; vertical-align: bottom; border-top: #ccc 0px solid; border-right: #ccc 0px solid; padding-top: 5px" align="left">
<p align="center"><font face="Verdana"><font style="font-size: 8.2pt" color="#000066">Permissions required </font></font></p>
</th>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Installing PST Capture</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Local administrator privileges on the computer where you want to install the PST Capture Console or PST Capture agent.</font></font>               </li>
</ul>
</td>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Searching for PSTs</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">You must be logged on with local administrator privileges on the computer where you run the PST Capture Console.</font></font>               </li>
</ul>
</td>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Importing PSTs to mailboxes in your Exchange Online (Office 365) organization</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">You must be logged on with local administrator privileges on the computer where you run the PST Capture Console.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account you specify on the <strong>Online Connection Settings</strong> tab of the PST Capture settings must be assigned the Organization Management role.</font></font>               </li>
</ul>
</td>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Importing PSTs to mailboxes in your Exchange Online (BPOS) organization</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">You must be logged on with local administrator privileges on the computer where you run the PST Capture Console.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account you specify on the <strong>Online Connection Settings</strong> tab of the PST Capture settings must be an Exchange Online administrator account.</font></font>               </li>
</ul>
</td>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Importing PSTs to mailboxes in your on-premises organization</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">You must be logged on with local administrator privileges on the computer where you run the PST Capture Console.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account that the PST Capture Central Service uses must be mailbox-enabled.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account that the PST Capture Central Service uses must be assigned the Public Folder Management role in your Exchange organization.</font></font>               </li>
</ul>
</td>
</tr>
<tr style="margin: 5px 10px 5px 5px; vertical-align: top">
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<p style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; margin-bottom: 0px; padding-top: 5px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">Importing PSTs to archive mailboxes in your on-premises organization</font></font></p>
</td>
<td style="border-bottom: #ccc 1px solid; border-left: #ccc 1px solid; padding-bottom: 5px; background-color: #fff; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #ccc 1px solid; border-right: #d5d5d3 1px solid; padding-top: 5px">
<ul style="line-height: 11pt; list-style-type: disc; margin: 5px 10px 5px 20px">
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">You must be logged on with local administrator privileges on the computer where you run the PST Capture Console.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account that the PST Capture Central Service uses must be mailbox-enabled.</font></font>               </li>
<li style="margin-bottom: 3px"><font face="Verdana"><font style="font-size: 8.2pt" color="#000000">The user account that the PST Capture Central Service uses must be assigned the Organization Management role in your Exchange organization.</font></font>               </li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>When you are happy with your choice – click on the “<strong><em>Next</em></strong>” button – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool004.png"><img style="display: inline" title="pstCaptureTool004" alt="pstCaptureTool004" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool004_thumb.png" width="498" height="383" /></a></p>
<p>You will then be presented with the Review of your installation choices – review them and if you are happy click on the “<strong><em>Install</em></strong>” button – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool005.png"><img style="display: inline" title="pstCaptureTool005" alt="pstCaptureTool005" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool005_thumb.png" width="499" height="385" /></a></p>
<p>The installation process will then complete – when done click on the “<strong><em>Finish</em></strong>” button – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool007.png"><img style="display: inline" title="pstCaptureTool007" alt="pstCaptureTool007" src="http://www.telnetport25.com/wp-content/uploads/2012/02/pstCaptureTool007_thumb.png" width="499" height="382" /></a></p>
<h2>In the next part:</h2>
<p>I will cover the following: </p>
<ul>
<li>The installation of the PST Capture Agent including automated deployment.</li>
<li>Using the PST Capture Tool</li>
</ul>
<div class="shr-publisher-1184"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Finstalling-using-the-microsoft-pst-capture-toolpart-1%2F' data-shr_title='Installing+%26amp%3B+Using+the+Microsoft+PST+Capture+Tool%26ndash%3BPart+1%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/installing-using-the-microsoft-pst-capture-toolpart-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>February 2012 Newsletter now available&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/february-2012-newsletter-now-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=february-2012-newsletter-now-available</link>
		<comments>http://www.telnetport25.com/2012/02/february-2012-newsletter-now-available/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 07:30:03 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[February 2012]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Newsletters]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1170</guid>
		<description><![CDATA[Just a quick post to let you know that the February edition of the www.telnetport25.com newsletter is available for viewing here. Happy reading!]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Just a quick post to let you know that the February edition of the <a href="http://www.telnetport25.com">www.telnetport25.com</a> newsletter is available for viewing <a href="http://www.telnetport25.com/2012/02/february-2012-www-telnetport25-com-newsletter/" target="_blank">here</a>.</p>
<p>Happy reading!</p>
<div class="shr-publisher-1170"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Ffebruary-2012-newsletter-now-available%2F' data-shr_title='February+2012+Newsletter+now+available%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/february-2012-newsletter-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>February 2012 www.telnetport25.com Newsletter</title>
		<link>http://www.telnetport25.com/2012/02/february-2012-www-telnetport25-com-newsletter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=february-2012-www-telnetport25-com-newsletter</link>
		<comments>http://www.telnetport25.com/2012/02/february-2012-www-telnetport25-com-newsletter/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 17:55:58 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[February 2012]]></category>
		<category><![CDATA[Newsletters]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1164</guid>
		<description><![CDATA[The February 2012 www.telnetport25.com newsletter is available for download from the following location: [ February 2012 Newsletter &#8211; 400KB ]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The February 2012 <a href="http://www.telnetport25.com">www.telnetport25.com</a> newsletter is available for download from the following location:</p>
<p><img alt="adobe" height="40" src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" width="40" /> [ <a href="http://www.telnetport25.com/downloads/newsletters/telnetport25NewsletterFeb2012.pdf">February 2012 Newsletter &ndash; 400KB</a> ]</p>
<div class="shr-publisher-1164"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Ffebruary-2012-www-telnetport25-com-newsletter%2F' data-shr_title='February+2012+www.telnetport25.com+Newsletter'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/february-2012-www-telnetport25-com-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>telnetMESMS&#8211;SMS Wrapper for Exchange Monitoring&#8211;Part 2&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=telnetmesmssms-wrapper-for-exchange-monitoringpart-2</link>
		<comments>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-2/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 17:19:49 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Mailbox Quotas]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[telnetMESMS]]></category>
		<category><![CDATA[Text Messaging]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1161</guid>
		<description><![CDATA[In the last part of this series I covered my new tool &#8211; telnetMESMS which allows for SMS messages to be sent via the command line to destination mobile phones. The tool makes use of a SMS web enabled API provided by http://www.intellisoftware.co.uk (sign up information is contained in part 1). In this part I [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In the <a href="http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-1/">last part of this series</a> I covered my new tool &#8211; <strong><em>telnetMESMS</em></strong> which allows for SMS messages to be sent via the command line to destination mobile phones. The tool makes use of a SMS web enabled API provided by <a href="http://www.intellisoftware.co.uk">http://www.intellisoftware.co.uk</a> (<em>sign up information is contained in <strong>part 1</strong></em>).</p>
<p>In this part I would like to give you a sample script which can give you an idea of how the tool can be used (<em>you are, as always free to use the tool in anyway you see fit within your Exchange environments</em> (<strong><em>just not for spamming mobiles</em></strong>)).</p>
<h2>Notifying users of Mailbox Quota Exceeded</h2>
<p>This is a simple little script that will check to see which users have the value “<strong><em>smsEnabled</em></strong>” within “<strong><em>extendedAttribute15</em></strong>” – if they do the script will then check the Quota Status of the users mailbox (<strong><em>using Get-MailboxStatistics</em></strong>) and if it is over (e.g. anything other “<strong><em>BelowLimit</em></strong>”) it will call the telnetMESMS.exe program and send a text message to the user letting them know that their mailbox is potentially unusable.</p>
<p>Therefore given the above – if you would like to use the script against mailboxes within your environment, ensure that each of you chosen mailbox has the “<strong><em>smsEnabled</em></strong>” value in “<strong><em>extendedAttribute15</em></strong>” – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange007.png"><img style="display: inline" title="smsExchange007" alt="smsExchange007" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange007_thumb.png" width="441" height="531" /></a></p>
<p>The script takes the destination Mobile Phone number for the mailbox notification from the “<strong><em>Mobile</em></strong>” entry for the user in Active Directory (<em>I am using my number below so I have removed a number of digits</em>) – see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange008.png"><img style="display: inline" title="smsExchange008" alt="smsExchange008" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange008_thumb.png" width="442" height="533" /></a></p>
<p>I personally find this script useful, as over the years I have lost count of the amount of senior managers who have said, I never received any warning that my mailbox was about to run out of space (<em>these are typically the people who when they see anything from the System Administrator delete it immediately</em>) so to send them a text message is another means of letting them know that some action in their behalf is required.</p>
<pre class="code"><span style="color: green"># Send a text message to a user if their mailbox is over the storage limit
# Exchange 2010 only!
# Version 1.0
#
# Requires:
# * CustomAttribute15 on each monitored mailbox
#   to be set to smsEnabled
# * The MobilePhone AD Attribute to be populated
#   on the AD account
# * telnetMESMS tool
# * IntelliSoftware SMS Account with Credit
#
# Author: Andy Grogan
# http://www.telnetport25.com

</span><span style="color: #5f9ea0">Add-PSSnapin </span><span style="color: maroon">Microsoft.Exchange.Management.PowerShell.E2010
</span><span style="color: purple">$Mailboxes </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-Mailbox </span><span style="color: black">| </span><span style="color: #5f9ea0">Select </span><span style="color: black">Identity,CustomAttribute15 | </span><span style="color: #5f9ea0">where </span><span style="color: black">{</span><span style="color: purple">$_</span><span style="color: black">.CustomAttribute15 </span><span style="color: red">-eq </span><span style="color: maroon">&quot;smsEnabled&quot;</span><span style="color: black">}

</span><span style="color: blue">Foreach</span><span style="color: black">(</span><span style="color: purple">$mbx </span><span style="color: blue">in </span><span style="color: purple">$Mailboxes</span><span style="color: black">){

    </span><span style="color: purple">$QuotaStatus </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-MailboxStatistics </span><span style="color: purple">$mbx</span><span style="color: black">.Identity
    </span><span style="color: blue">if</span><span style="color: black">(</span><span style="color: purple">$QuotaStatus </span><span style="color: red">-ne </span><span style="color: maroon">&quot;BelowLimit&quot;</span><span style="color: black">){
        </span><span style="color: purple">$MobileNumber </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-User </span><span style="color: purple">$mbx</span><span style="color: black">.Identity | </span><span style="color: #5f9ea0">Select </span><span style="color: maroon">MobilePhone
        </span><span style="color: purple">$Size </span><span style="color: red">= </span><span style="color: purple">$QuotaStatus</span><span style="color: black">.TotalItemSize
        </span><span style="color: purple">$Message </span><span style="color: red">= </span><span style="color: maroon">&quot;Your Mailbox is over Quota: $Size&quot;
        </span><span style="color: black">&amp; </span><span style="color: maroon">'c:\telnetMESMS\telnetMESMS.exe' </span><span style="color: purple">$MobileNumber</span><span style="color: black">.MobilePhone </span><span style="color: purple">$Message </span><span style="color: maroon">&quot;Exchange&quot;
    </span><span style="color: black">}

}</span></pre>
<p>The script MUST be downloaded to the same folder where the telnetMESMS.exe tool is installed (<em>this you would have installed from</em> <a href="http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-1/">part 1</a>) and should be scheduled to run at a interval which suites your organisation.</p>
<p>When the message has been sent – the recipient of the message should see something like the following – see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsAlertExample2.png"><img style="display: inline" title="smsAlertExample2" alt="smsAlertExample2" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsAlertExample2_thumb.png" width="280" height="420" /></a></p>
<p>I hope that you find this useful, and it gives you some ideas of some other situations where you can use the telnetMESMS tool.</p>
<div class="shr-publisher-1161"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Ftelnetmesmssms-wrapper-for-exchange-monitoringpart-2%2F' data-shr_title='telnetMESMS%26ndash%3BSMS+Wrapper+for+Exchange+Monitoring%26ndash%3BPart+2%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>telnetMESMS&#8211;SMS Wrapper for Exchange Monitoring&#8211;Part 1&#8230;</title>
		<link>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=telnetmesmssms-wrapper-for-exchange-monitoringpart-1</link>
		<comments>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-1/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 10:45:53 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange Server]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[Text Messaging]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1133</guid>
		<description><![CDATA[Some of you will be aware that I have recently been working on a series which takes a look at Monitoring Exchange Server using Nagios Core. Whilst doing so, I started to think about administrative notifications and the different types of channel that can be used to get key information across to you in a [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Some of you will be aware that I have recently been working on a series which takes a look at <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Monitoring Exchange Server using Nagios Core</a>. Whilst doing so, I started to think about administrative notifications and the different types of channel that can be used to get key information across to you in a timely manner.</p>
<p>Broadly speaking, when something happens within a monitored Exchange environment &ndash; notifications can be sent to the relevant administrator via:</p>
<ul>
<li>E-Mail</li>
<li>Pager</li>
<li>SMS</li>
<li>Net Send</li>
<li>Visual Notification (Red, Yellow and Green)</li>
</ul>
<p>More commonly (<em>from what have experienced</em>) people tend to use either e-mail or SMS.</p>
<p>So with those (<em>probably incorrect</em>) assumptions in mind I decided that I was going to have a look at sending SMS notifications when a given event occurs. The idea behind this was that in the Nagios series I would like to cover how to send both e-mail notifications and SMS from Nagios when a state change occurs. Now e-mail is pretty straightforward, however SMS is a little more involved.</p>
<p>I had a look around on the web and there are a plethora of ways to get SMS notifications to people, ranging from dedicated SMS gateways through to Web Based API&rsquo;s. Ideally I wanted a free SMS solution, but alas whilst there are a number of &ldquo;<strong><em>free SMS providers</em></strong>&rdquo; on the web &ndash; none quite matched what I want to do.</p>
<p>In essence I wanted to code a C# console application that could accept a number of command line parameters and via a web API send them to a destination mobile &ndash; this was going to cost some money &ndash; so my search then changed to the most cost effective solution provider (<em>that I could find</em>). In the end I did find a provided that met all of my criteria (<em>more on this a little later</em>)</p>
<p>So therefore in this article I would like to present to you the telnetMESMS tool and in the next part show you how you can use the tool with PowerShell to send some SMS notifications based upon administrative events. I will then hand further coverage of the tool over to he Nagios Core articles that I have been doing and show you how you can integrate it show that you receive SMS messages.</p>
<h2>Download</h2>
<p>The telnetMESMS application can be downloaded from the following location:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange006.png"><img alt="smsExchange006" height="62" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange006_thumb.png" style="display: inline;" title="smsExchange006" width="60" /></a> [ <a href="http://www.telnetport25.com/downloads/applications/telnetmesms/setup.msi">telnetMESMS Setup &ndash; 600KB</a> ]</p>
<h2>Requirements</h2>
<p>In order to use the software you will need to ensure that both your client system conforms to the following pre-requisites:</p>
<ul>
<li>.Net 3.5</li>
<li>The client system must have access to the internet ~ and not via a proxy server (this version of the tool does not support proxy connections) &ndash; I will adding this in very soon</li>
<li>A registered account with <a href="http://www.intellisoftware.co.uk">http://www.intellisoftware.co.uk</a> and some SMS credits (<em>you get 5 free &ndash; more can be purchased</em>)</li>
</ul>
<h2>Before you begin</h2>
<p>The &ldquo;<strong><em>telnetMESMS.exe</em></strong>&rdquo; is in essence an encapsulation of the Intelli Software SMS web API.</p>
<p>To be open from the start, if you would like to make use of this tool in a production scenario you will need to have signed up an Intelli Software Account which you can do from here: <a href="http://www.intellisoftware.co.uk/" title="http://www.intellisoftware.co.uk/">http://www.intellisoftware.co.uk/</a></p>
<p>Upon sign up you can get 5 complimentary SMS messages (<em>which admittedly is not a huge amount for a trial</em>) &ndash; but you can purchase more at a fairly reasonable rate &ndash; example below &ndash; taken from the Intelli Software website:</p>
<p><img alt="smsExchange005" border="0" height="86" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange005.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="smsExchange005" width="416" /></p>
<p>This would work out to be about <strong>&pound;33.00</strong> for 500 texts based upon their Economy plan.</p>
<p>Now you might be thinking &ndash; OK ~ so how much are Intelli Software paying me?, and I wouldn&rsquo;t blame you for thinking that &ndash; but I can say in all honesty &ndash; nothing, not a jot, nada.</p>
<p>The reason(s) as to why I have chosen to advocate of their services are because:</p>
<ul>
<li>I have an inherent (<em>at the moment</em>) mistrust of &ldquo;<strong><em>Free</em></strong>&rdquo; SMS services &ndash; I feel more comfortable using a commercial provider (<em>if people have any other suggestions which offer a secure service with a good web API I would be more than happy to take a look at modifying the tool</em>)</li>
<li>I needed a UK based SMS provided (<em>to work both in my testing of the application, and for my own work purposes</em>) &ndash; its important to note that Intelli Software will send to non-uk mobiles</li>
<li>Intelli Software provide a dedicated .NET Class (located here: <a href="http://www.intellisoftware.co.uk/sms-gateway/dotnet-component/" title="http://www.intellisoftware.co.uk/sms-gateway/dotnet-component/">http://www.intellisoftware.co.uk/sms-gateway/dotnet-component/</a>) which allows for easy development of applications such as mine</li>
</ul>
<blockquote>
<p><font color="#111111"><strong><u>NOTE:</u></strong> It is important to point out that this project uses the <strong>IntelliSMSDotNet.dll</strong> which is distributed with the telnetMESMS.exe file &ndash; this dll does not belong to me, it is offered as a free runtime with your IntelliSoftware account.</font></p>
</blockquote>
<h2>Installation of the Tool</h2>
<p>Download the setup installer from the link above to a location on your Exchange Server &ndash; double click on the &ldquo;<strong><em>setup.msi</em></strong>&rdquo; file which will present you with the Welcome Screen &ndash; see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange001.png"><img alt="smsExchange001" height="385" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange001_thumb.png" style="display: inline;" title="smsExchange001" width="498" /></a></p>
<p>Select the target installation path (<em>I recommend that you leave it at the default setting</em>) &#8211; when done click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button &ndash; see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange002.png"><img alt="smsExchange002" height="386" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange002_thumb.png" style="display: inline;" title="smsExchange002" width="502" /></a></p>
<p>You will then be presented with he &ldquo;<strong><em>Ready to Install</em></strong>&rdquo; screen &ndash; if you are using Vista, Windows 7, Windows Server 2008 and Windows Server 2008 R2 you may be asked to elevate your privileges via UAC &ndash; click on the &ldquo;<strong><em>Install</em></strong>&rdquo; button &ndash; see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange003.png"><img alt="smsExchange003" height="388" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange003_thumb.png" style="display: inline;" title="smsExchange003" width="504" /></a></p>
<p>The setup software will then install the application binaries to your computer &ndash; see below:</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange004.png"><img alt="smsExchange004" height="391" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange004_thumb.png" style="display: inline;" title="smsExchange004" width="503" /></a></p>
<p>When setup has completed &ndash; click on the &ldquo;<strong><em>Finish</em></strong>&rdquo; button &ndash; see below</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange005.png"><img alt="smsExchange005" height="385" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange005_thumb.png" style="display: inline;" title="smsExchange005" width="501" /></a></p>
<h2>Basic use of the SMS Tool</h2>
<p>The default installation location of the tool is &ldquo;<strong><em>C:\telnetmeSMS</em></strong>&rdquo; &ndash; therefore you will need to open a Command Prompt and change to that directory. If you changed the default location during the installation you should navigate there.</p>
<p>All command line options for the tool can be viewed via typing the following at the command prompt:</p>
<pre>telnetMESMS.exe ?</pre>
<p>&ndash; see below</p>
<p><img alt="smsExchange004" border="0" height="299" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange004.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="smsExchange004" width="666" /></p>
<p>Before you can use the telnetMESMS tool you will need to configure you Intelli Software account information. This process will create an XML file called smsConfig.xml which contains your online account username and password. <br />
	I have written the application so that it stores the password for your account within the XML file encrypted using MD5 so it is relatively secure.</p>
<p>In order to setup the telnetMESMS client for the first time you need to execute the software using the &ldquo;config&rdquo; parameter (<em>this will either need to be performed on each client which you use the tool on &ndash; or you can setup on one server and then copy the smsConfig.xml</em>).</p>
<p>Therefore from the command line navigate to the folder in which your downloaded the telnetMESMS.exe program file and type the following command:</p>
<pre>telnetMESMS.exe config</pre>
<p>This will prompt you for two items of information:</p>
<ol>
<li>Intelli Software User Account</li>
<li>Intelli Software Password</li>
</ol>
<p>Provide them as per your sign up process &ndash; see below:</p>
<p><img alt="smsExchange006" border="0" height="201" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange006.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="smsExchange006" width="443" /></p>
<p>In order to send a text message to mobile phone via the Intelli Software gateway the program requires 3 parameters:</p>
<pre>telnetMESMS.exe &lt;mobile number&gt; &quot;&lt;Text Message&gt;&rdquo; &ldquo;&lt;Sender ID&gt;&rdquo;</pre>
<p>&ndash; see below:</p>
<p><img alt="smsExchange001" border="0" height="82" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange001.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="smsExchange001" width="665" /></p>
<p>When you have sent the text message the program will give you the following output:</p>
<p><img alt="smsExchange003" border="0" height="196" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsExchange003.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="smsExchange003" width="442" /></p>
<p>If everything has worked correctly you should receive a text message on your mobile phone, similar to the example below:</p>
<p><img alt="smsAlertExample" border="0" height="500" src="http://www.telnetport25.com/wp-content/uploads/2012/02/smsAlertExample.png" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="smsAlertExample" width="333" /></p>
<h2>In the next part &#8211; How can this be used with Exchange?</h2>
<p>In the next part I will cover:</p>
<ul>
<li>How you can use the tool to send text alerts to users who have in an alert state</li>
</ul>
<div class="shr-publisher-1133"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F02%2Ftelnetmesmssms-wrapper-for-exchange-monitoringpart-1%2F' data-shr_title='telnetMESMS%26ndash%3BSMS+Wrapper+for+Exchange+Monitoring%26ndash%3BPart+1%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/02/telnetmesmssms-wrapper-for-exchange-monitoringpart-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I don&#8217;t like Mondays (tell me why), I don&#8217;t like Mondaaays&#8211;get your Out of Office set automatically if you don&#8217;t work on a specific day&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/i-dont-like-mondays-tell-me-why-i-dont-like-mondaaaysget-your-out-of-office-set-automatically-if-you-dont-work-on-a-specific-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-dont-like-mondays-tell-me-why-i-dont-like-mondaaaysget-your-out-of-office-set-automatically-if-you-dont-work-on-a-specific-day</link>
		<comments>http://www.telnetport25.com/2012/01/i-dont-like-mondays-tell-me-why-i-dont-like-mondaaaysget-your-out-of-office-set-automatically-if-you-dont-work-on-a-specific-day/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:11:21 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Out of Office]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[OOF]]></category>
		<category><![CDATA[Powerhshell]]></category>
		<category><![CDATA[Set-MailboxAutoReplyConfiguration]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1123</guid>
		<description><![CDATA[As the Boom Town Rats (and Sir Bob) said, I don’t like Mondays. Some of you lucky folks don’t have to work on a Monday (or indeed some other days of the week) – so are you tired of setting your Out of Office the night before you are not in the office on a [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>As the <a href="http://www.youtube.com/watch?v=-Kobdb37Cwc&amp;ob=av2e" target="_blank">Boom Town Rats (and Sir Bob)</a> said, I don’t like Mondays. Some of you lucky folks don’t have to work on a Monday (<em>or indeed some other days of the week</em>) – so are you tired of setting your Out of Office the night before you are not in the office on a regular basis?</p>
<p>Well the other day I posted an article that was based around some fun that you can have with the “<strong><em>Set-MailboxAutoReplyConfiguration</em></strong>” within Exchange 2010. Naturally I posted the article on Twitter and a chap called <strong>Peter De Rop</strong> came back and asked could the script be used to activate an OOF every Monday as he is not in the office.</p>
<p>I thought that this was a great idea – I started thinking &#8211; could I develop a Powershell script which could be scheduled to automatically set the Out of Office for people whom do not work on specific days of the week, and then turn it off on the days which they do work?</p>
<p>So the following is what I came up with:</p>
<pre class="code"><span style="color: green"># Set a users Out of Office Automatically based upon their working pattern
# Exchange 2010 only!
# Version 1.0
# Author: Andy Grogan
# http://www.telnetport25.com

</span><span style="color: purple">$Day </span><span style="color: red">= </span><span style="color: black">Get-Date
</span><span style="color: purple">$TodayDate </span><span style="color: red">= </span><span style="color: purple">$Day</span><span style="color: black">.DayOfWeek
</span><span style="color: purple">$Interim </span><span style="color: red">= </span><span style="color: black">Get-Mailbox | Select Identity,CustomAttribute15 | where {</span><span style="color: purple">$_</span><span style="color: black">.CustomAttribute15 </span><span style="color: red">-ne </span><span style="color: maroon">&quot;&quot;</span><span style="color: black">}
[</span><span style="color: teal">array</span><span style="color: black">]</span><span style="color: purple">$CustomAttrib </span><span style="color: red">= </span><span style="color: purple">$Interim</span><span style="color: black">.CustomAttribute15.Split(</span><span style="color: maroon">&quot;;&quot;</span><span style="color: black">)

</span><span style="color: blue">Foreach</span><span style="color: black">(</span><span style="color: purple">$attrib </span><span style="color: blue">in </span><span style="color: purple">$CustomAttrib</span><span style="color: black">){

    </span><span style="color: blue">if</span><span style="color: black">(</span><span style="color: purple">$attrib </span><span style="color: red">-eq </span><span style="color: purple">$TodayDate</span><span style="color: black">){
        Set-MailboxAutoReplyConfiguration -Id </span><span style="color: purple">$Interim</span><span style="color: black">.Identity -AutoReplyState Enabled -InternalMessage </span><span style="color: maroon">&quot;Sorry I am out of the office I don't work on: $TodayDate&quot; </span><span style="color: black">-ExternalMessage </span><span style="color: maroon">&quot;Sorry I am out of the office I don't work on: $TodayDate&quot;
    </span><span style="color: black">}</span><span style="color: blue">else</span><span style="color: black">{
        Set-MailboxAutoReplyConfiguration -Id </span><span style="color: purple">$Interim</span><span style="color: black">.Identity -AutoReplyState Disabled
    }
}</span></pre>
<p>The script works by looking at “<strong><em>CustomAttribute15</em></strong>” of all the users within your organisation and parses the name of the day of the week which they do not work on if the value is populated correctly. </p>
<p><strong><em>For example;</em></strong> if you have a test account (or normal account) who does not work on <strong><em>Monday,Wednesday,Friday</em></strong> that you would like to set a generic Out of Office for on those days – you can within the Exchange 2010 Management Console can add the names of the days (separated with a <strong><em>“;”</em></strong>) to “<strong><em>CustomAttribute15</em></strong>” – see below </p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="oofFunimgs005" border="0" alt="oofFunimgs005" src="http://www.telnetport25.com/wp-content/uploads/2012/01/oofFunimgs005.jpg" width="424" height="457" /></p>
<p>The script above can then be scheduled from the Windows Task manager (<em>probably from within a Batch file that calls Powershell and the script as a parameter</em>) at midnight each night &#8211; and when it runs will set the Out of Office for all relevant users.</p>
<p>There are naturally some changes that could be made to improve the script – but it is provided to get your creative juices going – hope that you have fun!</p>
<div class="shr-publisher-1123"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fi-dont-like-mondays-tell-me-why-i-dont-like-mondaaaysget-your-out-of-office-set-automatically-if-you-dont-work-on-a-specific-day%2F' data-shr_title='I+don%26rsquo%3Bt+like+Mondays+%28tell+me+why%29%2C+I+don%26rsquo%3Bt+like+Mondaaays%26ndash%3Bget+your+Out+of+Office+set+automatically+if+you+don%26rsquo%3Bt+work+on+a+specific+day%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/i-dont-like-mondays-tell-me-why-i-dont-like-mondaaaysget-your-out-of-office-set-automatically-if-you-dont-work-on-a-specific-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010&#8211;Get-MailboxAutoReplyConfiguration Sample Script</title>
		<link>http://www.telnetport25.com/2012/01/exchange-2010get-mailboxautoreplyconfiguration-script/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exchange-2010get-mailboxautoreplyconfiguration-script</link>
		<comments>http://www.telnetport25.com/2012/01/exchange-2010get-mailboxautoreplyconfiguration-script/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 16:46:10 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Scripts]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[OOF]]></category>
		<category><![CDATA[Out of Office]]></category>
		<category><![CDATA[Set Out of Office]]></category>
		<category><![CDATA[Set-MailboxAutoReplyConfiguration]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1117</guid>
		<description><![CDATA[Script Description This Powershell script is a sample which is attached to this article. The script performs the following functions: Is executed from the Exchange Management Shell Accepts a single mandatory parameter &#8211; 1) ReportFile Reports on the OOF status for each user in your organisation to a text file Download [ GetOOFExchange2010.ps1 &#8211; 1KB [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>This Powershell script is a sample which is attached to this <a href="http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/" target="_blank">article</a>. <br />
	The script performs the following functions:</p>
<ul>
<li>Is executed from the Exchange Management Shell</li>
<li>Accepts a single mandatory parameter &ndash; 1) ReportFile</li>
<li>Reports on the OOF status for each user in your organisation to a text file</li>
</ul>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/exchange2010/GetOOFExchange2010.ps1" target="_blank">GetOOFExchange2010.ps1 &ndash; 1KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article:</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/">Exchange 2010 Out of Office Fun with Set-MailboxAutoReplyConfiguration&hellip;</a></li>
</ul>
<div class="shr-publisher-1117"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fexchange-2010get-mailboxautoreplyconfiguration-script%2F' data-shr_title='Exchange+2010%26ndash%3BGet-MailboxAutoReplyConfiguration+Sample+Script'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/exchange-2010get-mailboxautoreplyconfiguration-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010&#8211;Set-MailboxAutoReplyConfiguration sample script</title>
		<link>http://www.telnetport25.com/2012/01/exchange-2010set-mailboxautoreplyconfiguration-sample-script/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exchange-2010set-mailboxautoreplyconfiguration-sample-script</link>
		<comments>http://www.telnetport25.com/2012/01/exchange-2010set-mailboxautoreplyconfiguration-sample-script/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 16:37:37 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Scripts]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[OOF]]></category>
		<category><![CDATA[Out of Office]]></category>
		<category><![CDATA[Set Out of Office]]></category>
		<category><![CDATA[Set-MailboxAutoReplyConfiguration]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1113</guid>
		<description><![CDATA[Script Description This Powershell script is a sample which is attached to this article. The script performs the following functions: Is executed from the Exchange Management Shell Accepts two mandatory parameters &#8211; 1) Mailbox Name 2) Text file with OOF Messages Sets the Internal and External OOF Messages according to the text file Accepts two [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>This Powershell script is a sample which is attached to this <a href="http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/" target="_blank">article</a>. <br />
	The script performs the following functions:</p>
<ul>
<li>Is executed from the Exchange Management Shell</li>
<li>Accepts two mandatory parameters &ndash; 1) Mailbox Name 2) Text file with OOF Messages</li>
<li>Sets the Internal and External OOF Messages according to the text file</li>
<li>Accepts two optional parameters 1) StartDate 2) EndDate &ndash; which set between which periods the messages should be displayed</li>
</ul>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/exchange2010/SetOOFExchange2010.ps1" target="_blank">SetOOFExchange2010.ps1 &ndash; 1KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article:</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/">Exchange 2010 Out of Office Fun with Set-MailboxAutoReplyConfiguration&hellip;</a></li>
</ul>
<div class="shr-publisher-1113"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fexchange-2010set-mailboxautoreplyconfiguration-sample-script%2F' data-shr_title='Exchange+2010%26ndash%3BSet-MailboxAutoReplyConfiguration+sample+script'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/exchange-2010set-mailboxautoreplyconfiguration-sample-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 Out of Office Fun with Set-MailboxAutoReplyConfiguration&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration</link>
		<comments>http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 16:09:39 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Exchange 2010 (Mailbox)]]></category>
		<category><![CDATA[Mailbox Databases]]></category>
		<category><![CDATA[OOOCTA]]></category>
		<category><![CDATA[Out of Office]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange2010]]></category>
		<category><![CDATA[Get-MailboxAutoReplyConfiguration]]></category>
		<category><![CDATA[OOF]]></category>
		<category><![CDATA[OOOCT35]]></category>
		<category><![CDATA[Set-MailboxAutoReplyConfiguration]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1104</guid>
		<description><![CDATA[In between some of the other stuff that I have been working on; I have also been thinking about the future of the OOOCTA tool. Currently OOOCTA supports both Exchange 2007 SP 1 (and above) as well as Exchange 2010, however the underling code infrastructure is a little complicated to say the least in order [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In between some of the <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/" target="_blank">other stuff</a> that I have been working on; I have also been thinking about the future of the <a href="http://www.telnetport25.com/2011/10/ooocta-3-5-2patch-release-2/" target="_blank">OOOCTA tool</a>. Currently OOOCTA supports both Exchange 2007 SP 1 (<em>and above</em>) as well as Exchange 2010, however the underling code infrastructure is a little complicated to say the least in order to accomplish the dual support.</p>
<p>As some of you may know, Exchange 2010 supports setting a users OOF natively via the <a href="http://technet.microsoft.com/en-us/library/dd638217.aspx" target="_blank">Set-MailboxAutoReplyConfiguration</a> cmdlet, however Exchange 2007 does not have a corresponding command &ndash; therefore the OOOCTA contains quite a lot of code logic which makes use of the EWS API to allow for Out of Office functionality to be set on Exchange 2007 mailboxes.</p>
<p>My current line of thinking is to make version <a href="http://www.telnetport25.com/2011/10/ooocta-3-5-2patch-release-2/" target="_blank">3.5.2 of the OOOCTA tool</a> the last which supports Exchange 2007, and version 4 will be a pure Exchange 2010 product. Taking this route would allow for me to remove a lot of &ldquo;<em>code bloat</em>&rdquo;, as well as improve some security and reporting features &#8211; as well as make the overall installation experience much simpler.</p>
<p>I have already knocked up a <strong><u>very</u></strong> early version of the &ldquo;<strong><em>outofofficeservice.exe</em></strong>&rdquo; which uses the <a href="http://technet.microsoft.com/en-us/library/dd638217.aspx" target="_blank">Set-MailboxAutoReplyConfiguration</a> cmdlet and it works like a charm (<em>and reduced the source code within the service executable by around 120 lines</em>).</p>
<p>I have not made up my mind at the moment, and if you are using the (OOOCTA) tool with Exchange 2007 and would like me to continue with the development &ndash; then there might be a case for split versions (one for E27 and one for E210) &ndash; but please let me know!</p>
<h2>Set-MailboxAutoReplyConfiguration</h2>
<p>Ok so enough musing about the OOOCTA &ndash; let&rsquo;s have some fun with with the Exchange 2010 Set-MailboxAutoReplyConfiguration cmdlet. Just before we get going I would like to just briefly give you an idea as to why it is so much easier than the EWS API approach in Exchange 2007?</p>
<p>Consider the following sample code (<em>which is strongly based upon a script by </em><a href="http://www.mikepfeiffer.net/" target="_blank">Mike Pfeiffer</a>) &ndash; which can be used with both Exchange 2007 and Exchange 2010 servers with the <a href="http://msdn.microsoft.com/en-us/library/dd633710(v=exchg.80).aspx" target="_blank">EWS 1.2 API installed</a> (<em>note that it is only a code sample ~ if you would like to see the complete script have a look</em> <a href="http://www.mikepfeiffer.net/2010/07/manage-exchange-2007-out-of-office-oof-settings-with-powershell-and-the-ews-managed-api/" target="_blank">here</a>).</p>
<p>In essence the script uses the EWS 1.2 to create a function called &ldquo;<strong><em>Set-EWSOOFSettings</em></strong>&rdquo; that will allow for the OOF to be set on a users mailbox (<em>either in Exchange 2007 or Exchange 2010</em>). Its worth also noting that in order for it to work, the administrator account who calls it needs to have Full Access Permissions on the target mailbox:</p>
<pre class="code"><span style="color: blue;">function </span><span style="color: rgb(95, 158, 160);">Set-EWSOofSettings</span><span style="color: black;">() {
        [CmdletBinding()]
    </span><span style="color: blue;">param</span><span style="color: black;">(
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">0, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$true</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$Identity</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">1, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$State</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">2, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$ExternalAudience</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">3, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.DateTime</span><span style="color: black;">]
        </span><span style="color: purple;">$StartTime</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">4, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.DateTime</span><span style="color: black;">]
        </span><span style="color: purple;">$EndTime</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">5, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$InternalReply</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">6, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$ExternalReply</span><span style="color: black;">,
        [Parameter(Position</span><span style="color: red;">=</span><span style="color: black;">7, Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
        [</span><span style="color: teal;">System.String</span><span style="color: black;">]
        </span><span style="color: purple;">$ver </span><span style="color: red;">= </span><span style="color: maroon;">&quot;Exchange2007_SP1&quot;
        </span><span style="color: black;">)

    </span><span style="color: blue;">begin </span><span style="color: black;">{
        </span><span style="color: rgb(95, 158, 160);">Add-Type -Path </span><span style="color: maroon;">&quot;C:\Program Files\Microsoft\Exchange\Web Services\1.0\Microsoft.Exchange.WebServices.dll&quot;

    </span><span style="color: black;">}

    </span><span style="color: blue;">process </span><span style="color: black;">{
        </span><span style="color: purple;">$service </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">New-Object </span><span style="color: maroon;">Microsoft.Exchange.WebServices.Data.ExchangeService </span><span style="color: rgb(95, 158, 160);">-arg </span><span style="color: purple;">$ver
        $service</span><span style="color: black;">.AutodiscoverUrl(</span><span style="color: maroon;">&quot;administrator@seg.com&quot;</span><span style="color: black;">)    

        </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$Identity </span><span style="color: red;">-notmatch </span><span style="color: maroon;">&quot;@&quot;</span><span style="color: black;">) {
            </span><span style="color: purple;">$Identity </span><span style="color: red;">= </span><span style="color: black;">(</span><span style="color: rgb(95, 158, 160);">Get-Recipient </span><span style="color: purple;">$Identity</span><span style="color: black;">).PrimarySMTPAddress.ToString()
        }        

        </span><span style="color: purple;">$oof </span><span style="color: red;">= </span><span style="color: purple;">$service</span><span style="color: black;">.GetUserOofSettings(</span><span style="color: purple;">$Identity</span><span style="color: black;">)

        </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$StartTime </span><span style="color: red;">-and </span><span style="color: purple;">$EndTime</span><span style="color: black;">) {
            </span><span style="color: purple;">$Duration </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">New-Object </span><span style="color: maroon;">Microsoft.Exchange.WebServices.Data.TimeWindow </span><span style="color: rgb(95, 158, 160);">`
            -arg </span><span style="color: purple;">$StartTime</span><span style="color: black;">,</span><span style="color: purple;">$EndTime
            $PSBoundParameters</span><span style="color: black;">.Duration </span><span style="color: red;">= </span><span style="color: purple;">$Duration
            $PSBoundParameters</span><span style="color: black;">.State </span><span style="color: red;">= </span><span style="color: maroon;">&quot;Scheduled&quot;
            </span><span style="color: black;">[</span><span style="color: teal;">Void</span><span style="color: black;">]</span><span style="color: purple;">$PSBoundParameters</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">remove</span><span style="color: black;">(</span><span style="color: maroon;">&quot;StartTime&quot;</span><span style="color: black;">)
            [</span><span style="color: teal;">Void</span><span style="color: black;">]</span><span style="color: purple;">$PSBoundParameters</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">remove</span><span style="color: black;">(</span><span style="color: maroon;">&quot;EndTime&quot;</span><span style="color: black;">)
        }

        </span><span style="color: blue;">foreach</span><span style="color: black;">(</span><span style="color: purple;">$p </span><span style="color: blue;">in </span><span style="color: purple;">$PSBoundParameters</span><span style="color: black;">.</span><span style="color: rgb(139, 69, 19);">GetEnumerator</span><span style="color: black;">()) {
            </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$p</span><span style="color: black;">.key </span><span style="color: red;">-ne </span><span style="color: maroon;">&quot;Identity&quot;</span><span style="color: black;">) {
                </span><span style="color: purple;">$oof</span><span style="color: black;">.</span><span style="color: maroon;">&quot;$($p.key)&quot; </span><span style="color: red;">= </span><span style="color: purple;">$p</span><span style="color: black;">.value
            }
        }
        </span><span style="color: purple;">$service</span><span style="color: black;">.SetUserOofSettings(</span><span style="color: purple;">$Identity</span><span style="color: black;">,</span><span style="color: purple;">$oof</span><span style="color: black;">)
    }
}</span></pre>
<p>Now, compare the above to the &ldquo;<strong><em>Set-MailboxAutoReplyConfiguration</em></strong>&rdquo; cmdlet which performs pretty much the same function as the code above:</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Set-MailboxAutoReplyConfiguration -id </span><span style="color: maroon;">Alan.Reid </span><span style="color: rgb(95, 158, 160);">-InternalMessage </span><span style="color: maroon;">&quot;Blah&quot; </span><span style="color: rgb(95, 158, 160);">-ExternalMessage </span><span style="color: maroon;">&quot;Blah&quot;</span></pre>
<p>As you can see there is a massive difference, plus the command will execute against target Mailboxes as the account that you are logged on with (<em>which would be your Exchange Administration Account</em>) even if it is not the Mailbox owner (e.g. does not have Full Access Permissions).</p>
<p>Expanding on the &ldquo;<strong><em>Set-MailboxAutoReplyConfiguration</em></strong>&rdquo; the following is a sample script that can be executed from the Exchange Management Shell which can take the &ldquo;<strong><em>Internal</em></strong>&rdquo; and &ldquo;<strong><em>External</em></strong>&rdquo; Out of Office settings for a user from a text file:</p>
<pre class="code"><span style="color: green;"># Exchange 2010 - Set Out of Office Script using a text file
# Version 1.0
# Author: Andy Grogan
# http://www.telnetport25.com

</span><span style="color: blue;">Param</span><span style="color: black;">(
    [Parameter(Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$true</span><span style="color: black;">)]
    [</span><span style="color: teal;">System.Management.Automation.ValidateNotNullOrEmptyAttribute</span><span style="color: black;">()]
    [</span><span style="color: teal;">string</span><span style="color: black;">] </span><span style="color: purple;">$mbxID</span><span style="color: black;">,[Parameter(Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
    [</span><span style="color: teal;">System.Management.Automation.ValidateNotNullOrEmptyAttribute</span><span style="color: black;">()]
    [</span><span style="color: teal;">string</span><span style="color: black;">] </span><span style="color: purple;">$SourceFile</span><span style="color: black;">,[</span><span style="color: teal;">System.DateTime</span><span style="color: black;">] </span><span style="color: purple;">$startDate</span><span style="color: black;">,[Parameter(Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$false</span><span style="color: black;">)]
    [</span><span style="color: teal;">System.DateTime</span><span style="color: black;">] </span><span style="color: purple;">$EndDate
</span><span style="color: black;">)

</span><span style="color: purple;">$Message </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-Content </span><span style="color: purple;">$SourceFile

</span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$startDate </span><span style="color: red;">-eq </span><span style="color: purple;">$null </span><span style="color: red;">-or </span><span style="color: purple;">$EndDate </span><span style="color: red;">-eq </span><span style="color: purple;">$null</span><span style="color: black;">){
    </span><span style="color: rgb(95, 158, 160);">Set-MailboxAutoReplyConfiguration -Id </span><span style="color: purple;">$mbxID </span><span style="color: rgb(95, 158, 160);">-AutoReplyState </span><span style="color: maroon;">Enabled </span><span style="color: rgb(95, 158, 160);">-InternalMessage </span><span style="color: maroon;">&quot;$Message&quot; </span><span style="color: rgb(95, 158, 160);">-ExternalMessage </span><span style="color: maroon;">&quot;$Message&quot;
</span><span style="color: black;">}</span><span style="color: blue;">else</span><span style="color: black;">{
    </span><span style="color: rgb(95, 158, 160);">Set-MailboxAutoReplyConfiguration -Id </span><span style="color: purple;">$mbxID </span><span style="color: rgb(95, 158, 160);">-AutoReplyState </span><span style="color: maroon;">Scheduled </span><span style="color: rgb(95, 158, 160);">-InternalMessage </span><span style="color: maroon;">&quot;$Message&quot; </span><span style="color: rgb(95, 158, 160);">-ExternalMessage </span><span style="color: maroon;">&quot;$Message&quot; </span><span style="color: rgb(95, 158, 160);">-StartTime </span><span style="color: maroon;">&quot;$startDate&quot; </span><span style="color: rgb(95, 158, 160);">-EndTime </span><span style="color: maroon;">&quot;$endDate&quot;
</span><span style="color: black;">}</span></pre>
<p>The OOF message is contained within the path that is passed within the &ldquo;<strong><em>$SourceFile</em></strong>&rdquo; parameter &ndash; therefore in my example the text file contains:</p>
<pre>This user has left
Thank you for your e-mail, this user has now left our organisation, please contact McLovin&#39; on xxx22-555.
Regards,
HR - My Organisation</pre>
<p>The following screen shots shows the script in action when setting the OOF for the user without a schedule:</p>
<pre>.\SetOOFExchange2010.ps1 &ndash;mbxID &lt;samAccountName&gt; &ndash;SourceFile &lt;path to source file&gt;</pre>
<p><img alt="oofFunimgs001" border="0" height="57" src="http://www.telnetport25.com/wp-content/uploads/2012/01/oofFunimgs001.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="oofFunimgs001" width="676" /></p>
<p>The Out of Office for the user will then look like the following:</p>
<p><img alt="oofFunimgs002" border="0" height="640" src="http://www.telnetport25.com/wp-content/uploads/2012/01/oofFunimgs002.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="oofFunimgs002" width="427" /></p>
<p>You can also add the &ndash;StartTime and &ndash;EndTime parameters to the script to schedule to OOF.</p>
<p>Some further fun can be had by adding in a few HTML tags to the source text file &ndash; for example if you change the source file to look like the following:</p>
<pre>&lt;Font color=&quot;red&quot;&gt;&lt;h1&gt;This user has left&lt;/h1&gt;&lt;/font&gt;
Thank you for your e-mail, &lt;b&gt;this user has now left our organisation&lt;/b&gt;, please contact McLovin&#39; on xxx22-555.
Regards,
HR - My Organisation</pre>
<p>The OOF Messages will look like the following:</p>
<p><img alt="oofFunimgs003" border="0" height="421" src="http://www.telnetport25.com/wp-content/uploads/2012/01/oofFunimgs003.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="oofFunimgs003" width="378" /></p>
<h2>Get-MailboxAutoReplyConfiguration</h2>
<p>As you might expect, as well as giving you the ability to Set the OOF state in Exchange 2010 you can also get the Out of Office information for a given mailbox using the <a href="http://technet.microsoft.com/en-us/library/dd638081.aspx" target="_blank">Get-MailboxAutoReplyConfiguration</a> cmdlet.</p>
<p>The syntax for this command (<em>in its most basic form</em>) is:</p>
<pre>Get-MailboxAutoReplyConfiguration &ndash;id &lt;samAccountName&gt;</pre>
<p>The sample script below gives you a very simple overview of how you can report on the settings of each mailbox in your organisation where the Out of Office status is either &ldquo;<strong><em>Enabled</em></strong>&rdquo; or &ldquo;<strong><em>Scheduled</em></strong>&rdquo; to a text file:</p>
<pre class="code"><span style="color: green;"># Exchange 2010 - Get Out of Office Report to a text file
# Version 1.0
# Author: Andy Grogan
# http://www.telnetport25.com

</span><span style="color: blue;">Param</span><span style="color: black;">(
    [Parameter(Mandatory</span><span style="color: red;">=</span><span style="color: purple;">$true</span><span style="color: black;">)]
    [</span><span style="color: teal;">System.Management.Automation.ValidateNotNullOrEmptyAttribute</span><span style="color: black;">()]
    [</span><span style="color: teal;">string</span><span style="color: black;">] </span><span style="color: purple;">$reportFile
</span><span style="color: black;">)

</span><span style="color: rgb(95, 158, 160);">New-Item -ItemType </span><span style="color: maroon;">file </span><span style="color: purple;">$reportFile </span><span style="color: rgb(95, 158, 160);">-Force
</span><span style="color: purple;">$date </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-Date
Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;Out of office report file: $Date&quot;

</span><span style="color: purple;">$repMBXData </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-Mailbox </span><span style="color: black;">| </span><span style="color: rgb(95, 158, 160);">Get-MailboxAutoReplyConfiguration </span><span style="color: black;">| </span><span style="color: rgb(95, 158, 160);">where </span><span style="color: black;">{</span><span style="color: purple;">$_</span><span style="color: black;">.AutoReplyState </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;Enabled&#39; </span><span style="color: red;">-or </span><span style="color: purple;">$_</span><span style="color: black;">.AutoReplyState </span><span style="color: red;">-eq </span><span style="color: maroon;">&#39;Scheduled&#39;</span><span style="color: black;">}

</span><span style="color: blue;">foreach</span><span style="color: black;">(</span><span style="color: purple;">$oofEntry </span><span style="color: blue;">in </span><span style="color: purple;">$repMBXData</span><span style="color: black;">){

        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;---------------------------------------------&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;Mailbox ID:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.Identity
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;Out of Office Status:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.AutoReplyState
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;Internal Message:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.InternalMessage
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;External Message:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.ExternalMessage
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;Start Time:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.StartTime
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;End Time:&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile $oofEntry</span><span style="color: black;">.EndTime
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;---------------------------------------------&quot;
        </span><span style="color: rgb(95, 158, 160);">Add-Content </span><span style="color: purple;">$reportFile </span><span style="color: maroon;">&quot;`n&quot;
</span><span style="color: black;">}
</span><span style="color: rgb(95, 158, 160);">Invoke-Item </span><span style="color: purple;">$reportFile</span></pre>
<p>The script syntax looks like the following:</p>
<pre>.\GetOOFExchange2010.ps1 &ndash;reportFile &lt;path to report file&gt;</pre>
<p><img alt="oofFunimgs004" border="0" height="77" src="http://www.telnetport25.com/wp-content/uploads/2012/01/oofFunimgs004.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="oofFunimgs004" width="553" /></p>
<p>The output of the script looks like the following:</p>
<pre>Out of office report file: 01/29/2012 15:39:24
---------------------------------------------
Mailbox ID:
prepAD.local/ExchangeUsers/Alan.Reid
Out of Office Status:
Enabled
Internal Message:
&lt;html&gt;
&lt;body&gt;
&lt;font color=&quot;red&quot;&gt;
&lt;h1&gt;This user has left&lt;/h1&gt;
&lt;/font&gt;Thank you for your e-mail, &lt;b&gt;this user has now left our organisation&lt;/b&gt;, please contact McLovin&#39; on xxx22-555. Regards, HR - My Organisation
&lt;/body&gt;
&lt;/html&gt;

External Message:
&lt;html&gt;
&lt;body&gt;
&lt;font color=&quot;red&quot;&gt;
&lt;h1&gt;This user has left&lt;/h1&gt;
&lt;/font&gt;Thank you for your e-mail, &lt;b&gt;this user has now left our organisation&lt;/b&gt;, please contact McLovin&#39; on xxx22-555. Regards, HR - My Organisation
&lt;/body&gt;
&lt;/html&gt;

Start Time:
29/01/2012 15:00:00
End Time:
30/01/2012 15:00:00
---------------------------------------------</pre>
<h2>Using Set-MailboxAutoReplyConfiguration to disable a user OOF</h2>
<p>If you would like to disable to OOF for a given user in your environment you can use the following:</p>
<pre>Set-MailboxAutoReplyConfiguration &ndash;id &lt;mailbox name&gt; &ndash;AutoReplyState Disabled</pre>
<h2>Script Downloads</h2>
<p>If you would like to download the scripts (rather than copy and paste them) for this article, I have made them available <a href="http://www.telnetport25.com/downloads/scripts/exchange2010/SetOOFExchange2010.ps1" target="_blank">here</a>&nbsp;<a href="http://www.telnetport25.com/downloads/scripts/exchange2010/GetOOFExchange2010.ps1" target="_blank">and here</a>.</p>
<div class="shr-publisher-1104"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fexchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration%2F' data-shr_title='Exchange+2010+Out+of+Office+Fun+with+Set-MailboxAutoReplyConfiguration%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/exchange-2010-out-of-office-fun-with-set-mailboxautoreplyconfiguration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Monitoring Script-Get Local Databases</title>
		<link>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-local-databases/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-monitoring-script-get-local-databases</link>
		<comments>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-local-databases/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 15:31:28 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Nagios]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1086</guid>
		<description><![CDATA[Script Description Powershell based NSClient++ monitoring script for use with Nagios Core. This script performs the following functions: Retrieves the Databases that are running on the monitored server Checks to see if they are mounted If no databases are resident on the server (in DAG configurations) the script returns the following information string to the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>Powershell based NSClient++ monitoring script for use with Nagios Core. <br />
	This script performs the following functions:</p>
<ul>
<li>Retrieves the Databases that are running on the monitored server</li>
<li>Checks to see if they are mounted</li>
<li>If no databases are resident on the server (in DAG configurations) the script returns the following information string to the Nagios interface:
<p>		&rdquo;OK: No databases are active on this host&rdquo;</li>
</ul>
<p>If any database is dismounted the script will return the following exit code:</p>
<pre>2: CRITICAL</pre>
<p>If all Databases are mounted the script will return an exit code of:</p>
<pre>0: OK</pre>
<p><img alt="NagiosCore031" border="0" height="33" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore031.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore031" width="567" /></p>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetExchangeLocalDBs.ps1">GetExchangeLocalDBs.ps1 &ndash; 1 KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article(s):</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 1&ndash;Configuring Ubuntu for the Installation of Nagios Core&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 2&ndash;Setting up basic Windows Server Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 3&ndash;Setting up basic Exchange 2010 Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 4&ndash;Custom Exchange Monitoring Scripts&hellip;</a></li>
</ul>
<div class="shr-publisher-1086"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnagios-monitoring-script-get-local-databases%2F' data-shr_title='Nagios+Monitoring+Script-Get+Local+Databases'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-local-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Monitoring Script-Monitor DAG Replication Status</title>
		<link>http://www.telnetport25.com/2012/01/nagios-monitoring-script-monitor-dag-replication-status/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-monitoring-script-monitor-dag-replication-status</link>
		<comments>http://www.telnetport25.com/2012/01/nagios-monitoring-script-monitor-dag-replication-status/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 15:26:02 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Nagios]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1083</guid>
		<description><![CDATA[Script Description Powershell based NSClient++ monitoring script for use with Nagios Core. This script is designed to Monitor the Replication Status of each database within a DAG Configuration. The script can return one of 2 error codes which are as follow: 0: OK 2: CRITICAL Download [ GetDAGReplicationStatus.ps1 &#8211; 1 KB ] Usage Please refer [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>Powershell based NSClient++ monitoring script for use with Nagios Core. <br />
	This script is designed to Monitor the Replication Status of each database within a DAG Configuration. The script can return one of 2 error codes which are as follow:</p>
<pre>0: OK
2: CRITICAL</pre>
<p><img alt="NagiosCore030" border="0" height="90" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore030.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore030" width="555" /></p>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetDAGReplicationStatus.ps1">GetDAGReplicationStatus.ps1 &ndash; 1 KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article(s):</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 1&ndash;Configuring Ubuntu for the Installation of Nagios Core&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 2&ndash;Setting up basic Windows Server Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 3&ndash;Setting up basic Exchange 2010 Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 4&ndash;Custom Exchange Monitoring Scripts&hellip;</a></li>
</ul>
<div class="shr-publisher-1083"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnagios-monitoring-script-monitor-dag-replication-status%2F' data-shr_title='Nagios+Monitoring+Script-Monitor+DAG+Replication+Status'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/nagios-monitoring-script-monitor-dag-replication-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Monitoring Script-Get DAG Information</title>
		<link>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-dag-information/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-monitoring-script-get-dag-information</link>
		<comments>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-dag-information/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 15:15:49 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Nagios]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1076</guid>
		<description><![CDATA[Script Description Powershell based NSClient++ monitoring script for use with Nagios Core. This script is designed to return the name of the DAG which the host server is a member of. The script only returns the following status code: 0: OK However the return description into the Nagios Interface will either be: Name of the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>Powershell based NSClient++ monitoring script for use with Nagios Core.</p>
<p>This script is designed to return the name of the DAG which the host server is a member of. The script only returns the following status code:</p>
<pre>0: OK</pre>
<p>However the return description into the Nagios Interface will either be:</p>
<ul>
<li>Name of the DAG</li>
<li>This Server is not part of a DAG</li>
</ul>
<p><img alt="NagiosCore029" border="0" height="34" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore029.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore029" width="473" /></p>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetDAGnfo.ps1">GetDAGnfo.ps1 &ndash; 1 KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article(s):</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 1&ndash;Configuring Ubuntu for the Installation of Nagios Core&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 2&ndash;Setting up basic Windows Server Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 3&ndash;Setting up basic Exchange 2010 Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 4&ndash;Custom Exchange Monitoring Scripts&hellip;</a></li>
</ul>
<div class="shr-publisher-1076"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnagios-monitoring-script-get-dag-information%2F' data-shr_title='Nagios+Monitoring+Script-Get+DAG+Information'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/nagios-monitoring-script-get-dag-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Monitoring Script-Exchange 2010 Content Index Monitoring</title>
		<link>http://www.telnetport25.com/2012/01/nagios-monitoring-script-exchange-2010-content-index-monitoring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-monitoring-script-exchange-2010-content-index-monitoring</link>
		<comments>http://www.telnetport25.com/2012/01/nagios-monitoring-script-exchange-2010-content-index-monitoring/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 15:10:10 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Nagios]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1073</guid>
		<description><![CDATA[Script Description Powershell based NSClient++ monitoring script for use with Nagios Core. This script is designed to monitor the status of the Content Index for each mailbox DAG database within your environment &#8211; the script has two exit statuses: 0: OK 2: Critical Critical is flagged when one or more Content Indexes are in a [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>Powershell based NSClient++ monitoring script for use with Nagios Core. <br />
	This script is designed to monitor the status of the Content Index for each mailbox DAG database within your environment &ndash; the script has two exit statuses:</p>
<pre>0: OK
2: Critical</pre>
<p>Critical is flagged when one or more Content Indexes are in a failed state within your DAG environment.</p>
<p><img alt="NagiosCore028" border="0" height="46" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore028.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore028" width="610" /></p>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/Exchange2010ContentIndexMonitor.ps1">Exchange2010ContentIndexMonitor.ps1 &ndash; 1 KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article(s):</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 1&ndash;Configuring Ubuntu for the Installation of Nagios Core&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 2&ndash;Setting up basic Windows Server Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 3&ndash;Setting up basic Exchange 2010 Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 4&ndash;Custom Exchange Monitoring Scripts&hellip;</a></li>
</ul>
<div class="shr-publisher-1073"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnagios-monitoring-script-exchange-2010-content-index-monitoring%2F' data-shr_title='Nagios+Monitoring+Script-Exchange+2010+Content+Index+Monitoring'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/nagios-monitoring-script-exchange-2010-content-index-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios Monitoring Script&#8211;Exchange 2010 Backup Monitoring</title>
		<link>http://www.telnetport25.com/2012/01/nagios-monitoring-scriptexchange-2010-backup-monitoring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nagios-monitoring-scriptexchange-2010-backup-monitoring</link>
		<comments>http://www.telnetport25.com/2012/01/nagios-monitoring-scriptexchange-2010-backup-monitoring/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 14:43:44 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 Nagios]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagios Core]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1064</guid>
		<description><![CDATA[Script Description Powershell based NSClient++ monitoring script for use with Nagios Core. This script is designed to monitor the &#8220;LastFullBackup&#8221; attribute of the host Mailbox Server &#8211; the script has two exit statuses: 0: OK 2: CRITICAL Critical (2) is flagged when one or more databases hosted on the monitored server has a &#8220;lastFullBackup&#8221; of [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h2>Script Description</h2>
<p>Powershell based NSClient++ monitoring script for use with Nagios Core. <br />
	This script is designed to monitor the &ldquo;LastFullBackup&rdquo; attribute of the host Mailbox Server &ndash; the script has two exit statuses:</p>
<pre>0: OK
2: CRITICAL</pre>
<p>Critical (2) is flagged when one or more databases hosted on the monitored server has a &ldquo;<strong><em>lastFullBackup</em></strong>&rdquo; of 2 days or more.</p>
<p><img alt="NagiosCore027" border="0" height="35" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore027.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore027" width="537" /></p>
<h2>Download</h2>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/Exchange2010BackupMonitoring.ps1">Exchange2010BackupMonitoring.ps1 &ndash; 1.3 KB</a> ]</p>
<h2>Usage</h2>
<p>Please refer to the following article(s):</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 1&ndash;Configuring Ubuntu for the Installation of Nagios Core&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 2&ndash;Setting up basic Windows Server Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 3&ndash;Setting up basic Exchange 2010 Monitoring&hellip;</a></li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/">Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&ndash;Part 4&ndash;Custom Exchange Monitoring Scripts&hellip;</a></li>
</ul>
<div class="shr-publisher-1064"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnagios-monitoring-scriptexchange-2010-backup-monitoring%2F' data-shr_title='Nagios+Monitoring+Script%26ndash%3BExchange+2010+Backup+Monitoring'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/nagios-monitoring-scriptexchange-2010-backup-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&#8211;Part 4&#8211;Custom Exchange Monitoring Scripts&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts</link>
		<comments>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 14:30:00 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux with Exchange]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Database Availability Groups]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 DAG]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[NRPE]]></category>
		<category><![CDATA[Ubuntu Server 11.11]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1061</guid>
		<description><![CDATA[Ok, I have to admit that this series has been a lot of fun (well for me anyway ~ I have had a blast) &#8211; but this part is perhaps by far and away the most fun that I have personally had &#8211; as it means that I have needed to develop some sample Powershell [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Ok, I have to admit that this series has been a lot of fun (<em>well for me anyway ~ I have had a blast</em>) &ndash; but this part is perhaps by far and away the most fun that I have personally had &ndash; as it means that I have needed to develop some sample Powershell scripts for monitoring Exchange 2010 using Powershell with Nagios!</p>
<p>This is one of the real boons for Nagios &ndash; as by developing your own Powershell monitoring scripts which return values to the Nagios Core interface means that you are in essence using Nagios as a monitoring &ldquo;<strong><em>wrapper</em></strong>&rdquo; providing your with the flexibility to pretty much monitor any facet of your Exchange Systems.</p>
<p>Just as a quick overview to the series for those of you whom are just joining us:</p>
<ul>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">In Part 1</a> <br />
		I covered how you can install Nagios Core 3.3.1 onto&nbsp; an existing Ubuntu 11.10 server within your environment</li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">In Part 2</a> <br />
		I covered how you can setup basic monitoring on your first Windows Server &#8211; making use of the NSClient++, I also covered how you could setup a basic &ldquo;<strong><em>check_nt</em></strong>&rdquo; monitoring service</li>
<li><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/" target="_blank">In Part 3</a> <br />
		I covered how you can install the NRPE daemon onto your Nagios Server &#8211; and then use the NSClient to execute a basic Powershell script and report the output back into the Nagios interface</li>
</ul>
<h2>Custom Powershell for Exchange 2010 for use with Nagios</h2>
<p>There are a couple key things to remember when developing custom Powershell scripts for use with Nagios:</p>
<ul>
<li>You need to structure your scripts so that they always return an exit code which is proceeded by a Write-Host which adds a description to the last values returned (<strong><em>more on this later</em></strong>)</li>
<li>If you operate an environment that has a mix of DAG and Basic Servers (DAG and non-DAG) or for that matter &ndash; servers which operate multiple roles (MBX,CAS,HT) code your scripts so they can handle the absence of any specific features for example; if you develop a script that is designed to operate on DAG based servers, you should code in logic that can handle DAG features nothing being available &ndash; as a sample see the &ldquo;<strong><em>GetDagnfo.ps1</em></strong>&rdquo; script which is available for download below</li>
</ul>
<h2>Powershell exit codes for Nagios</h2>
<p>As mentioned above &ndash; it is important that any Powershell that your write for use with Nagios returns and exit code. <br />
	Powershell has the ability to terminate execution with an exit code &ndash; this is demonstrated <a href="http://powershell.com/cs/blogs/tips/archive/2009/05/18/returning-exit-code-from-script.aspx" target="_blank">here</a> &ndash; you can within your own scripts return any numeric decimal code that you want by using the &ldquo;<strong><em>exit</em></strong>&rdquo; statement.</p>
<p>However that being said, Nagios supports four exit status codes &ndash; which your scripts should conform to, these are as follows:</p>
<p><img alt="PowershellExitCodesForNagios" border="0" height="245" src="http://www.telnetport25.com/wp-content/uploads/2012/01/PowershellExitCodesForNagios.png" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="PowershellExitCodesForNagios" width="321" /></p>
<p>Exit codes 0 and 2 are reflected within the Nagios core interface like so:</p>
<pre>Exit code 0:</pre>
<p><img alt="NagiosCore024" border="0" height="23" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore024.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore024" width="463" /></p>
<pre>Exit code 2:</pre>
<p><img alt="NagiosCore025" border="0" height="17" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore025.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore025" width="459" /></p>
<h2>Ok so what is the Powershell script behind the Backup Monitoring?</h2>
<p>The script itself is pretty straight forward, and currently only checks for the lastFullBackup value on the Databases are resident on the Monitored Exchange Server. <br />
	Within the script there is a variable called <font face="Courier New">$ThreshHold</font> which reflects the number of days that can lapse without a full backup before the script will return an error to the Nagios Interface.</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Add-PSSnapin </span><span style="color: maroon;">Microsoft.Exchange.Management.PowerShell.E2010
</span><span style="color: purple;">$localServerName </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-WmiObject -Class </span><span style="color: maroon;">Win32_ComputerSystem </span><span style="color: black;">| </span><span style="color: rgb(95, 158, 160);">Select </span><span style="color: maroon;">Name
</span><span style="color: purple;">$ThreshHold </span><span style="color: red;">= </span><span style="color: black;">2
</span><span style="color: purple;">$Results </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">Get-MailboxDatabase -Server </span><span style="color: purple;">$localServerName</span><span style="color: black;">.Name </span><span style="color: rgb(95, 158, 160);">-Status </span><span style="color: black;">| </span><span style="color: rgb(95, 158, 160);">Select </span><span style="color: black;">Identity,Server,LastFullBackup | </span><span style="color: rgb(95, 158, 160);">where </span><span style="color: black;">{</span><span style="color: purple;">$_</span><span style="color: black;">.Server </span><span style="color: red;">-eq </span><span style="color: purple;">$localServerName</span><span style="color: black;">.Name}

</span><span style="color: blue;">foreach</span><span style="color: black;">(</span><span style="color: purple;">$itm </span><span style="color: blue;">in </span><span style="color: purple;">$Results</span><span style="color: black;">){

        </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$itm </span><span style="color: red;">-eq </span><span style="color: purple;">$null</span><span style="color: black;">){
            </span><span style="color: purple;">$Output </span><span style="color: red;">= </span><span style="color: maroon;">&quot;OK: No Databases are active on this host&quot;
            </span><span style="color: purple;">$NagiosResult </span><span style="color: red;">= </span><span style="color: black;">0
        }</span><span style="color: blue;">else</span><span style="color: black;">{
            </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$itm</span><span style="color: black;">.LastFullBackup </span><span style="color: red;">-eq </span><span style="color: purple;">$null</span><span style="color: black;">){
                </span><span style="color: purple;">$lastBackupSeed </span><span style="color: red;">= </span><span style="color: black;">9999

            }</span><span style="color: blue;">else</span><span style="color: black;">{
                </span><span style="color: purple;">$lastBackupSeed </span><span style="color: red;">= </span><span style="color: rgb(95, 158, 160);">New-TimeSpan </span><span style="color: black;">$(</span><span style="color: purple;">$itm</span><span style="color: black;">.LastFullBackup) $(</span><span style="color: rgb(95, 158, 160);">Get-Date</span><span style="color: black;">)
            }
            </span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$lastBackupSeed</span><span style="color: black;">.days </span><span style="color: red;">-gt </span><span style="color: purple;">$ThreshHold </span><span style="color: red;">-or </span><span style="color: purple;">$lastBackupSeed </span><span style="color: red;">-eq </span><span style="color: black;">9999){
                </span><span style="color: purple;">$Res </span><span style="color: red;">= </span><span style="color: maroon;">&quot;CRITICAL: Database Backup out of Schedule: &quot; </span><span style="color: red;">+ </span><span style="color: purple;">$itm</span><span style="color: black;">.Identity
                </span><span style="color: purple;">$Output </span><span style="color: red;">+= </span><span style="color: purple;">$Res </span><span style="color: red;">+ </span><span style="color: maroon;">&quot; &quot;
                </span><span style="color: purple;">$statFlag </span><span style="color: red;">= </span><span style="color: black;">1
            }</span><span style="color: blue;">else</span><span style="color: black;">{
                </span><span style="color: purple;">$Output </span><span style="color: red;">+= </span><span style="color: maroon;">&quot;OK: Database: &quot; </span><span style="color: red;">+ </span><span style="color: purple;">$itm</span><span style="color: black;">.identity </span><span style="color: red;">+ </span><span style="color: maroon;">&quot; has a recent backup&quot; </span><span style="color: red;">+ </span><span style="color: maroon;">&quot; &quot;
            </span><span style="color: black;">}
        }
}
</span><span style="color: rgb(95, 158, 160);">Write-Host </span><span style="color: purple;">$Output
</span><span style="color: blue;">if</span><span style="color: black;">(</span><span style="color: purple;">$statFlag </span><span style="color: red;">-eq </span><span style="color: black;">1){
    exit 2
}</span><span style="color: blue;">else</span><span style="color: black;">{
    exit 0
}</span></pre>
<h2>Setting your scripts up</h2>
<p><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/" target="_blank">As detailed in part 3</a> &#8211; there are 5 steps that you need to follow in order to get your Exchange Monitoring Scripts reporting into the Nagios interface &ndash; these are as follows:</p>
<ol>
<li>On your Exchange Server where you have installed the NSClient++, Copy (or save) the scripts into the NSClient &ldquo;Scripts&rdquo; folder (this should be in &ldquo;<em><strong>C:\Program Files\NSClient++\Scripts</strong></em>&rdquo;).</li>
<li>Perform the following within the NSC.ini file (this should be located in &ldquo;<em><strong>C:\Program Files\NSClient++\</strong></em>&rdquo;)
<p>		For this example we will be using the &ldquo;<strong><em>Exchange2010BackupMonitoring.ps1</em></strong>&rdquo; script. <br />
		Within the NSC.ini find the section entitled <strong>[ NRPE Handlers ]</strong> then add the following command:</li>
</ol>
<pre>check_exBackup=cmd /c echo scripts\Exchange2010BackupMonitoring.ps1; exit($lastexitcode) | powershell.exe -command -</pre>
<p>Save the file, and then restart the &ldquo;NSClient++&rdquo; service from within the Windows Services Manager</p>
<ol>
<li>From your Nagios Server using Filezilla &#8211; download a copy of the commands.cfg (located in /usr/local/nagios/etc/objects) <br />
		Open it within Notepad++ and add in the following command definition</li>
</ol>
<pre>define command{
    command_name    check_exbackup
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 120 -c check_exBackup
    }</pre>
<p>Save the file, and then upload it back to your Nagios Server.</p>
<ol>
<li>From your Nagios Server using Filezilla &ndash; download a copy of the windows.cfg (located in /usr/local/nagios/etc/objects) <br />
		Open it within Notepad++ and add in the following Service Definition for your Exchange Host:</li>
</ol>
<pre>define service{
use generic-service
host_name prod-ex2010-01.prepad.local
service_description Exchange DBs on Host
check_command check_exdb
}</pre>
<ol>
<li>Logon to your Nagios Server using PuTTY and from the command line enter in the following command:</li>
</ol>
<pre>sudo /etc/init.d/nagios restart</pre>
<h2>Sample Monitoring Script Downloads</h2>
<p>Below I have provided 5 sample Powershell scripts which your are free to use / modify as you see fit. These should be downloaded to your Exchange Server into the NSCilent++ Scripts Directory &ldquo;<strong><em>C:\program files\NSClient++\Scripts</em></strong>&rdquo; <br />
	Before you use them, you will need to ensure that you have created the relevant service and command definitions (described above).</p>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/Exchange2010BackupMonitoring.ps1" target="_blank">Exchange2010BackupMonitoring.ps1 &ndash; 1.3 KB</a> ] <br />
	<img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/Exchange2010ContentIndexMonitor.ps1" target="_blank">Exchange2010ContentIndexMonitor.ps1 &ndash; 1 KB</a> ] <br />
	<img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetDAGnfo.ps1" target="_blank">GetDAGnfo.ps1 &ndash; 1 KB</a> ] <br />
	<img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetDAGReplicationStatus.ps1" target="_blank">GetDAGReplicationStatus.ps1 &ndash; 1 KB</a> ] <br />
	<img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/GetExchangeLocalDBs.ps1" target="_blank">GetExchangeLocalDBs.ps1 &ndash; 1 KB</a> ]</p>
<h2>Sample Output within Nagios</h2>
<p>The following is a sample output from the above monitoring scripts within my environment, naturally the ideal situation is to have all your statuses reporting &ldquo;<strong><em>OK</em></strong>&rdquo; <img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2012/01/wlEmoticon-smile2.png" /> as you can see I have a problem with Backups!</p>
<p><img alt="NagiosCore026" border="0" height="674" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore026.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore026" width="594" /></p>
<h2>In part 5</h2>
<p>In part 5 I will be covering the following:</p>
<ul>
<li>Grouping Servers and Services into Categories</li>
<li>Troubleshooting Tips</li>
<li>Sample Exchange Service Files</li>
<li>Reporting</li>
</ul>
<div class="shr-publisher-1061"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Finstalling-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts%2F' data-shr_title='Installing+Nagios+on+Ubuntu+Server+11.10+then+Monitoring+Windows+and+Exchange+Servers%26ndash%3BPart+4%26ndash%3BCustom+Exchange+Monitoring+Scripts%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-4custom-exchange-monitoring-scripts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&#8211;Part 3&#8211;Setting up basic Exchange 2010 Monitoring&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring</link>
		<comments>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 18:59:55 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux with Exchange]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Database Availability Groups]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 DAG]]></category>
		<category><![CDATA[Exchange Server]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[NRPE]]></category>
		<category><![CDATA[Ubuntu Server 11.11]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1046</guid>
		<description><![CDATA[Welcome to part 3 of my series which is based around how you can use Nagios to monitor both Windows and Exchange Servers. In the previous two posts (Part 1 is located here and Part 2 is located here) – I covered the following: Part 1 Setting up Nagios on Ubuntu Part 2 Setting up [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Welcome to part 3 of my series which is based around how you can use Nagios to monitor both Windows and Exchange Servers. In the previous two posts (<a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">Part 1 is located here</a> and <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">Part 2 is located here</a>) – I covered the following:</p>
<h3>Part 1</h3>
<ul>
<li>Setting up Nagios on Ubuntu </li>
</ul>
<h3>Part 2</h3>
<ul>
<li>Setting up basic monitoring for a Windows Server </li>
</ul>
<p>In this part I would like to cover setting up some basic Exchange monitoring for Exchange 2010 DAG based servers using a script which is freely available in the Nagios community.</p>
<p>However before we get started there are a number of things that we need to configure on both the Exchange Server and the Nagios Server before we can effectively monitor our Exchange servers.</p>
<h2>Installing NRPE on your Ubuntu Server</h2>
<p>The definition of the NRPE Add-In for Nagios is as follows (taken from the <a href="http://www.nagios.org/" target="_blank">Nagios Website</a>):</p>
<blockquote><p>NRPE allows you to remotely execute Nagios plugins on other Linux/Unix machines. This allows you to monitor remote machine metrics (disk usage, CPU load, etc.). NRPE can also communicate with some of the Windows agent add-ons, so you can execute scripts and check metrics on remote Windows machines as well.</p>
</blockquote>
<p>In order to remotely execute Exchange specific monitoring commands from your Nagios server (which will be via Powershell) you will need to install the relevant components of the <strong>Nagios Remote Plugin Executor</strong> (<strong><em>NRPE</em></strong>) environment within your Nagios Environment.</p>
<blockquote><p><font color="#111111"><strong><u>NOTE:</u></strong> </font>It is very important that you follow these steps as closely as possible as I personally found getting NRPE to work a bit of a hassle.</p>
</blockquote>
<p>Using PuTTY (<a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">see part 1</a>) logon to the Terminal of your Ubuntu server and type in the following commands:</p>
<pre>

sudo –s

cd /downloads

wget <a href="http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz">http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz</a>

tar –zxvf nrpe-2.13.tar.gz

cd nrpe-2.13

./configure -–enable-command-args -–disable-ssl

make all

make install-plugin

make install-daemon

make install-daemon-config

apt-get install xinetd

make install-xinetd
</pre>
<p>You will then need to add the nrpe protocol to the Ubuntu Servers Services file.</p>
<p>From the Terminal Window type in the following command:</p>
<pre>nano /etc/services</pre>
<p>From the text editor window that appears you will need to add the following line:</p>
<pre>nrpe 5666/tcp</pre>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NagiosCore020" border="0" alt="NagiosCore020" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore020.jpg" width="636" height="362" /></p>
<p>When you have made the changes (<em>as per the example above</em>) press <strong><em>CTRL-O</em></strong> (to save the file) and <strong><em>CTRL-X</em></strong> (<em>to exit</em>).</p>
<p>You should now restart the the xinetd server using the following command:</p>
<pre>/etc/init.d/xinetd restart</pre>
<p>You should now check to ensure that the xinetd services (<em>which encapsulates the NRPE service</em>) is listening on your Ubuntu host – in order to do this you should type the following command into the Terminal window:</p>
<pre>netstat –at | grep nrpe</pre>
<p>You should be presented with the following output:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NagiosCore021" border="0" alt="NagiosCore021" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore021.jpg" width="639" height="73" /></p>
<h2>Configuring your Exchange Server for Monitoring</h2>
<p><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">In part 2</a> I explained how you can install the NSClient++ monitoring agent on a Windows server in order to perform some basic monitoring. The example made use of the 32bit NSClient++, in order to Monitor Exchange 2010 you will need to <a href="http://files.nsclient.org/x-0.3.x/NSClient%2B%2B-0.3.9-x64.msi" target="_blank">download the x64 client</a> to your Exchange servers and using the same procedure which is contained in <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">part 2</a> install on your Exchange Server.</p>
<p>You should ensure that you also follow the process of defining the Exchange Server as a Windows Host within the windows.cfg file as you did in <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/" target="_blank">part 2</a>.</p>
<h3>Downloading Nagios compatible Exchange 2010 Monitoring Scripts</h3>
<p>There are a number of Exchange 2010 Monitoring Scripts out in the Nagios community and by the end of this series I would like to put you in the position where I have provided you with some of my own, and hopefully enabled you to write your own (<em>if you like writing stuff in Powershell</em>).</p>
<p>However to get us started I have been using a script which was originally written by “<a href="http://www.angryadmin.co.uk/?p=167" target="_blank">The Angry Admin</a>”, I have modified it slightly (<em>to automatically detect the Host Exchange Server</em>) – but aside from that it remains largely unchanged therefore the intellectual rights belong to “<strong><em>The Angry Admin</em></strong>”.</p>
<p>You should download the script to the “<strong><em>C:\program files\NSClient++\Scripts</em></strong>” folder on the Exchange 2010 server that you wish to monitor.</p>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/nagios/exrep.ps1" target="_blank">Exchange 2010 DAG Replication Status Script for Nagios – 1KB</a> ]</p>
<p>When you have downloaded the script you will need to perform the following steps on the Exchange Server:</p>
<ul>
<li>Set the Powershell Execution Policy to “<strong><em>Remote Signed</em></strong>” – this is done by opening an Powershell command prompt and typing the following command:
<p><font face="Courier New">Set-ExecutionPolicy “RemoteSigned”</font></p>
</li>
</ul>
<h3>Configuring the NSClient++ ini File</h3>
<ul>
<li>On the Exchange Server locate the “<strong><em>NSC.ini</em></strong>” (<em>NSClient configuration file</em>) which should be located in “<strong><em>C:\Program Files\NSClient++\</em></strong>” and perform the following:
<ul>
<li>Within the file locate the <strong>[NRPE]</strong> section and ensure that the following entries are either present or uncommented (e.g. the “;” is removed) </li>
</ul>
<pre># NRPE PORT NUMBER
port=5666

# USE SSL SOCKET
use_ssl=0

# ALLOWED HOST ADDRESSES
allowed_hosts=&lt;Nagios Server Address&gt; # e.g. in my configuration it’s allowed_hosts=172.31.253.159</pre>
<ul>
<li>Within the “<strong><em>NSC.ini</em></strong>” you will find a section called <strong>[NRPE Client Handlers]</strong> – rename this to <strong>[NRPE Handlers]</strong> and then add: </li>
</ul>
<pre>check_exrep=cmd /c echo scripts\exrep.ps1 | powershell.exe -command -</pre>
<ul>
<li>When you have made the above changes, save the file and then restart the NSClient++ Service from the Windows Services manager </li>
</ul>
</li>
</ul>
<h3>Configuring the Exchange Service Monitoring within Nagios</h3>
<p>We are now done with the configuration on our Exchange Server, and now need to turn our attentions back to the Ubuntu Nagios Server. In part 2 of this series I explained how you can add Service Monitoring to a Windows Service – this made use of two files:</p>
<ul>
<li>Windows.cfg </li>
<li>Commands.cfg </li>
</ul>
<p>Each of which you can download via Filezilla to your local machine (<em><strong>into</strong></em> <em><strong>the Nagios_Configuration_Files directory which we setup in part 2</strong></em>).</p>
<p>To execute the Powershell script file which we placed on our Exchange server we need to modify the above files (<em>using Notepad++ as described in the previous part</em>).</p>
<p>In the <strong><em>windows.cfg</em></strong> file add the following Service definition:</p>
<pre>define service{
    use            generic-service
    host_name        prod-ex2010-01.prepad.local ;This should be changed to the host definition of your Exchange Server
    service_description   Exchange Database Status
    check_command    check_exrep
    }</pre>
<p>When you have made the above modifications save them in Notepad++ (<em>but don’t upload the file to the Nagios server just yet!</em>)</p>
<p>Open the “<strong><em>Commands.cfg</em></strong>” file in Notepad++ and ensure that the following lines are present within the file – if they are not you should add them:</p>
<pre># 'check_nrpe' command definition
define command {
    command_name check_nrpe
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 180 -c $ARG1$
}</pre>
<p>Then add the following command definition:</p>
<pre>define command{
    command_name    check_exrep
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 120 -c check_exrep
    }</pre>
<p>When you have added the above, you should save the file, and then using Filezilla upload the files to your Ubuntu Server to the “<strong><em>/usr/local/nagios/etc/objects directory</em></strong>”.</p>
<p>When you have done the above, restart the Nagios Server on the Ubuntu host from your PuTTY session via the following command for the changes to take effect:</p>
<pre>/etc/init.d/nagios restart</pre>
<p>When the above changes have been made you should see the following within the Nagios Web interface:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="NagiosCore022" border="0" alt="NagiosCore022" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore022.jpg" width="560" height="168" /></p>
<p>A clearer view looks like the following:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="NagiosCore023" border="0" alt="NagiosCore023" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore023.jpg" width="655" height="250" /></p>
<h2>In the next part</h2>
<p>In the next part of the series I would like to cover some custom Exchange 2010 monitoring scripts that make use of the NRPE interface which will give you some ideas on how you can develop an enriching monitoring environment.</p>
<div class="shr-publisher-1046"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Finstalling-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring%2F' data-shr_title='Installing+Nagios+on+Ubuntu+Server+11.10+then+Monitoring+Windows+and+Exchange+Servers%26ndash%3BPart+3%26ndash%3BSetting+up+basic+Exchange+2010+Monitoring%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-3setting-up-basic-exchange-2010-monitoring/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 Boot Camp&#8211;with Paul Cunningham&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/exchange-2010-boot-campwith-paul-cunningham/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exchange-2010-boot-campwith-paul-cunningham</link>
		<comments>http://www.telnetport25.com/2012/01/exchange-2010-boot-campwith-paul-cunningham/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 21:48:19 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 Boot Camp]]></category>
		<category><![CDATA[Exchange Server Pro]]></category>
		<category><![CDATA[ExchangeServerPro.com]]></category>
		<category><![CDATA[Paul Cunningham]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1040</guid>
		<description><![CDATA[Fellow Blogger and Exchange expert Paul Cunningham is currently canvassing for attendees for a FREE online Exchange 2010 boot camp. Having attended one of Paul’s sessions online I can highly recommend people sign up and attend &#8211; as Paul’s efforts are exceptionally well structured and informative. Any readers of my blog whom would like to [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Fellow Blogger and Exchange expert Paul Cunningham is currently <a href="http://exchangeserverpro.com/register-interest-exchange-2010-boot-camp" target="_blank">canvassing for attendees for a FREE online Exchange 2010 boot camp</a>. Having attended one of Paul’s sessions online I can highly recommend people sign up and attend &#8211; as Paul’s efforts are exceptionally well structured and informative. Any readers of my blog whom would like to have a highly informative experience from an exceptionally gifted Exchange professional – please sign up!</p>
<div class="shr-publisher-1040"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fexchange-2010-boot-campwith-paul-cunningham%2F' data-shr_title='Exchange+2010+Boot+Camp%26ndash%3Bwith+Paul+Cunningham%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/exchange-2010-boot-campwith-paul-cunningham/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&#8211;Part 2&#8211;Setting up basic Windows Server Monitoring&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring</link>
		<comments>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 21:01:24 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux with Exchange]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Ubuntu Server 11.11]]></category>
		<category><![CDATA[Windows Servers]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1031</guid>
		<description><![CDATA[In the first part of this series I covered how you can get a working instance of Nagios Core on a Ubuntu VMWare server within your environment. What I would like to cover in this part is how you can begin to perform some basic monitoring on a Windows Server within your infrastructure using the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">In the first part of this series</a> I covered how you can get a working instance of Nagios Core on a Ubuntu VMWare server within your environment. What I would like to cover in this part is how you can begin to perform some basic monitoring on a Windows Server within your infrastructure using the Nagios Core Server that you configured in <a href="http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/" target="_blank">Part 1</a>.</p>
<h2>Installing the Monitoring Client on Windows Server that you wish to manage</h2>
<p>Log onto the Windows Server that you wish to manage. You will need to download the NSClient++ from the following location: <a href="http://nsclient.org/nscp/downloads" title="http://nsclient.org/nscp/downloads">http://nsclient.org/nscp/downloads</a> &ndash; you will need to select the correct architecture which fits your client system (<em>Win32 or x64</em>) &ndash; and I recommend that you download the MSI file rather than the zip (<em>mainly for simplicity and it is easier to build an automated deployment around</em>).</p>
<p>When you have the MSI file on your server you will need to perform the following steps:</p>
<p>Double click on the &ldquo;<strong><em>NSClient++-0.3.9-Win32.msi</em></strong>&rdquo; file which will then present you with the installer welcome screen (<strong><em>below</em></strong>) &ndash; click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button</p>
<p><img alt="NagiosCore004" border="0" height="383" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore004.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore004" width="497" /></p>
<p>On the EULA screen, tick the &ldquo;<strong><em>I accept the terms of the license Agreement</em></strong>&rdquo; option and then click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button &ndash; see below:</p>
<p><img alt="NagiosCore005" border="0" height="384" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore005.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore005" width="499" /></p>
<p>Next you will be asked to choose the components that you would like to install &#8211; these include the actual program binaries, configuring a Windows Firewall exception should you wish, registering the program to run as a service (<strong><em>recommended</em></strong>) and a number of functional plugins (<em>which enable a number of checks on your system and the ability to communicate with a number of monitoring systems which support various listeners include Nagios</em>).</p>
<p>For the purposes of this article I have chosen to install all components (<strong><em>as per the screenshot below</em></strong>) &ndash; when you are happy with your own choices click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button:</p>
<p><img alt="NagiosCore006" border="0" height="383" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore006.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore006" width="500" /></p>
<p>As this is a new install the next screen is not really that relevant, however suffice to say that if you have a pre-existing configuration file in the installation location (<em>for example during a client upgrade</em>) &ndash; you will be prompted if you would like to use the existing file or create a new one. In our case we can just click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button:</p>
<p><img alt="NagiosCore007" border="0" height="383" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore007.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore007" width="497" /></p>
<p>The next screen asks you to complete some information about you Nagios server (<em>e.g under the &ldquo;<strong>Allowed Hosts</strong>&rdquo; section &ndash; within the IP address text box &ndash; you can provide a number of hosts that the agent can report to &ndash; in our case this will be the IP address of your Nagios Server</em>).</p>
<p>In the NSClient Password section you should provide a password to secure (<strong><em>remember not encrypt</em></strong>) communications&nbsp; between the client server and the Nagios server. This is used by the &ldquo;<strong><em>check_nt()</em></strong>&rdquo; function (<em>more on this later</em>) for Service Calls. In the &ldquo;<strong><em>Modules to load</em></strong>&rdquo; section I have ticked all options &ndash; however you should ensure that the &ldquo;<strong><em>Enable nsclient server (check_nt)</em></strong>&rdquo; is enabled and then click on the &ldquo;<strong><em>Next</em></strong>&rdquo; button &ndash; see below:</p>
<p><img alt="NagiosCore008" border="0" height="384" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore008.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore008" width="495" /></p>
<p>You will now be ready to install the NSClient on the server that you wish to monitor &ndash; click on the &ldquo;<strong><em>Install</em></strong>&rdquo; button &ndash; see below:</p>
<p><img alt="NagiosCore009" border="0" height="386" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore009.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore009" width="498" /></p>
<p>When setup has completed you will be asked if you wish to Start the NSClient Service (<em>ensure that the Start Service is ticked</em>) &ndash; you are of course welcome and encouraged to donate to the project as it does provide a unique service to folks like us &ndash; however when happy click on the &ldquo;<strong><em>Finish</em></strong>&rdquo; button:</p>
<p><img alt="NagiosCore010" border="0" height="383" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore010.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore010" width="497" /></p>
<h2>Configuring Nagios to Monitor your Windows Server</h2>
<p>Now this is where things get a more little involved as in order to setup the Windows monitoring configuration we need to make a few changes to some of the Nagios configurations files which are located on the Ubuntu server that we created in <a href="installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core" target="_blank">part 1</a>.</p>
<p>Firstly I recommend that you setup sFTP to connect to the Linux file system on your Nagios Server (<a href="installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core" target="_blank">remember the OpenSSH server that we installed in part 1?</a>). In order to do this, you need an FTP client that supports sFTP connections &ndash; you may already have a weapon of choice in this area &ndash; but if you don&rsquo;t, I personally recommend <a href="http://filezilla-project.org/download.php?type=client" target="_blank">Filezilla</a> (<em>as it is free and also what I have been using for a number of years &ndash; therefore this article will focus on using Filezilla from this point onwards &ndash; so you might need to substitute some steps to reflect your own client</em>).</p>
<p>Secondly, as we will be editing the Nagios Configuration files within a Windows environment (<strong><em>don&rsquo;t laugh Linux peeps</em></strong>)&ndash; you will need a text editor that supports both the Unix and ANSI formats &ndash; one suggestion that I have is <a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a> which, again I have been using for a number of years and is pretty cool.</p>
<h2>Setting up Filezilla to connect to your Nagios Server</h2>
<p>Firstly you will need to download and install Filezilla onto your local machine. When you have installed the FTP client &#8211; launch it and then from the &ldquo;<strong><em>File</em></strong>&rdquo; menu select &ldquo;<strong><em>Site Manager</em></strong>&rdquo; &ndash; see below:</p>
<p><img alt="NagiosCore014" border="0" height="266" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore014.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore014" width="374" /></p>
<p>Within the Site Manager click on the &ldquo;<em><strong>New Site</strong></em>&rdquo; button and then on the &ldquo;<strong><em>General</em></strong>&rdquo; tab complete the required information as per your configuration &ndash; you should ensure that the &ldquo;<strong><em>Protocol</em></strong>&rdquo; option is set to &ldquo;<strong><em>SFTP &ndash; SSH File Transfer Protocol</em></strong>&rdquo;.</p>
<p>You should also ensure that the &ldquo;<strong><em>Logon Type</em></strong>&rdquo; is set to &ldquo;<strong><em>Normal</em></strong>&rdquo; and that you provide the username and password for your Ubuntu administrative user &ndash; see below:</p>
<p><img alt="NagiosCore015" border="0" height="428" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore015.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore015" width="510" /></p>
<p>Before you connect to your Ubuntu server I recommend that on your local Windows machine you create a folder called &ldquo;<strong><em>Nagios_Configuration_Files</em></strong>&rdquo; &ndash; this will naturally be used to store local copies of the Nagios configuration settings &ndash; which you can edit locally using Notepad++ and then upload them back to your server.</p>
<h2>Key Nagios Configuration Files</h2>
<p>In order to setup basic Windows monitoring from your Nagios server there are three principle configuration files that you will be working with &ndash; these are defined with the changes that you need to make below:</p>
<ul>
<li>nagios.cfg &ndash; located in <strong><em>/usr/local/nagios/etc</em></strong> <br />
		This is the main configuration file for the Nagios server &ndash; there is only one change that needs to be made within this file, and once that has been made it is recommended that you make no further modifications (<em>unless of course you have been doing some reading up on the product and want to do something fancy</em>). </p>
<p>		Using Filezilla (<em>sic. to connect to your server</em>) &ndash; navigate to the path that is shown in <strong><em>bold</em></strong> above and download the <strong><u>nagios.cfg</u></strong> file to the local &ldquo;<strong><em>Nagios_Configuration_Files</em></strong>&rdquo; location that you created above &ndash; see below</li>
</ul>
<p><img alt="NagiosCore016" border="0" height="504" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore016.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore016" width="630" /></p>
<p>When you have downloaded the file &ndash; open it using Notepad++ and then uncomment (e.g. <em>remove the #</em>) the following entry in the file:</p>
<pre>cfg_file=/usr/local/nagios/etc/objects/windows.cfg</pre>
<p>This tells Nagios that we will be monitoring Windows hosts, and therefore the &ldquo;<em><strong>windows.cfg</strong></em>&rdquo; and services files should be queried.</p>
<p>When you have done the above, save the file in Notepad++ and then via Filezilla upload the file back to the /usr/local/nagios/etc directory.</p>
<ul>
<li>commands.cfg &ndash; located in <strong><em>/usr/local/nagios/etc/objects</em></strong>
<p>		This configuration file tells Nagios what monitoring commands it should expect to have executed against it. <br />
		Again this file should only be edited when required and there is only one change required within the file for the initial setup. </p>
<p>		As before with the Nagios.cfg file, download the commands.cfg to your local &ldquo;<strong><em>Nagios_Configuration_Files</em></strong>&rdquo; directory and then open it within Notepad++ </p>
<p>		Look for the following line:</li>
</ul>
<pre># &#39;check_nt&#39; command definition</pre>
<p>You will see the following entry within the &lsquo;check_nt&rsquo; define command block:</p>
<pre>command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$</pre>
<p>You need to add the &ndash;s switch with the password that you configured for the NSClient (<em>in the first bit of this article</em>) on your Windows Server &ndash; therefore the entry within the commands.cfg file should look like the following:</p>
<pre>command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s password -v $ARG1$ $ARG2$</pre>
<p>When you have made the changes to the file, save them in Notepad++ and then using Filezilla upload them back to the <strong><em>/usr/local/nagios/etc/objects</em></strong> to your Nagios Server.</p>
<ul>
<li>windows.cfg &ndash; located in /usr/local/nagios/etc/objects
<p>		It is within this configuration file that you will define all of your Windows hosts and the Services that you wish to monitor. As before download this file to your local &ldquo;<strong><em>Nagios_Configuration_Files</em></strong>&rdquo; directory. </p>
<p>		When you open the file in Notepad++ you will be presented with a number of entries which represent a sample configuration &ndash; you can remove everything below the HOST GROUP DEFINITIONS (<strong><u>NOT NOT REMOVE THE HOST GROUP DEFINITIONS SECTION!!!!</u></strong>) and replace them with the following configuration (<em>I have included some comments inline below which describe what each configuration entry does</em>):</li>
</ul>
<pre># HOST DEFINITIONS

define host{
    use            windows-server    ; Inherit default values from a template
    host_name    prod-dc-01.prepad.local ; This should be the FQDN of the server that you wish to monitor
    alias        Prep AD Domain Controller Number 1    ; This should be a descriptive name for the monitored server
    address        172.31.253.138    ; IP address of the monitored host
}

# SERVICE DEFINITIONS

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local ; Replace this entry to reflect the host name in the define host section
    service_description    NSClient++ Version
    check_command        check_nt!CLIENTVERSION
    }

# Create a service for monitoring the uptime of the server
# Change the host_name to match the name of the host you defined above

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local
    service_description    Uptime
    check_command        check_nt!UPTIME
    }

# Create a service for monitoring CPU load
# Change the host_name to match the name of the host you defined above

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local
    service_description    CPU Load
    check_command        check_nt!CPULOAD!-l 5,80,90
    }

# Create a service for monitoring memory usage
# Change the host_name to match the name of the host you defined above

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local
    service_description    Memory Usage
    check_command        check_nt!MEMUSE!-w 80 -c 90
    }

# Create a service for monitoring C:\ disk usage
# Change the host_name to match the name of the host you defined above

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local
    service_description    C:\ Drive Space
    check_command        check_nt!USEDDISKSPACE!-l c -w 80 -c 90
    }

# Create a service for monitoring the Netlogon service
# Change the host_name to match the name of the host you defined above

define service{
    use            generic-service
    host_name        prod-dc-01.prepad.local
    service_description    Netlogon Service
    check_command        check_nt!PROCSTATE!-d SHOWALL -l lsass.exe
    }</pre>
<p>When you are happy with the file, save it within Notepad++ and then upload it to your Nagios Server (ensure that the directory is<em><strong> /usr/local/nagios/etc/objects</strong></em>).</p>
<h2>Committing the Configuration to your Nagios Server</h2>
<p>Each time you modify any Nagios configuration file you need to &ldquo;<strong><em>commit</em></strong>&rdquo; the settings to the server so that they will take effect. In order to do this open up a PuTTY session to your server, logon and then type in the following command:</p>
<pre>sudo /etc/init.d/nagios restart</pre>
<p>This is demonstrated below:</p>
<p><img alt="NagiosCore017" border="0" height="250" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore017.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore017" width="503" /></p>
<p>After about 90 seconds you should see the following within the Nagios web console:</p>
<p><img alt="NagiosCore018" border="0" height="277" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore018.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore018" width="550" /> </p>
<p>	If you drill down into your new host &ndash; you should see the following:</p>
<p><img alt="NagiosCore019" border="0" height="215" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore019.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="NagiosCore019" width="652" /></p>
<h2>Sample Configuration Files</h2>
<p>To accompany this series I have provided my own Nagios configuration files direct from my lab environment for download below. <br />
	Please remember that these are specific to my own installation and should only be used for reference (<em>should you get stuck</em>) &ndash; these are also based upon the default file set that is provided by Nagios &ndash; and therefore the intellectual rights belong to the developers of Nagios.</p>
<p><img src="http://www.telnetport25.com/images/zipicon.jpg" /> [ <a href="http://www.telnetport25.com/downloads/SupportFiles/nagios/Nagios_Configuration_Files.zip" target="_blank">Nagios Sample Windows Monitoring Files &ndash; 15KB</a> ]</p>
<h2>In the next part</h2>
<p>In the next part of this series I will show you how you can use Nagios to monitor your Exchange Servers. <br />
	If you should have any questions about this article please post them in the comments section and I will get back to you.</p>
<div class="shr-publisher-1031"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Finstalling-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring%2F' data-shr_title='Installing+Nagios+on+Ubuntu+Server+11.10+then+Monitoring+Windows+and+Exchange+Servers%26ndash%3BPart+2%26ndash%3BSetting+up+basic+Windows+Server+Monitoring%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-2setting-up-basic-windows-server-monitoring/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Off Topic&#8211;Staying Alive&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/off-topicstaying-alive/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=off-topicstaying-alive</link>
		<comments>http://www.telnetport25.com/2012/01/off-topicstaying-alive/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 10:29:14 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[Cardiopulmonary resuscitation]]></category>
		<category><![CDATA[CPR]]></category>
		<category><![CDATA[Vinne Jones]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1011</guid>
		<description><![CDATA[Very off topic here but it is something that I think might be of interest to some folks. There is a informational commercial on TV in the U.K at the moment for the British Heart Foundation which although quite amusing, delivers a very important message. In essence, the advert stars former Wimbledon Football club “Hard [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Very off topic here but it is something that I think might be of interest to some folks.</p>
<p>There is a informational commercial on TV in the U.K at the moment for the <a href="http://www.bhf.org.uk/" target="_blank">British Heart Foundation</a> which although quite amusing, delivers a <strong><em>very</em></strong> important message.</p>
<p>In essence, the advert stars former Wimbledon Football club “Hard Man” turned actor &#8211; <a href="http://en.wikipedia.org/wiki/Vinnie_Jones" target="_blank">Vinnie Jones</a> (for my American and other readers he has been in films such as “<a href="http://www.imdb.com/title/tt0187078/" target="_blank">Gone in Sixty Seconds</a>” and “<a href="http://www.imdb.com/title/tt0376994/" target="_blank">X-MEN The Last Stand</a>”) – performing CPR (<em>Cardiopulmonary Resuscitation</em>) on someone to the tune of the <a href="http://en.wikipedia.org/wiki/Bee_Gees" target="_blank">Bee-Gees</a> hit “<a href="http://www.youtube.com/watch?v=I_izvAbhExY" target="_blank">Stayin Alive</a>”.</p>
<p>Having been a First Aider, I know the importance of knowing CPR – and the value of educating as many people as possible in how to perform it ~ as it <strong><em>really</em></strong> does save lives.</p>
<p>The advert itself is really well put together, and I have enclosed a link to it below.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1d5975ac-e964-4e64-bc98-3c60063772b1" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/ILxjxfB4zNk?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/ILxjxfB4zNk?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
</div>
<div class="shr-publisher-1011"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Foff-topicstaying-alive%2F' data-shr_title='Off+Topic%26ndash%3BStaying+Alive%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/off-topicstaying-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Nagios on Ubuntu Server 11.10 then Monitoring Windows and Exchange Servers&#8211;Part 1&#8211;Configuring Ubuntu for the Installation of Nagios Core&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core</link>
		<comments>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 13:48:00 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Monitoring Exchange]]></category>
		<category><![CDATA[Nagios Core]]></category>
		<category><![CDATA[Ubuntu Server 11.11]]></category>
		<category><![CDATA[Windows Servers]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=1003</guid>
		<description><![CDATA[[ NOTE: ] This part has been updated to reflect some suggestions from readers of the site. Sections that have changed are: Installing Nagios Core – added the sed commands before the “Make” process, this fixes an issue with the Make file which prevents the Nagios home page from being displayed, as well as some [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><blockquote><p><strong>[ NOTE: ]</strong> This part has been updated to reflect some suggestions from readers of the site. Sections that have changed are:      <br />Installing Nagios Core – added the sed commands before the “<strong><em>Make</em></strong>” process, this fixes an issue with the Make file which prevents the Nagios home page from being displayed, as well as some issues with the RSS feed – many thanks to Michael for pointing this out, and <a href="http://www.krenger.ch/blog/nagios-3-3-1-make-install-error-1/" target="_blank">Simon Krenger</a> for the actual fix.</p>
<p>I have also changed the Verifying Nagios Permissions section to reflect Michael’s suggestions – this fixes an issue when trying to schedule a service recheck which is related to permissions on the “<strong><em>nagios.cmd</em></strong>” file.</p>
<p>I have also removed the suggestion for an FTP server within the configuration – in essence you should be using SSH transfers via FileZilla.</p>
</blockquote>
<p>Every now and then I like to ramble off and do something with a technology that I would not normally blog about, which also I am by no means an expert in &#8211; as it is a learning experience and can be fun!.</p>
<p>Recently I have been looking at monitoring solutions mainly in the context of a new role that I have been appointed to, but also because I have not focussed on any real form of monitoring throughout the history of this site and I thought that it would be good to share some of my experiences.</p>
<p>I have been looking at SCOM (<em>and I will get around to posting a little tip that I discovered recently during the installation of Operations Manager</em>) as well as a few other products (<em>some good, some bad</em>). However what I would like to focus my next few posts upon is <a href="http://www.nagios.org/" target="_blank">Nagios Core</a>.</p>
<p>For those whom don’t know; Nagios Core is a popular monitoring system based around Linux and PHP which in its “<strong><em>Core Edition</em></strong>” is available for free. With Nagios you can monitor a large number of facets of your network (<em>including but not limited to Servers, Switches, Routers, Firewalls</em>) and their respective services. You can also do some basic (<em>in the Core release</em>) business intelligence and performance / capacity management functions.</p>
<p>There is a huge community of plug-ins, skins and alternative interfaces for Nagios which allow for some pretty impressive expansion of the product and pretty much has everything for your monitoring needs.</p>
<p>Before I get into the meat of the article I should point out that I am not a Linux or Nagios expert (<em>more a dabbler to be honest</em>) – but over the years I have played with Ubuntu in the <a href="http://www.telnetport25.com/2009/02/configuring-ubuntu-server-as-a-firewall-and-reverse-proxy-for-owa-2007%e2%80%a6/" target="_blank">context of a reverse proxy for OWA</a> and looked at Nagios as a monitoring tool a few times ~ but never really have used them in anger, therefore with that considered there are probably some processes that I will describe in this series that could be done better or more efficiently.</p>
<p>It is probably also worth pointing out, that there are a number of articles on the Internet which explain how to install Nagios core, but there are not many (<em>or none that I could find</em>) that give you an end-to-end scenario of Server installation to Server client and Exchange monitoring – so I thought that I would put one together.</p>
<p>As mentioned I have decided to use Nagios on Ubuntu (<em>as it is the Linux Distro that I am the most familiar with</em>), but I will not be explaining the actual Ubuntu install. What I will say is that I have installed Ubuntu Server into my VMWare workstation environment using the “<strong><em>Easy Setup</em></strong>” function – which automated the entire process, and all I really needed to do was create a new Virtual Machine and point the <a href="http://www.ubuntu.com/download/server/download" target="_blank">Ubuntu ISO</a> at it.</p>
<h1>Prerequisite Steps</h1>
<h2>Updating you Ubuntu Installation to the latest version</h2>
<blockquote><p><strong><u>NOTE:</u></strong> The following steps all assume that you have a working, vanilla version of Ubuntu Server in your environment, if you would like to know how you can set install Ubuntu 11.10 within VMWare Workstation 8 – please see my video overview located <a href="http://www.youtube.com/watch?v=bieM-FNsERs&amp;list=UUAg3-jAwasJd--MoClqngdw&amp;index=1&amp;feature=plcp" target="_blank">here</a></p>
</blockquote>
<p>From the Ubuntu Console type in the following commands (<em>every command should then be followed by pressing <strong>&lt;Enter&gt;</strong></em>):</p>
<pre>sudo apt-get update</pre>
<p>Which will give you some output similar to the following (<em>only there will be much more of it</em>):</p>
<pre>Ign <a href="http://security.ubuntu.com">http://security.ubuntu.com</a> oneiric-security InRelease
Ign <a href="http://us.archive.ubuntu.com">http://us.archive.ubuntu.com</a> oneiric InRelease
Ign <a href="http://us.archive.ubuntu.com">http://us.archive.ubuntu.com</a> oneiric-updates InRelease
Ign <a href="http://us.archive.ubuntu.com">http://us.archive.ubuntu.com</a> oneiric-backports InRelease
Hit <a href="http://security.ubuntu.com">http://security.ubuntu.com</a> oneiric-security Release.gpg
Hit <a href="http://security.ubuntu.com">http://security.ubuntu.com</a> oneiric-security Release</pre>
<p>Then type the following command;</p>
<pre>sudo apt-get dist-upgrade</pre>
<p>This will then begin the process of updating your Ubuntu Server components to the latest versions.</p>
<h2>Installing OpenSSH</h2>
<p>Whereas you do not need to install OpenSSH on your Ubuntu server, it is a very useful tool to have in place later on when you are administering the system and making modifications to various configuration files.</p>
<p>OpenSSH provides an encrypted remote administration environment for telnet and FTP applications (<em>like PuTTY and Filezilla ~ more on these later</em>).</p>
<p>Whereas you can administer your server from the console (<em>or if like me you are working in a virtual environment the VMWare tools</em>) it is far easier to install OpenSSH so you can perform tasks on your local Windows machine (<em>I can already hear many Linux aficionados scoffing at the prospect </em><img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.telnetport25.com/wp-content/uploads/2012/01/wlEmoticon-smile1.png" />).</p>
<p>In order to install OpenSSH onto your Ubuntu box use following command on the console:</p>
<pre>sudo apt-get install openssh-server</pre>
<h2>Configuring your Ubuntu Server with a Static IP address and configuring DNS</h2>
<p>Naturally your Nagios monitoring server will need a static IP address, rather than one that is assigned from DHCP – therefore the following steps can be used to assign a static IP.</p>
<p>From the Ubuntu console type in the following command:</p>
<pre>sudo nano /etc/network/interfaces</pre>
<p>This will open up a console based text editor with the interfaces IP configuration (<em>some people may prefer to use VI – but I have to admit I am a wimp and cannot get on with it!</em>).</p>
<p>You will initially be presented something that looks like the following configuration:</p>
<pre>auto eth0
iface eth0 inet dhcp</pre>
<p>You will need to change the above to reflect the settings within your environment – for example mine looks like this:</p>
<pre>auto eth0
iface eth0 inet static
        address 172.31.253.159
        netmask 255.255.255.0
        network 172.31.253.0
        broadcast 172.31.253.255
        gateway 172.31.253.129</pre>
<p>When you have finished editing the file in Nano press the <strong><em>CTRL-O</em></strong> key and then <strong><em>&lt;Enter&gt;</em></strong> to save the file, and then press <strong><em>CTRL-X</em></strong> to exit and return to the console.</p>
<p>You should then configure the DNS Servers for your environment – from the console type in the following command:</p>
<pre>sudo nano /etc/resolv.conf</pre>
<p>This command will present you with a file that looks like the following:</p>
<pre>domain telnetport25.com
search telnetport25.com
nameserver 172.31.253.138</pre>
<p>You should change all of the values within the configuration file to reflect those within your own environment, when done you will need to press <strong><em>CTRL-O</em></strong> and then <strong><em>&lt;ENTER&gt;</em></strong> and then <strong><em>CTRL-X </em></strong>to exit.</p>
<p>Now that you have configured both a static IP address and your nameserver configurations you will need to restart the networking Daemons for the settings to take effect. This is done by entering in the following command to the console:</p>
<pre>sudo /etc/init.d/networking restart</pre>
<h2>Setting up PuTTy to administer your server</h2>
<p>You are now in a position to administer the Ubuntu server with a remote tool such as PuTTy. I say PuTTy as it is still one of the most versatile Terminal tools on the market that is also free.</p>
<p>You can download PuTTy from the following location: <a title="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</a></p>
<p>PuTTY is very easy to use &#8211; after you have downloaded it – double click on the executable and from the Session screen provide the IP address of your server and ensure that the SSH radio button is selected – see below:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NagiosCore001" border="0" alt="NagiosCore001" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore001.jpg" width="466" height="444" /></p>
<p>When you are done click on the “<strong><em>Open</em></strong>” button – you might be presented with a Certificate Error screen. This is generated because the OpenSSH server will have generated a self signed SSL certificate which naturally will not be trusted by the local PuTTY client. You will need to accept and trust the certificate.</p>
<p>When you have done that you will be presented with a Terminal window that looks like the following:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NagiosCore002" border="0" alt="NagiosCore002" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore002.jpg" width="672" height="419" /></p>
<p>You can now remotely administer your server from PuTTY.</p>
<h2>Installing a Compiler on your Server</h2>
<p>Nagios and its associated components is supplied in a pre-compiled form which is compressed and tar-balled (tag.gz) therefore before you can install it you will need to compile it using a compiler. Ubuntu server does not come with a built in compiler, but there are a number in the Linux community which are free to download and use.</p>
<p>For the purposes of this article we will be using “<strong><em>Build-Essential</em></strong>” which can be installed onto your server using the following command line from your PuTTY session:</p>
<pre>sudo apt-get install build-essential</pre>
<p>Upon executing this command you will be asked to confirm the installation – ensure that you select “<strong><em>Y</em></strong>”</p>
<h2>Installing the GD Libraries</h2>
<p>The Ubuntu (<em>or Debian</em>) GD libraries are in essence binaries that allow for applications to dynamically draw images. These are most likely used by Nagios’ reporting tools.</p>
<p>To install the GD libraries type in the following command:</p>
<pre>sudo apt-get install libgd2-xpm-dev</pre>
<h2>Installing Apache and PHP 5</h2>
<p>Apache should really need no introduction with it still being one of the most popular web server platforms on the planet. Apache is naturally required to support the web interface of Nagios, and PHP5 is the platform language which does all of the cool stuff in the user front end.</p>
<p>To install Apache enter in the following command into the PuTTY terminal window:</p>
<pre>sudo apt-get install apache2</pre>
<p>When Apache has installed enter in the following commands to install PHP5:</p>
<pre>sudo apt-get install php5-common php5 libapache2-mod-php5</pre>
<h1>Installing Nagios Core</h1>
<h2>Creating the Nagios service user and group for commands</h2>
<p>Nagios needs a service user and a group which has the relevant permissions to run commands within the monitoring system. The need to be created before you being the fill Nagios install.</p>
<p>In order to create them type in the following commands into your Terminal window:</p>
<pre>sudo useradd -m nagios

sudo passwd nagios – you will be prompted for a password for the Nagios Service user here

sudo groupadd nagcmd

sudo usermod -a -G nagcmd nagios

sudo usermod -a -G nagcmd www-data</pre>
<h2>Download the Nagios Core and Plug in files</h2>
<p>We are now at the stage where we can download the Nagios Core and Plugins source to your Server.</p>
<p>Within the Terminal window type in the following commands:</p>
<pre>sudo –s

mkdir downloads

cd downloads

wget <a title="http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz" href="http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz">http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.3.1.tar.gz</a> (<em>this is the latest stable release</em>)

wget <a title="http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz" href="http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz">http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz</a>

tar –zxvf nagios-3.3.1.tar.gz

tar –zxvf nagios-plugins-1.4.15.tar.gz</pre>
<h2>Installing Nagios Core</h2>
<p>Now that you have downloaded the relevant files to your server we can now begin the installation process, from the Terminal Windows type in the following commands (<em>please ensure that you are in the “<strong>downloads</strong>” folder that you created in the previous step</em>):</p>
<pre>

cd nagios

./configure --with-command-group=nagcmd

sed -i 's:for file in includes/rss/\*;:for file in includes/rss/\*.\*;:g' ./html/Makefile

sed -i 's:for file in includes/rss/extlib/\*;:for file in includes/rss/extlib/\*.\*;:g' ./html/Makefile

make all

make install

make install-init

make install-config

make install-commandmode

make install-webconf
</pre>
<p>We will now create the administration user for the Nagios Core System (<em>this is the account that will be used to log into the web interface</em>)</p>
<pre>mkdir /usr/local/nagios/etc

htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin</pre>
<p>You will then be prompted for a password for the admin user.</p>
<h2>Installing the Nagios plugins</h2>
<p>The Nagios plugins provide around 50 pre-configured monitoring functions and services, without them your Nagios installation is not going to do very much so it is important that they are compiled and integrated into the environment.</p>
<p>In order to install them from the terminal window, type in the following commands:</p>
<p>Navigate to the downloads folder (if you have been following the sequence this could be <strong>cd ..</strong> and then <strong>cd nagios-plugins-1.4.15</strong>).</p>
<pre>./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

make all

make install</pre>
<h2>Creating a Symbolic Link for the Nagios Service</h2>
<p>We now have an almost functional Nagios system, however before we can start the system up, we need to create a symbolic link to the Nagios service so that it can be started with the O/S automatically.</p>
<p>In order to do this type the following command into the Terminal window:</p>
<pre>ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios</pre>
<h2>Verify permissions and file system</h2>
<p>During the configuration of the Nagios environments for this article I have encountered some small problems with file system permissions and a folder not being created by the installation process. Therefore I have added in this step which cleans up the permissions on the Nagios folders and ensures the correct directories are in place.</p>
<p>From the terminal window type in the following commands</p>
<pre>

chown nagios.nagcmd /usr/local/nagios/var/rw

&#160;

chmod g+rwx /usr/local/nagios/var/rw

&#160;

chmod g+s /usr/local/nagios/var/rw

&#160;

/etc/init.d/nagios restart
</pre>
<h2>Verifying the installation</h2>
<p>Just before we start the Nagios server up, as a penultimate step we should now verify the configuration – this is done by executing the following command from the Terminal window:</p>
<pre>/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg</pre>
<p>Which should result in the following output:</p>
<pre>Nagios Core 3.3.1
Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 07-25-2011
License: GPL

Website: <a href="http://www.nagios.org">http://www.nagios.org</a>
Reading configuration data...
   Read main config file okay...
Processing object config file '/usr/local/nagios/etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/contacts.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/templates.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/localhost.cfg'...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking services...
    Checked 8 services.
Checking hosts...
    Checked 1 hosts.
Checking host groups...
    Checked 1 host groups.
Checking service groups...
    Checked 0 service groups.
Checking contacts...
    Checked 1 contacts.
Checking contact groups...
    Checked 1 contact groups.
Checking service escalations...
    Checked 0 service escalations.
Checking service dependencies...
    Checked 0 service dependencies.
Checking host escalations...
    Checked 0 host escalations.
Checking host dependencies...
    Checked 0 host dependencies.
Checking commands...
    Checked 24 commands.
Checking time periods...
    Checked 5 time periods.
Checking for circular paths between hosts...
Checking for circular host and service dependencies...
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check</pre>
<h2>Starting up Nagios and Accessing the Management Site</h2>
<p>We can now start Nagios Core – therefore from the Terminal Window type in the following command:</p>
<pre>/etc/init.d/nagios start</pre>
<p>When the service has completed starting up – you can open a Web Browser to you the Nagios Core installation via:</p>
<p><strong><em>http://&lt;addressOFyourServer&gt;/nagios</em></strong></p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="NagiosCore003" border="0" alt="NagiosCore003" src="http://www.telnetport25.com/wp-content/uploads/2012/01/NagiosCore003.jpg" width="620" height="497" /></p>
<h2>In the next part</h2>
<p>In the next part of this series I will go through how you can configure some basic monitoring of some Windows Servers within your infrastructure.</p>
<div class="shr-publisher-1003"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Finstalling-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core%2F' data-shr_title='Installing+Nagios+on+Ubuntu+Server+11.10+then+Monitoring+Windows+and+Exchange+Servers%26ndash%3BPart+1%26ndash%3BConfiguring+Ubuntu+for+the+Installation+of+Nagios+Core%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/installing-nagios-on-ubuntu-server-11-10-then-monitoring-windows-and-exchange-serverspart-1configuring-ubuntu-for-the-installation-of-nagios-core/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>The mother of all heat sinks&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/the-mother-of-all-heat-sinks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-mother-of-all-heat-sinks</link>
		<comments>http://www.telnetport25.com/2012/01/the-mother-of-all-heat-sinks/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 20:17:30 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[Test Labs]]></category>
		<category><![CDATA[Antec]]></category>
		<category><![CDATA[Dark Fleet 85]]></category>
		<category><![CDATA[Intel i7]]></category>
		<category><![CDATA[Scythe Ninja 3]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=997</guid>
		<description><![CDATA[Some of you may have read my recent article about my new test lab (which I had to hastily assemble after my old one went to the great testing god in the sky). I finished the article by explaining that if there one thing that I would change about the setup, it would be the [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Some of you may have read my <a href="http://www.telnetport25.com/2011/11/the-new-test-lab-rig-is-born/" target="_blank">recent article about my new test lab</a> (<em>which I had to hastily assemble after my old one went to the great testing god in the sky</em>). I finished the article by explaining that if there one thing that I would change about the setup, it would be the (<em>crappy</em>) stock cooler that ships with the Intel i7 2600K.</p>
<p>Well over the weekend I was working on some video rendering for the <a href="http://www.youtube.com/user/telnetport25" target="_blank">telnetport25.com</a> You Tube channel, which was taking a tad too long on my home desktop PC. </p>
<p>I thought ~ “<strong><em>Heck, I have a brand new i7 rig here, I could install my video software on to it and render via that Machine – surely it will be quicker</em></strong>”.</p>
<p>I was right, technically it would be quicker – what I did not count on was that the rendering process would max out all four cores in the i7 and send their temperatures soring to over 98 degrees Celsius – the long and short of which was my server locked up on me!</p>
<p>I starting thinking that I must be crazy (<em>which most people knew already</em>), I have this great machine and cannot use it to anyway near it true potential as I was too tight to go out and buy a new Heat Sink for the CPU. </p>
<p>So, I started having a look around on the web for a suitable Cooler from my usual suspects (<strong><em>Dabs, Scan etc</em></strong>). </p>
<p>In the end I could not find anything that I was really interested in, so I popped a mail off to my local PC store (<em><strong>a place called </strong></em><a href="http://www.planet-uk.com" target="_blank"><em><strong>Planet-UK</strong></em></a><em><strong> ~ special mention chaps!</strong></em> whom were really good at recommending the following bad boy to me:    </p>
<p><a title="http://www.scythe-usa.com/product/cpu/053/scnj3000-detail.html" href="http://www.scythe-usa.com/product/cpu/053/scnj3000-detail.html">http://www.scythe-usa.com/product/cpu/053/scnj3000-detail.html</a> which they just so happened to have one left in stock.</p>
<p>So today I merrily popped off down Planet to purchase the Scythe Ninja 3 (<em>I mean how the heck could I not buy a cooler that was called “Ninja” – it would be against the law!</em>). </p>
<p>This evening I got the heat assassin home and set about removing the scummy Intel Stock cooler from my server and installing the new device and thought that I would write about my experience.</p>
<h2>Installation</h2>
<p>I have a Antec 85 Dark Fleet full tower case, which is designed to allow for the installation of Heat Sinks such as the Ninja 3 without having to remove the mother board. However, as I quickly found out this is a cruel marketing ploy – there is no sensible way to install the Ninja 3 in the Dark Fleet case without taking the motherboard out (<em>don’t try it, honestly I did and I wasted a load to time coming to the conclusion that I had wasted … well a load of time – just take the motherboard out</em>).</p>
<p>In fact, adding into the mix that I have an Asus P8 z68 pro mainboard, I also had to remove the chipset heat sinks before I could even contemplate installing this beast of a cooler onto my i7! (<em>this added on more time and sobbing</em>).</p>
<p>Given the above &#8211; I have to report that the actual installation process for the Ninja 3 was a real pain in the arse (<em>well for me it was</em>) taking about 2 hours in total (<em>mind you 1 hour and 45 minutes of it was trying to retrieve the Ninja 3 screws from various places either in the case, or that had lodged themselves into various positions on the Motherboard after I had dropped the little buggers</em>).</p>
<p>But when finally done, the finished article is very sturdy and looks amazing – see below:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_0220" border="0" alt="IMG_0220" src="http://www.telnetport25.com/wp-content/uploads/2012/01/IMG_0220.jpg" width="550" height="412" /></p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_0218" border="0" alt="IMG_0218" src="http://www.telnetport25.com/wp-content/uploads/2012/01/IMG_0218.jpg" width="550" height="412" /></p>
<h2>Performance</h2>
<p>Ok, so it looks sexy and would probably withstand a thermo-nuclear attack – but how well does it perform?   </p>
<p>Well, idle CPU temperatures on the server would be around 32 – 35 degrees per core with the standard Intel Stock cooler installed; however with the Ninja 3 these dropped to around 22 – 25.</p>
<p>But idle temperatures are of course not what I was interested in, I wanted to know how the CPU would cope under load.   </p>
<p>I decided to run the same Video rendering process that I had attempted at the weekend – and I was really very pleased with the results.</p>
<p>Each core during the rendering process topped out at about 53 degrees (<em>bearing in mind that each core hit over the Tj Max value of 98 degrees with the Stock Cooler</em>), but what excited me most was that each core never went above 40% utilisation – whereas previously each core was maxed out at 100% ~ really cool!</p>
<p>It is important to note that I have not overclocked this rig – all of the performance management is taken care of by the Asus BIOS.</p>
<h2>Summary</h2>
<p>I <strong><em>love</em></strong> this cooler. </p>
<p>Its called “Ninja”, its big and shiny, it comes with a large knob which allows you to control the fan speed and above all else – for a Air Flow based Heat Sink it really does its job well. </p>
<p>It’s the largest cooler that I have seen outside a proper server so you should really pay attention to the dimensions of both your case and the cooler itself – otherwise you might not be able to get the doors back on (<em>luckily this did not happen to me</em>).</p>
<p>It is true that it is a pain in the backside to install – but, that pales into insignificance when you see the benefits it brings to your system – so if you are in the market for a new CPU cooler, and don’t fancy that jump to water cooling just yet &#8211; give it a look! I cannot wait to point some Exchange Server madness at it <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.telnetport25.com/wp-content/uploads/2012/01/wlEmoticon-smile.png" /></p>
<div class="shr-publisher-997"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fthe-mother-of-all-heat-sinks%2F' data-shr_title='The+mother+of+all+heat+sinks%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/the-mother-of-all-heat-sinks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>December 2011 &amp; January 2012 www.telnetport25.com Newsletters</title>
		<link>http://www.telnetport25.com/2012/01/december-2011-january-2012-www-telnetport25-com-newsletters/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=december-2011-january-2012-www-telnetport25-com-newsletters</link>
		<comments>http://www.telnetport25.com/2012/01/december-2011-january-2012-www-telnetport25-com-newsletters/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 19:09:00 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[December 2011]]></category>
		<category><![CDATA[January 2012]]></category>
		<category><![CDATA[Newsletters]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=988</guid>
		<description><![CDATA[The December 2011 and January 2012 www.telnetport25.com newsletters are available for download from the following location: [ December 2011 &#38; January 2012 Newsletters ]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The December 2011 and January 2012 <a href="http://www.telnetport25.com">www.telnetport25.com</a> newsletters are available for download from the following location:</p>
<p><img alt="adobe" height="40" src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" width="40" /> [ <a href="http://www.telnetport25.com/downloads/newsletters/telnetport25NewsletterDec2011-Jan2012.pdf" target="_blank">December 2011 &amp; January 2012 Newsletters</a> ]</p>
<div class="shr-publisher-988"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fdecember-2011-january-2012-www-telnetport25-com-newsletters%2F' data-shr_title='December+2011+%26amp%3B+January+2012+www.telnetport25.com+Newsletters'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/december-2011-january-2012-www-telnetport25-com-newsletters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>November 2011 www.telnetport25.com Newsletter</title>
		<link>http://www.telnetport25.com/2012/01/november-2011-www-telnetport25-com-newsletter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=november-2011-www-telnetport25-com-newsletter</link>
		<comments>http://www.telnetport25.com/2012/01/november-2011-www-telnetport25-com-newsletter/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 19:03:42 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Newsletters]]></category>
		<category><![CDATA[November 2011]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=986</guid>
		<description><![CDATA[The November 2011 www.telnetport25.com newsletter is available for download from the following location: [ November 2011 Newsletter ]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The November 2011 <a href="http://www.telnetport25.com">www.telnetport25.com</a> newsletter is available for download from the following location:</p>
<p><img alt="adobe" height="40" src="http://www.telnetport25.com/images/stories/legimages/Icons/adobe.jpg" width="40" /> [ <a href="http://www.telnetport25.com/downloads/newsletters/telnetport25NewsletterNov2011.pdf" target="_blank">November 2011 Newsletter</a> ]</p>
<div class="shr-publisher-986"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fnovember-2011-www-telnetport25-com-newsletter%2F' data-shr_title='November+2011+www.telnetport25.com+Newsletter'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/november-2011-www-telnetport25-com-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update to the RUPS &#8211; Announcing the Exchange Update Management System (UMS)&#8230;</title>
		<link>http://www.telnetport25.com/2012/01/update-to-the-rups-announcing-the-exchange-update-management-system-ums/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-to-the-rups-announcing-the-exchange-update-management-system-ums</link>
		<comments>http://www.telnetport25.com/2012/01/update-to-the-rups-announcing-the-exchange-update-management-system-ums/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 17:29:09 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Exchange Roll-Ups]]></category>
		<category><![CDATA[Exchange Service Packs]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Database Availability Groups]]></category>
		<category><![CDATA[Exchange 2010 High Availability]]></category>
		<category><![CDATA[Exchange 2010 UMS]]></category>
		<category><![CDATA[Exchange 2010 Update Management System]]></category>
		<category><![CDATA[RUPS]]></category>
		<category><![CDATA[UMS]]></category>
		<category><![CDATA[Update Management System]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=975</guid>
		<description><![CDATA[I have to confess that it has been a long time since I wrote something that has been so popular both with readers of my site, and indeed myself. For those of you whom have not been following the the life of the “RUPS”, in November 2011 I released the RUPS tool, which was designed [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I have to confess that it has been a long time since I wrote something that has been so popular both with readers of my site, and indeed myself. For those of you whom have not been following the the life of the “<strong><em>RUPS</em></strong>”, in <a href="http://www.telnetport25.com/2011/11/apply-roll-up-to-exchange-2010-sp1-and-above-encapsulation-tool/" target="_blank">November 2011 I released the RUPS tool</a>, which was designed to make the process of applying Exchange 2010 SP 1 Roll-Ups to DAG based Mailbox servers a little more straight forward.</p>
<p>A few days later I released <a href="http://www.telnetport25.com/2011/11/update-to-the-rups-tool-apply-roll-ups-to-exchange-2010/" target="_blank">version 1.1</a> &#8211; as I had received some really good feedback on the original version which I really wanted to see implemented into the tool.</p>
<p>On the 5th December 2011 Microsoft released Exchange 2010 SP2 – therefore I decided to <a href="http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/" target="_blank">expand the functionality of the Tool (version 1.2) to work with Service Packs</a> as well as Roll-Ups. I also added some functionality that allowed for you to execute custom Powershell commands from within the environment (<em>as Service Pack 2 for Exchange 2010 had a new </em><a href="http://www.expta.com/2011/12/new-prerequisite-for-exchange-2010-sp2.html" target="_blank"><em>pre-requisite</em></a><em> – and the ability to install this from within a single Management interface made sense</em>).</p>
<p>On December 9th 2011 I had some feedback which notified me of some bug fixes (<em>therefore needed to be done straight away</em>) and a couple of feature enhancements therefore I released <a href="http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/" target="_blank">version 1.3</a>.</p>
<p>Finally, on the 13th December 2011 I received another bug report which I fixed for <a href="http://www.telnetport25.com/2011/12/rups-tool-version-1-3a/" target="_blank">version 1.3a</a>.</p>
<p>Summarising the above – in a short space of time the change log for the RUPS tool looked like the following:</p>
<ul>
<li>1.0
<ul>
<li>Initial Release </li>
</ul>
</li>
<li>1.1
<ul>
<li>Ability to disable Forefront Services </li>
<li>Disable Specific Services from within the tool </li>
</ul>
</li>
<li>1.2
<ul>
<li>Ability to execute custom Powershell Commands </li>
<li>Ability to use the tool with Exchange Service Packs </li>
</ul>
</li>
<li>1.3
<ul>
<li>BUG FIX: Fixed Forefront Services Disable Command </li>
<li>Added to the ForeFront Services Command &#8211; Stops the MSExchangeIS and MSExchangeTransport Services </li>
<li>Added to the Apply Command &#8211; Starts the MSExchangeIS and MSExchangeTransport Services </li>
<li>Added Command Logging Window with Export Command </li>
<li>Added hints window </li>
<li>Added dedicated About Box </li>
<li>Better error handling </li>
<li>Other minor bug fixes </li>
</ul>
</li>
<li>1.3a
<ul>
<li>Minor bug fix to support expected services not being present on the execution server </li>
</ul>
</li>
</ul>
<p>Anyhow, over Christmas and New Year I have been getting a little bored (<em>and drunk which is always dangerous coding territory for me</em>), so I decided to have a close look at the tool again – the outcome of this “look” was that it occurred to me that I was not completely happy with all of what it did – or perhaps more to the point, what it didn’t do!</p>
<p>There were a number of features that I would personally like to see implemented which would “round” the utility into something that I think would be really useful for Exchange admins – for example;</p>
<ul>
<li>I wanted to add a splash screen (<em>this was a drunk feature</em>)– mainly because I had not ever written one in C# (<em>however, this idea would later become quite useful as it serves as a placeholder which a number of Powershell Commands are executed by the tool as it starts up</em>) </li>
<li>I was <strong>VERY</strong> unhappy with the way I had implemented ForeFront Server Protection detection – <em>basically it didn’t work </em>(<em>bearing in mind that I had tried to fix this twice now!</em>) – I wanted it to be simple and to work! </li>
<li>I had been trying to add in functionality to <strong>STOP</strong> ForeFront Services – but none to <strong><em>START</em></strong> it again afterwards (<em>daft</em>)</li>
<li>I wanted a visual reference of the Roles that were installed on the Exchange Server that I was working on (<em>I don’t know why, it was just something that I though would be good</em>)</li>
<li>I wanted the tool to be useful for managing the update process on Servers which run all Exchange 2010 Server roles – not just DAG members or Mailbox Servers </li>
<li>I wanted to add a reference to the “<em><strong>Best Practice</strong></em>” order for upgrade an Exchange 2010 server which was visually prevalent within the tool’s interface</li>
<li>I wanted to re-brand the tool as it was not just about Roll-ups, but more a update management system</li>
</ul>
<p>So considering the above, I broke out my copy of Visual Studio, a few cans of Carling, and some Alanis Morrissette to implement the above features (<strong><em>cause that’s how I role beeaaaaatches!</em></strong>) – all of which are now present in the new version – 1.5 (<em>which, henceforth shall be known as the UMS (Update Management System)</em>).</p>
<h2>Download</h2>
<p>Version 1.5 is available for download from the link below. Like all previous updates this version supersede all previous releases – therefore if you are running a version of the UMS (<em>or RUPS tool)</em> – please remove it before installing this release.</p>
<p>Version 1.5 is now installed using the Windows Installer Service via a MSI package – therefore any future releases will “<strong><em>self-upgrade</em></strong>” (yaaa – finally).</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="UMSSetupIcon" border="0" alt="UMSSetupIcon" src="http://www.telnetport25.com/wp-content/uploads/2012/01/UMSSetupIcon.jpg" width="58" height="58" /> [ <a href="http://www.telnetport25.com/downloads/applications/rups/setupUMS.msi" target="_blank">Exchange 2010 Update Management System – v1.5 – 1.3MB</a> ]</p>
<h2>Video Overviews and Tutorials</h2>
<p>I thought that, rather than go through screen dumping everything that is new, it might an idea to produce a set of videos to accompany the new release of the tool.</p>
<p>Therefore I have put together 3 videos (below) which take you through the installation of the UMS, how the functionality works on DAG servers, and how the tool functions on roles that are non-DAG / non-Mailbox based. Much of the functionality is the same as was detailed in the articles that I put together when the tool was known as the “RUPS” tool (see the beginning of the article).</p>
<h3>Installation</h3>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:87a040e5-0068-4936-9104-e0311c8e19f6" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/OcrwYCIabCo?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/OcrwYCIabCo?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Installing the Exchange 2010 Update Management System</div>
</div>
<h3>Using the Tool on DAG Members</h3>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0a083074-0de1-4dda-a4f5-3652be243df8" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/zkaXmmpCuKk?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/zkaXmmpCuKk?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Exchange 2010 Update Management System on a DAG Server</div>
</div>
<h3>Functionality of the Tool on non-DAG Servers</h3>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:6b31fad4-df6f-4bb2-b11d-12349f4af1dc" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/oVRVaYgdqrE?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/oVRVaYgdqrE?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Functionality of the Exchange 2010 Update Management System on non-DAG servers</div>
</div>
<p>Anyhow, I hope (as always) that this helps someone along the way – and I would also like to wish all my readers (or any visitor to the site) a very Happy New year.</p>
<div class="shr-publisher-975"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2012%2F01%2Fupdate-to-the-rups-announcing-the-exchange-update-management-system-ums%2F' data-shr_title='Update+to+the+RUPS+%26ndash%3B+Announcing+the+Exchange+Update+Management+System+%28UMS%29%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2012/01/update-to-the-rups-announcing-the-exchange-update-management-system-ums/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>It&#8217;s a majority thing, DAG voting explained (a bit)&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/its-a-majority-thing-dag-voting-explained-a-bit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=its-a-majority-thing-dag-voting-explained-a-bit</link>
		<comments>http://www.telnetport25.com/2011/12/its-a-majority-thing-dag-voting-explained-a-bit/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 20:20:14 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange 2010 (Mailbox)]]></category>
		<category><![CDATA[Windows Clustering]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Database Availability Groups]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 High Availability]]></category>
		<category><![CDATA[File Share Witness]]></category>
		<category><![CDATA[Majority Node Set]]></category>
		<category><![CDATA[Node Majority]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=972</guid>
		<description><![CDATA[I thought that it would be good to take a break from the development stuff that I have been doing on the site for the last few months and focus on something a little more technical. I hope that the following will help aid some people in their own Exchange HA deployments. Historically I have [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I thought that it would be good to take a break from the development stuff that I have been doing on the site for the last few months and focus on something a little more technical. I hope that the following will help aid some people in their own Exchange HA deployments. </p>
<p>Historically I have always had an attraction to Exchange clustering (<em>whether it was SCC, CCR and now DAG</em>) therefore in this post I would like to take the opportunity to discuss the concept of “<strong><em>Majorities</em></strong>” and “<strong><em>Quorum</em></strong>” in the context of <a href="http://technet.microsoft.com/en-us/library/dd979799.aspx" target="_blank">Database Availability Groups</a>.</p>
<p>There are of course a number of articles out and about on the web which deal with this subject at some level, but I thought that I would chuck in my own simplistic take on these critical concepts.</p>
<h2>Firstly, how does Exchange 2010 DAG use Windows Failover Clustering?</h2>
<p>Well, technically it does and it doesn’t (<em>now there’s a great answer for you</em>). Exchange 2010 has its own HA model of clustering and data replication (<em>which is an enhanced version of the model introduced in Exchange 2007 with CCR</em>)&#160; – however there are some small elements of the Windows Failover Clustering service which DAG makes use of:</p>
<ul>
<li>Cluster Heartbeat </li>
<li>Cluster Networks </li>
<li>Cluster Configuration Database </li>
</ul>
<p>When you open the Failover Cluster Manager on a DAG node within your environment you can see how the above components actually look in practice:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dagMNSClst001" border="0" alt="dagMNSClst001" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagMNSClst001.jpg" width="347" height="267" /></p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dagMNSClst002" border="0" alt="dagMNSClst002" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagMNSClst002.jpg" width="380" height="198" /></p>
<p>One of the key things to note is that in Exchange 2010 DAG you should not need nor, should be using the Windows Failover Clustering Manager to configure any aspect of the DAG – all functionality is presented either via the Exchange Management Console or the Exchange Management Shell.</p>
<p>You don’t even need to install and pre-configure the Windows Failover Clustering service, as it is installed during the execution of the <font face="Courier New">New-DatabaseAvailabilityGroup</font> cmdlet, or when you use the Wizard from within the Exchange Management Console.</p>
<h2>Ok, but what about all this Quorum and Majority Node thingies and stuff?</h2>
<p>This is where this post might seem to get a little complicated, but I am hoping to explain the ideas in a pretty straight forward way.    </p>
<p>Each Mailbox Server which plays a part in a DAG is also considered a “<strong><u><em>voter</em></u></strong>” (<em>a voter, like in political elections determines the right candidate to transfer services to in the event of a failure</em>).</p>
<p>In many political situations (<em>and if you have ever served on a committee you may have encountered this</em>) there is a concept called “<strong><em>Quorum</em></strong>” – which means the minimum number of people with voting rights to carry a motion or decision must be present at a meeting. </p>
<p>This always needs to be a majority (<em>as if you have two people whom vote you can get a 50 / 50 split therefore no majority – or you can get a 100% vote but as there were two people involved who is to say they are right?</em>) – therefore you will find many official meetings will have a quorum set at a minimum of 3 (<em>or more, but it will normally be an odd number above 3</em>).</p>
<p>The principles of DAG and Majority Node Set follow pretty much the same rules that we would find in our (<em>my</em>) real world example. </p>
<p>Therefore if you have a <strong><u>EVEN</u></strong> number of DAG enabled mailbox servers in your configuration you will require 50% of your DAG voters plus a Witness Server to be available to provide an arbitration vote in the event of a failure within the system – mathematically this can be represented as:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Nplus1" border="0" alt="Nplus1" src="http://www.telnetport25.com/wp-content/uploads/2011/12/Nplus1.gif" width="54" height="19" /></p>
<p>Where <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Nplus1-2" border="0" alt="Nplus1-2" src="http://www.telnetport25.com/wp-content/uploads/2011/12/Nplus1-2.gif" width="25" height="20" /> represents 50% of the number of DAG Mailbox Servers and the <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Nplus1-3" border="0" alt="Nplus1-3" src="http://www.telnetport25.com/wp-content/uploads/2011/12/Nplus1-3.gif" width="24" height="15" /> is the arbitration vote of the File Share Witness server.</p>
<p>A File Share Witness Server does not hold a copy of the Quorum but can devolve a vote (<strong><em>arbitrate</em></strong>) to a server which is online within the DAG configuration (<em>so that DAG server has two votes</em>) – the FSW sever keeps track of which of the DAG nodes has the most up to date copy of the Quorum database and will pass its vote to that server.</p>
<p>Therefore to try and make the above clearer &#8211; if you have a 4 node DAG infrastructure you will need a minimum of two DAG Mailbox Servers plus the File Share Witness Server online in order to maintain Quorum (<em>This is called Node and File Share Majority</em>) – this is depicted in the example below:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4NodeOK" border="0" alt="4NodeOK" src="http://www.telnetport25.com/wp-content/uploads/2011/12/4NodeOK.png" width="519" height="442" /></p>
<p>In the above scenario &#8211; if you lose three of the DAG Servers or two plus the File Share Witness then a “<strong><em>Split Brain</em></strong>” scenario will occur &#8211; where the cluster cannot not identify the most up to date copy of the cluster configuration or indeed which server was running the relevant resources . This results in the whole DAG infrastructure going offline until an administrator can intervene to rectify the situation – see below:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="4NodeBAD" border="0" alt="4NodeBAD" src="http://www.telnetport25.com/wp-content/uploads/2011/12/4NodeBAD.png" width="519" height="442" /></p>
<p>If you have an un-even (Odd) amount of nodes in your DAG infrastructure (for example 3, 7,9 etc) Exchange 2010 will automatically set the Majority model to “<strong><em>Node Majority</em></strong>” (<em>where the File Share witness is not used as there will be a majority number of voters based upon the DAG membership model</em>).</p>
<p>This is where things might seem even more confusing, but when you do the maths – it makes sense.</p>
<p>If you have a DAG with 3 DAG nodes and one fails then you still have 66.6% of your voters online, if you lose two nodes from a 3 node DAG then you have lost 66.6% of the installation and therefore it would fail based on the total amount of nodes. Even in the above scenario, if the File share witness participated &#8211; remember the <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Nplus1" border="0" alt="Nplus1" src="http://www.telnetport25.com/wp-content/uploads/2011/12/Nplus11.gif" width="54" height="19" /> equation (where <em>n</em> is 50%) you would not achieve Quorum as you would have lost too many of the actual DAG members (as the FSW does not hold a copy of the Quorum).</p>
<p>Scaling Node Majority up to say 5 nodes you could lose two nodes and maintain Quorum without a FSW.</p>
<p>I hope that I have provided some insight into what is a concept in Exchange 2010 which can be very confusing. I will admit that I have not added in additional concepts such as Alternate Witness Servers and their role in the whole concept of DAG (<em>perhaps a later post</em>). But I hope that it helps someone.</p>
<div class="shr-publisher-972"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fits-a-majority-thing-dag-voting-explained-a-bit%2F' data-shr_title='It%26rsquo%3Bs+a+majority+thing%2C+DAG+voting+explained+%28a+bit%29%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/its-a-majority-thing-dag-voting-explained-a-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip&#8211;Update to Prerequisites for Installing Exchange 2010 SP1 / 2 on Windows 2008 R2</title>
		<link>http://www.telnetport25.com/2011/12/quick-tipupdate-to-prerequisites-for-installing-exchange-2010-sp1-2-on-windows-2008-r2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tipupdate-to-prerequisites-for-installing-exchange-2010-sp1-2-on-windows-2008-r2</link>
		<comments>http://www.telnetport25.com/2011/12/quick-tipupdate-to-prerequisites-for-installing-exchange-2010-sp1-2-on-windows-2008-r2/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 17:35:54 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Installation)]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>
		<category><![CDATA[DCDIAG]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 installation]]></category>
		<category><![CDATA[Powerhshell]]></category>
		<category><![CDATA[Windows 2008 R2 Prerequisites for Exchange 2010]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=958</guid>
		<description><![CDATA[In around April 2011 I put together an article which made some recommendations for a successful installation of Exchange 2010 SP1 onto Windows Server 2008 R2. Since then as you might expect a number of things have moved on in the world of both Windows and Exchange &#8211; therefore I have decided it is probably [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>In around <strong>April 2011</strong> I put together an article which made some recommendations for a successful installation of <a href="http://www.telnetport25.com/2011/04/prerequisites-for-installing-exchange-2010-sp1-on-windows-2008-r2/" target="_blank">Exchange 2010 SP1 onto Windows Server 2008 R2</a>. Since then as you might expect a number of things have moved on in the world of both Windows and Exchange &#8211; therefore I have decided it is probably appropriate to publish a short post that details some relevant changes to the requirements process for Exchange 2010 on Windows Server 2008 R2.</p>
<p>Thankfully much of the original article is still pretty current, however it is worth updating as since April there have been a number of updates for Windows 2008 R2 and of course Exchange 2010 SP 2 has been released, therefore for your viewing pleasure I would like to present to you the following updates:</p>
<h2>Windows 2008 R2 Hotfixes Required to install certain Exchange Roles</h2>
<p>All of the hot fixes detailed in this section of the original article are now part of the Windows Update Step &ndash; therefore you do not need to download and install them separately (<em>this was also very kindly pointed out by Brad Saide</em>).</p>
<h2>Get your permissions in order</h2>
<p>All of recommendations that I made in the original post still remain the same -&nbsp; however &#8211; I would like to add that if you are using an account that is not the original Domain Administrator for your Domain / Forest (<em>e.g. one that you have created specifically for administrative purposes</em>) &ndash; when running the Exchange &ldquo;<strong><em>Setup.exe</em></strong>&rdquo; binary, or a command prompt to execute the &ldquo;<strong><em>Setup.com</em></strong>&rdquo; binary you should ensure that these are run &ldquo;<strong><em>As Administrator</em></strong>&rdquo;.</p>
<p><strong>For example</strong>; in the case of <strong><u>Setup.exe</u></strong> from the Exchange 2010 binary &ndash; right click on the file and from the context menu that appears choose the &ldquo;<strong><em>Run as administrator</em></strong>&rdquo; option &ndash; see below:</p>
<p><img alt="exPreRequdt001" border="0" height="240" src="http://www.telnetport25.com/wp-content/uploads/2011/12/exPreRequdt001.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="exPreRequdt001" width="229" /></p>
<p>If you are running Exchange setup via the Command Prompt make sure that you start the Command Prompt as an administrative user &ndash; see below:</p>
<p><img alt="exPreRequdt002" border="0" height="162" src="http://www.telnetport25.com/wp-content/uploads/2011/12/exPreRequdt002.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="exPreRequdt002" width="285" /></p>
<h2>Some additional Tips</h2>
<p>The following are some additional tips that I would like to add to the original article that I have thought of since <img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2011/12/wlEmoticon-smile1.png" /></p>
<h3>Domain Controller Goodness</h3>
<ul>
<li>Before you install any new Exchange 2010 Server (<em>does not matter if it is the first of one of many</em>) you should ensure that all Domain Controllers are online and are working correctly in both Parent and Child Domains (<em>should you have a multi-domain setup</em>). If you have a DC that is offline, or is not functioning correctly in the replication topology, Exchange setup is likely to fail as the objects that need to be created cannot be replicated.
<p>		Given the above &#8211; a good tool to use <strong><u>BEFORE</u></strong> You install Exchange is DCDIAG (<em>which can be used from a Windows 2008 R2 command prompt or directly on a domain controller</em>). <br />
		Open a command prompt (<strong><em>as an Administrator</em></strong>) and type in the following command:</li>
</ul>
<pre>dcdiag /s:<strong><em>&lt;home domain controller name&gt;</em></strong> /a &gt;c:\DomainReport.txt</pre>
<p>This will pipe all relevant output to a text file called &ldquo;<strong><em>DomainReport.txt</em></strong>&rdquo; located in the root of C:\ on your server. The command will test each domain controller detected within your infrastructure for issues. When completed you should inspect this report (sic. the text file that has been produced) to ensure that there are no unexpected issues before you install Exchange.</p>
<h3>Install PowerGUI</h3>
<p>It is important to note that Exchange will work perfectly well without PowerGUI, but it comes with perhaps the best Powershell scripting Editor around &ndash; and as you all know, Exchange is a beast for Powershell. <br />
	Normally I would never recommend placing 3rd party software on an Exchange Server (aside from Anti-Viral, Backup, Monitoring Agents, Statistics Tools) &ndash; but PowerGui IMHO is an exception to this rule.</p>
<p>You can download PowerGui from: <a href="http://powergui.org/index.jspa" target="_blank" title="http://powergui.org/index.jspa">http://powergui.org/index.jspa</a></p>
<h3>Previous Reboots</h3>
<p>If you are installing Exchange for the first time on a new Windows 2008 R2 Server, you should ensure that there are no previous reboots pending (e.g. from Windows Updates and the like). If there are, Exchange Setup will fail and require you to reboot the machine.</p>
<div class="shr-publisher-958"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fquick-tipupdate-to-prerequisites-for-installing-exchange-2010-sp1-2-on-windows-2008-r2%2F' data-shr_title='Quick+Tip%26ndash%3BUpdate+to+Prerequisites+for+Installing+Exchange+2010+SP1+%2F+2+on+Windows+2008+R2'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/quick-tipupdate-to-prerequisites-for-installing-exchange-2010-sp1-2-on-windows-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Tip: Odd issue with Windows 2008 R2 Standard running on VMWARE 8 Workstation&#8211;The Remote device or resource won&#8217;t accept the connection&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/quick-tip-odd-issue-with-windows-2008-r2-standard-running-on-vmware-8-workstationthe-remote-device-or-resource-wont-accept-the-connection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-odd-issue-with-windows-2008-r2-standard-running-on-vmware-8-workstationthe-remote-device-or-resource-wont-accept-the-connection</link>
		<comments>http://www.telnetport25.com/2011/12/quick-tip-odd-issue-with-windows-2008-r2-standard-running-on-vmware-8-workstationthe-remote-device-or-resource-wont-accept-the-connection/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 16:41:34 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>
		<category><![CDATA[Windows Networking]]></category>
		<category><![CDATA[MAC Addresses]]></category>
		<category><![CDATA[The remote device or resource won't accept the connection]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=952</guid>
		<description><![CDATA[Not an Exchange post, but a Windows one for those of you whom use VMWARE. Today I was building a new SQL server within my VMWARE Workstation 8 environment. Everything was going swimmingly right up until I had just finished Windows 2008 R2 setup. I was in the process of applying Windows Updates when I [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Not an Exchange post, but a Windows one for those of you whom use VMWARE.</p>
<p>Today I was building a new SQL server within my VMWARE Workstation 8 environment. Everything was going swimmingly right up until I had just finished Windows 2008 R2 setup. I was in the process of applying Windows Updates when I lost Internet connectivity.</p>
<p>It was very odd, as I still had IPv4 connectivity (I would ping devices on my network with no issues), and I could use NSLOOKUP and Trace Route to both resolve DNS names and track packets – but every time that I tried to connect to the Internet (either via a sites IP address, or via the DNS name) I would get an error message.</p>
<p>The network icon in the bottom left of the Screen turned to the familiar yellow exclamation mark – see below</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VMWare-MAC-Main3" border="0" alt="VMWare-MAC-Main3" src="http://www.telnetport25.com/wp-content/uploads/2011/12/VMWare-MAC-Main3.jpg" width="154" height="47" /></p>
<p>And opening up the Network Connection and Sharing Centre revealed the following:</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VMWare-MAC-Main4" border="0" alt="VMWare-MAC-Main4" src="http://www.telnetport25.com/wp-content/uploads/2011/12/VMWare-MAC-Main4.jpg" width="471" height="91" /></p>
<p>I tried a number of things:</p>
<ul>
<li>Uninstalled the NIC from the within the Virtual Machine and then re-installing it</li>
<li>Removing and installing VMWARE tools</li>
<li>Switching the IPv4 Configuration between static and DHCP addressing</li>
<li>Numerous Reboots of the VM</li>
</ul>
<p>All of which were to no avail – as the problem still persisted.</p>
<p>After several hours of Googling, swearing, teeth Gnashing – I decided that I was going to physically remove the NIC from he Virtual machine, reboot, and the add it in again from within the Workstation console.</p>
<p>Just as I was about to do so, I remembered a setting which VMWare gives you on the NIC for a Virtual machine which allows for you to change the MAC address &#8211; I thought that I would give this a try before removed the adapter completely (<em>my logic being that perhaps a rouge ARP entry or something else odd had happened at the network layer in my environment</em>).</p>
<p>So from within the VMWARE management console I selected the properties of the Network Adapter, and then clicked on the “<strong><em>Advanced</em></strong>” button – see below </p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VMWare-MAC-Main1" border="0" alt="VMWare-MAC-Main1" src="http://www.telnetport25.com/wp-content/uploads/2011/12/VMWare-MAC-Main1.jpg" width="663" height="577" /></p>
<p>From the dialog that appeared I clicked on the “<strong><em>Generate</em></strong>” button located in the MAC Address section – see below</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VMWare-MAC-Main2" border="0" alt="VMWare-MAC-Main2" src="http://www.telnetport25.com/wp-content/uploads/2011/12/VMWare-MAC-Main2.jpg" width="287" height="358" /></p>
<p>I then rebooted the Virtual machine, and low and behold – this solved the problem (lucky guess huh?). Although I have not checked this in any real detail – I am wondering if I had two VM’s active with the same MAC address, but heh – ho, problem solved and only 4 hours of my life lost on the problem – so, if you end up at your wits end and have tried all of the obvious stuff and you are using VMWARE – give this a go.</p>
<div class="shr-publisher-952"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fquick-tip-odd-issue-with-windows-2008-r2-standard-running-on-vmware-8-workstationthe-remote-device-or-resource-wont-accept-the-connection%2F' data-shr_title='Quick+Tip%3A+Odd+issue+with+Windows+2008+R2+Standard+running+on+VMWARE+8+Workstation%26ndash%3BThe+Remote+device+or+resource+won%26rsquo%3Bt+accept+the+connection%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/quick-tip-odd-issue-with-windows-2008-r2-standard-running-on-vmware-8-workstationthe-remote-device-or-resource-wont-accept-the-connection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RUPS Tool version 1.3a</title>
		<link>http://www.telnetport25.com/2011/12/rups-tool-version-1-3a/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rups-tool-version-1-3a</link>
		<comments>http://www.telnetport25.com/2011/12/rups-tool-version-1-3a/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 17:29:59 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Exchange Roll-Ups]]></category>
		<category><![CDATA[Exchange Service Packs]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows Clustering]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Automated Roll up installation on DAG]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010 High Availability]]></category>
		<category><![CDATA[Roll-ups]]></category>
		<category><![CDATA[Service Packs]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=944</guid>
		<description><![CDATA[Note: The download version of this tool has been updated to reflect the lastest version. Just a very quick update to the RUPS tool, taking it to version 1.3a &#8211; nothing too major, just a small bug fix to the logic which detects and then manipulates the MSExchangeIS and MSExchangeTransport services &#8211; basically if you [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><blockquote>
<p><u><strong>Note:</strong></u> The download version of this tool has been updated to reflect the lastest version.</p>
</blockquote>
<p>Just a very quick update to the RUPS tool, taking it to version 1.3a &ndash; nothing too major, just a small bug fix to the logic which detects and then manipulates the <strong>MSExchangeIS</strong> and <strong>MSExchangeTransport</strong> services &ndash; basically if you executed the tool on a server which did not have either one of the services installed you would be presented with a .NET exception.</p>
<p>I have added in some Exception handling code that allows for the tool to continue processing should this circumstance arise. My thanks go out to <strong><em>Tunde TMoney</em></strong> for pointing this out to me.</p>
<p>I won&rsquo;t go into great detail on how to upgrade the installation as this has been covered <a href="http://www.telnetport25.com/2011/11/apply-roll-up-to-exchange-2010-sp1-and-above-encapsulation-tool/" target="_blank">here</a>.</p>
<h2>Download</h2>
<p>As before this version of the tool supersedes all previous releases and I recommend that you replace any current version that you are using with the one below.</p>
<p><img alt="UMSSetupIcon" border="0" height="58" src="http://www.telnetport25.com/wp-content/uploads/2012/01/UMSSetupIcon.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="UMSSetupIcon" width="58" /> [ <a href="http://www.telnetport25.com/downloads/applications/rups/setupUMS.msi" target="_blank"><font color="#2361a1">Exchange 2010 Update Management System &ndash; v1.5 &ndash; 1.3MB</font></a> ]</p>
<div class="shr-publisher-944"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Frups-tool-version-1-3a%2F' data-shr_title='RUPS+Tool+version+1.3a'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/rups-tool-version-1-3a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing the Exchange 2010 SP2 Hybrid Configuration after you have created it&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/removing-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=removing-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it</link>
		<comments>http://www.telnetport25.com/2011/12/removing-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 20:17:03 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (Admin)]]></category>
		<category><![CDATA[Exchange 2010 (General)]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Test Labs]]></category>
		<category><![CDATA[Windows 2008 - ADSI]]></category>
		<category><![CDATA[Don't Try this at home]]></category>
		<category><![CDATA[Hybrid Configuration]]></category>
		<category><![CDATA[Not supported]]></category>
		<category><![CDATA[Removing a Hybrid Configuraton]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/2011/12/removing-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it/</guid>
		<description><![CDATA[Before I get into this it is VERY important to point out that this article is NOT supported by Microsoft in any way shape of form. If you have run the Exchange 2010 Service Pack 2 Hybrid Configuration Wizard and therefore setup a configuration – you are NOT supposed to remove it. If you have [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Before I get into this it is <strong><u>VERY</u></strong> important to point out that this article is <strong><u>NOT</u></strong> supported by Microsoft in any way shape of form.</p>
<p>If you have run the <a href="http://blogs.technet.com/b/exchange/archive/2011/12/08/introducing-the-hybrid-configuration-wizard.aspx" target="_blank">Exchange 2010 Service Pack 2 Hybrid Configuration Wizard</a> and therefore setup a configuration – you are <strong><u>NOT</u></strong> supposed to remove it. </p>
<p>If you have created a Hybrid Configuration, but not made use of its features – this will not affect the functionality of Exchange 2010 SP2 at all.</p>
<p>I have performed this process in a LAB – not in production, and I have posted it purely as a proof of concept as it came up on the MVP mailing list, and I was curious if it could be done, and therefore thought that I would share my findings, but it has not been tested for wider ramifications ~ you have been warned.</p>
<h3>Background</h3>
<p>OK, like me, some of you just out of curiosity might have executed the “<strong><em>Hybrid Configuration</em></strong>” wizard just to see what happens – just to let you in on the secret &#8211; what you will end up with by using the single step Configuration Wizard is a Hybrid Configuration entry within Exchange, a federation trust and a Self Signed SSL certificate for Federation on your Exchange servers (<em>of course there is a lot more to it if you choose to actually use a Hybrid configuration</em>) – see below;</p>
<h3>Hybrid Configuration:</h3>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid001" border="0" alt="remHybrid001" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid001.jpg" width="555" height="204" /></p>
<h3>Federation Trust:</h3>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid002" border="0" alt="remHybrid002" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid002.jpg" width="553" height="302" /></p>
<h3>Federation Self Signed SSL:</h3>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid003" border="0" alt="remHybrid003" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid003.jpg" width="662" height="352" /></p>
<p>The next thing that you will notice is that you cannot via either the Exchange Management Console, or Exchange Management Shell remove the Hybrid Configuration (mumble, mumble).</p>
<p>Therefore I have come up with the following process (<em>again to reiterate that is <strong><u>NOT </u></strong>supported by Microsoft</em>) that will remove the configuration and associated elements.</p>
<h3>Step 1:</h3>
<p>From within the Exchange Management Console – navigate to the “<strong><em>Organization Configuration</em></strong>” node and from the Organization configuration details window select the “<strong><em>Federation Trust</em></strong>” tab. Using the right hand mouse button – select the “<strong><em>Microsoft Federation Gateway</em></strong>” entry and from the context menu that appears choose “<strong><em>Remove Federation Trust</em></strong>” – see below</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid004" border="0" alt="remHybrid004" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid004.jpg" width="535" height="282" /></p>
<h3>Step 2: </h3>
<p>Navigate to the “<strong><em>Server Configuration</em></strong>” Node within the Exchange Management Console and select each server within your environment. You will see a list of certificates within the “<strong><em>Exchange Certificates</em></strong>” window – select the entry for “<strong><em>Exchange Delegation Federation</em></strong>” with the right hand mouse button and from the context menu that appears choose “<strong><em>Remove</em></strong>” – see below:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid005" border="0" alt="remHybrid005" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid005.jpg" width="577" height="471" /></p>
<h3>Step 3:</h3>
<p>Open ADSI edit on your server (typically located within [ <strong><em>Start –&gt; Programs –&gt; Administrative Tools –&gt; ADSI Edit</em></strong> ]) and make a connection to the “<strong><em>Configuration</em></strong>” Partition. You will need to navigate to [ <strong><em>Configuration –&gt;Services-&gt;Microsoft Exchange –&gt;&lt;Organisation Name&gt;-&gt;Hybrid Configuration</em></strong>] – see below</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid006" border="0" alt="remHybrid006" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid006.jpg" width="360" height="508" /></p>
<p>The details pane will change to show you a “<strong><em>Hybrid Configuration</em></strong>” entry – using the Right hand mouse button – select this entry and from the context menu that appears choose “<strong><em>Delete</em></strong>” – see below</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="remHybrid007" border="0" alt="remHybrid007" src="http://www.telnetport25.com/wp-content/uploads/2011/12/remHybrid007.jpg" width="297" height="161" /></p>
<h3>Step 4:</h3>
<p>You will need to restart the Microsoft Exchange Service Host (<strong><em>MSExchangeServiceHost</em></strong>) service from the Services Manager on each of your Exchange Servers, and wait for AD replication to take place (if you have more than 1 domain controller) after which when you navigate back to the “<strong><em>Organization Configuration –&gt; Hybrid Configuration</em></strong>” you will now see that the entry has gone.</p>
<div class="shr-publisher-942"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fremoving-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it%2F' data-shr_title='Removing+the+Exchange+2010+SP2+Hybrid+Configuration+after+you+have+created+it%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/removing-the-exchange-2010-sp2-hybrid-configuration-after-you-have-created-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overarching DAG Powershell Maintenance Script&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/overarching-dag-powershell-maintenance-script/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=overarching-dag-powershell-maintenance-script</link>
		<comments>http://www.telnetport25.com/2011/12/overarching-dag-powershell-maintenance-script/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 18:59:38 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange 2010 Scripts]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows Clustering]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[DAG Maintenance]]></category>
		<category><![CDATA[RedistributeActiveDatabases.ps1]]></category>
		<category><![CDATA[StartDAGServerMaintenance.ps1]]></category>
		<category><![CDATA[StopDAGServerMaintenance.ps1]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/2011/12/overarching-dag-powershell-maintenance-script/</guid>
		<description><![CDATA[Recently I have been doing a quite a bit in relation to Database Availability Groups, Service Packs, Roll-Ups in my lab. In order to test my applications (honestly, I do some testing before I release them) – there is quite a lot of shutting down, restarting and generally messing around with my DAG based Exchange [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Recently I have been doing a quite a bit in relation to <a href="http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/" target="_blank">Database Availability Groups, Service Packs, Roll-Ups</a> in my lab. In order to test my applications (<em>honestly, I do some testing before I release them</em>) – there is quite a lot of shutting down, restarting and generally messing around with my DAG based Exchange Servers.</p>
<p>In order to facilitate all of the above and of course keep my servers in good shape, it has been a requirement to place certain servers within my infrastructure into various forms of DAG maintenance, restore normal operation, and finally redistribute the databases post DAG server maintenance.</p>
<p>Now as many of your will be aware – within Exchange 2010 from SP1 there are a number of built in scripts which administrators can use to configure a number of maintenance tasks on DAG members these typically are:</p>
<ul>
<li>StartDagServerMaintenance.ps1 </li>
<li>StopDagServerMaintenance.ps1 </li>
<li>RedistributeActiveDatabases.ps1 </li>
</ul>
<blockquote><p>Normally the above are found in the C:\Program Files\Microsoft\Exchange Server\v14\Scripts folder</p>
</blockquote>
<p>All these scripts are excellent accompaniments to your Exchange infrastructure – but as I have been using all three on a regular basis I decided for convenience to amalgamate them into a single script and add a new “<strong><em>Query</em></strong>” feature.</p>
<p>In essence the script that I have written is an encapsulation layer for all of the above Microsoft supplied ps1 scripts – encapsulating the following features:</p>
<ul>
<li>Accepts a single command line parameter via the –opMode switch:
<ul>
<li>Start – Executes the <strong><em>StartDagServerMaintenance.ps1</em></strong> script but automatically detects the serverName parameter </li>
<li>Stop &#8211; Executes the <strong><em>StopDagServerMaintenance.ps1</em></strong> script but automatically detects the serverName parameter </li>
<li>Query – New feature, detects the status of the DAG node that the script is executed on and reports the following information: </li>
</ul>
</li>
</ul>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dagEncaps001" border="0" alt="dagEncaps001" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps001.jpg" width="568" height="346" /></p>
<ul>
<ul>
<li>Redist &#8211; Executes the <strong><em>RedistributeActiveDatabases.ps1</em></strong> script but automatically detects the DAGName and sets the –BalanceDBSByActivationPreference parameter </li>
</ul>
</ul>
<h2>DAG Server Maintenance Script</h2>
<p>The following is an overview of the encapsulation script for you to review prior to download.</p>
<pre class="code"><span style="color: green"># Dag-Server-Maintenance Automation Script
# Author: Andy Grogan
# Version 1.0
# www.telnetport25.com

# Command Line Parameters

</span><span style="color: blue">Param</span><span style="color: black">(
    [Parameter(Mandatory</span><span style="color: red">=</span><span style="color: purple">$true</span><span style="color: black">)]
    [</span><span style="color: teal">System.Management.Automation.ValidateNotNullOrEmptyAttribute</span><span style="color: black">()]
    [</span><span style="color: teal">string</span><span style="color: black">] </span><span style="color: purple">$opMode
</span><span style="color: black">)

</span><span style="color: green"># Query the Registry for the Exchange Install Location

</span><span style="color: purple">$HKLM </span><span style="color: red">= </span><span style="color: black">2147483650
</span><span style="color: purple">$WMIReg </span><span style="color: red">= </span><span style="color: black">[</span><span style="color: teal">wmiclass</span><span style="color: black">]</span><span style="color: maroon">'\\.\root\default:StdRegProv'
</span><span style="color: purple">$specKey </span><span style="color: red">= </span><span style="color: maroon">&quot;Software\Microsoft\ExchangeServer\v14\Setup&quot;
</span><span style="color: purple">$keyVal </span><span style="color: red">= </span><span style="color: maroon">&quot;MsiInstallPath&quot;
</span><span style="color: purple">$retVals </span><span style="color: red">= </span><span style="color: purple">$WMIReg</span><span style="color: black">.GetStringValue(</span><span style="color: purple">$HKLM</span><span style="color: black">,</span><span style="color: purple">$specKey</span><span style="color: black">,</span><span style="color: purple">$keyVal</span><span style="color: black">)
</span><span style="color: purple">$exPath </span><span style="color: red">= </span><span style="color: purple">$retVals</span><span style="color: black">.sValue

</span><span style="color: purple">$localServerName </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-WmiObject -Class </span><span style="color: maroon">Win32_ComputerSystem </span><span style="color: black">| </span><span style="color: #5f9ea0">select </span><span style="color: maroon">Name

</span><span style="color: #5f9ea0">Add-PSSnapin </span><span style="color: maroon">Microsoft.Exchange.Management.PowerShell.E2010 </span><span style="color: #5f9ea0">-ErrorAction </span><span style="color: maroon">SilentlyContinue

</span><span style="color: blue">function </span><span style="color: #5f9ea0">do_functionalTask</span><span style="color: black">{

    </span><span style="color: blue">if</span><span style="color: black">(</span><span style="color: purple">$opMode</span><span style="color: black">.ToLower() </span><span style="color: red">-eq </span><span style="color: maroon">&quot;start&quot;</span><span style="color: black">){
        Powershell.exe </span><span style="color: red">-File </span><span style="color: purple">$exPath</span><span style="color: maroon">&quot;Scripts\StartDagServerMaintenance.ps1&quot; </span><span style="color: black">-serverName </span><span style="color: purple">$localServerName</span><span style="color: black">.Name
    }</span><span style="color: blue">elseif</span><span style="color: black">(</span><span style="color: purple">$opMode</span><span style="color: black">.ToLower() </span><span style="color: red">-eq </span><span style="color: maroon">&quot;stop&quot;</span><span style="color: black">){
        Powershell.exe </span><span style="color: red">-File </span><span style="color: purple">$exPath</span><span style="color: maroon">&quot;Scripts\StopDagServerMaintenance.ps1&quot; </span><span style="color: black">-serverName </span><span style="color: purple">$localServerName</span><span style="color: black">.Name
    }</span><span style="color: blue">elseif</span><span style="color: black">(</span><span style="color: purple">$opMode</span><span style="color: black">.ToLower() </span><span style="color: red">-eq </span><span style="color: maroon">&quot;query&quot;</span><span style="color: black">){

        </span><span style="color: purple">$AP </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-MailboxServer -Identity </span><span style="color: purple">$localServerName</span><span style="color: black">.Name | </span><span style="color: #5f9ea0">Select </span><span style="color: maroon">DataBaseCopyAutoActivationPolicy
        </span><span style="color: purple">$CS </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-MailboxDatabaseCopyStatus -Server </span><span style="color: purple">$localServerName</span><span style="color: black">.Name | </span><span style="color: #5f9ea0">Select </span><span style="color: black">Name,ActivationSuspended
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;------------------------------------------------&quot;
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Activation Policy: &quot; </span><span style="color: purple">$AP</span><span style="color: black">.DataBaseCopyAutoActivationPolicy </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Cyan
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Copy Status for Server: &quot; </span><span style="color: purple">$localServerName</span><span style="color: black">.Name </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Yellow
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;------------------------------------------------&quot;
        </span><span style="color: blue">foreach</span><span style="color: black">(</span><span style="color: purple">$val </span><span style="color: blue">in </span><span style="color: purple">$CS</span><span style="color: black">){
            </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Database Name: &quot; </span><span style="color: black">(</span><span style="color: purple">$val</span><span style="color: black">).Name </span><span style="color: maroon">&quot;`nIs Activation Suspended?: &quot; </span><span style="color: black">(</span><span style="color: purple">$val</span><span style="color: black">).ActivationSuspended </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Green
        </span><span style="color: black">}
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;------------------------------------------------&quot;
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Cluster Node Status: &quot;
        </span><span style="color: black">Cluster.exe node </span><span style="color: purple">$localServerName</span><span style="color: black">.Name
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;------------------------------------------------&quot;
    </span><span style="color: black">}</span><span style="color: blue">elseif</span><span style="color: black">(</span><span style="color: purple">$opMode</span><span style="color: black">.ToLower() </span><span style="color: red">-eq </span><span style="color: maroon">&quot;redist&quot;</span><span style="color: black">){

        </span><span style="color: purple">$DAGName </span><span style="color: red">= </span><span style="color: #5f9ea0">Get-DatabaseAvailabilityGroup </span><span style="color: black">| </span><span style="color: #5f9ea0">Where </span><span style="color: black">{</span><span style="color: purple">$_</span><span style="color: black">.Servers </span><span style="color: red">-eq </span><span style="color: purple">$localServerName</span><span style="color: black">.Name} | </span><span style="color: #5f9ea0">Select </span><span style="color: maroon">Name
        </span><span style="color: black">Powershell.exe </span><span style="color: red">-File </span><span style="color: purple">$exPath</span><span style="color: maroon">&quot;Scripts\redistributeActiveDatabases.ps1&quot; </span><span style="color: black">-DagName </span><span style="color: purple">$DAGName</span><span style="color: black">.Name -BalanceDBSByActivationPreference -ShowFinalDatabaseDistribution

    }</span><span style="color: blue">else</span><span style="color: black">{
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Error: Sorry the script does not support the command line argument you supplied.&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Red
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot;Valid Command Line Parameters are:&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Cyan
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot; -opMode Start&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Green
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot; -opMode Query&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Green
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot; -opMode Stop&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Green
        </span><span style="color: #5f9ea0">Write-Host </span><span style="color: maroon">&quot; -opMode Redist&quot; </span><span style="color: #5f9ea0">-ForegroundColor </span><span style="color: maroon">Green
    </span><span style="color: black">}
}
</span><span style="color: #5f9ea0">do_Functionaltask </span><span style="color: purple">$opMode

    </span></pre>
<h2>Script Requirements</h2>
<p>In order to use the script within your environment you will need to ensure that it (sic. the environment) conforms to the following requirements:</p>
<blockquote>
<p><font color="#111111"><strong><u>NOTE:</u></strong> As the script is designed for Mailbox Servers which are part of a DAG topology the chances are that you will automatically comply with the requirements below.</font></p>
</blockquote>
<ul>
<li>Powershell version 2.0 </li>
<li>Exchange Server 2010 SP1 or above </li>
<li>Exchange Server Management Tools installed </li>
<li>Must be executed on the DAG Server that you wish to place into / take out of maintenance mode </li>
</ul>
<h2>Download</h2>
<p>You can download the above script from the download link below – you should place the script in a convenient location on your DAG servers.</p>
<p><img src="http://www.telnetport25.com/wp-content/uploads/image/pwrshell-icon.JPG" /> [ <a href="http://www.telnetport25.com/downloads/scripts/DagServerMaintenance.ps1" target="_blank">DagServerMaintenance.ps1 – 2KB</a> ] </p>
<h2>Script Usage</h2>
<p>The script is executed from the Powershell Command Prompt (<em>you do not need to have to use the Exchange Management Console</em>). The script accepts a single parameter called “<strong><em>-opMode</em></strong>” which accepts one of four parameters (<em>these are described above – and illustrated below</em>):</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dagEncaps002" border="0" alt="dagEncaps002" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps002.jpg" width="650" height="129" /></p>
<h3>-opMode Start</h3>
<p>Example of output from using the –opMode Start Command;</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dagEncaps003" border="0" alt="dagEncaps003" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps003.jpg" width="623" height="108" /></p>
<h3>-opMode Stop</h3>
<p>Example of output from using the –opMode Stop Command;</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dagEncaps004" border="0" alt="dagEncaps004" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps004.jpg" width="425" height="83" /></p>
<h3>-opMode Query</h3>
<p>Example of output from using the –opMode Query Command;</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dagEncaps006" border="0" alt="dagEncaps006" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps006.jpg" width="486" height="335" /></p>
<h3>-opMode Redist</h3>
<p>Example of output from using the –opMode Redist Command;</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dagEncaps005" border="0" alt="dagEncaps005" src="http://www.telnetport25.com/wp-content/uploads/2011/12/dagEncaps005.jpg" width="507" height="444" /></p>
<p>I hope that someone will find this useful.</p>
<div class="shr-publisher-934"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Foverarching-dag-powershell-maintenance-script%2F' data-shr_title='Overarching+DAG+Powershell+Maintenance+Script%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/overarching-dag-powershell-maintenance-script/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Roll-Ups, Service Packs, Update Tools and another version (I promise that I will give it a rest for a while and write about something else)&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else</link>
		<comments>http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 20:29:06 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Exchange Roll-Ups]]></category>
		<category><![CDATA[Exchange Service Packs]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows Clustering]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Automated Roll up installation on DAG]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010 High Availability]]></category>
		<category><![CDATA[Roll-ups]]></category>
		<category><![CDATA[Service Packs]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/</guid>
		<description><![CDATA[Note: The download version of this tool has been updated to reflect the latest version. Ok, I admit that this is turning into a little bit of a saga &#8211; for those of you whom have been following the site recently will know that on the 26th November I released my Roll-Up Encapsulation tool (version [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><blockquote>
<p><u><strong>Note:</strong></u> The download version of this tool has been updated to reflect the latest version.</p>
</blockquote>
<p>Ok, I admit that this is turning into a little bit of a saga &ndash; for those of you whom have been following the site recently will know that on the <strong>26th November</strong> I released my <a href="http://www.telnetport25.com/2011/11/apply-roll-up-to-exchange-2010-sp1-and-above-encapsulation-tool/" target="_blank">Roll-Up Encapsulation tool</a> (version 1.0), on the <strong>27th</strong> I released an <a href="http://www.telnetport25.com/2011/11/update-to-the-rups-tool-apply-roll-ups-to-exchange-2010/" target="_blank">update</a> (<em>version 1.1</em>) which included two new features in the form of Forefront Service maintenance and allowing the administrator to disable bespoke services from within the tool&rsquo;s interface.</p>
<p>On the <strong>5th of December</strong> &ndash; to coincide with the release of <a href="http://www.microsoft.com/download/en/details.aspx?id=28190" target="_blank">Exchange 2010 Service Pack 2</a> I released <a href="http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/" target="_blank">version 1.2</a> which allowed for both Service Packs and Roll-Ups to be installed via the interface, as well as allowing for custom Powershell commands to be executed.</p>
<p>I thought at that point my work was done and that I could return to the tool at a later point in time, however I was contacted by a chap called Charles Ojserkis (thanks buddy!) who pointed out a rather embarrassing bug (<em>which I had missed</em>) and also made a couple of really cool suggestions to improve its functionality.</p>
<p>What Charles basically said was;</p>
<ul>
<li>The Forefront command is <strong><u>FSCUTILITY</u></strong> not <strong><u>FSUTILITY</u></strong> (<em>as was in my code</em>) &ndash; oops &ndash; I forgot a &ldquo;C&rdquo;</li>
<li>That the MSExchangeIS and MSExchangeTransport Services should be stopped before the above utility should be run (<em>as I am not personally running ForeFront in the Lab I completely missed this ~ testing Grogan, testing&hellip;</em>)</li>
</ul>
<p>Charles then went onto explain that it would also be useful if folks could see the output of the Powershell scripts that are executed by the tool, just to check for errors (<em>I had not included this in the original version probably because I am lazy</em>), but it seemed like a good idea to me.</p>
<p>So, out came my copy of Visual Studio &ndash; and set about correcting the errors and adding a couple of new features.</p>
<p>Now that I have completed the development &#8211; one of the first things that you will notice about the new version (<em>version 1.3</em>) is that the interface has been slightly redesigned to encompass both a &ldquo;<strong><em>Command Output</em></strong>&rdquo;&nbsp; and a &ldquo;<strong><em>Hints</em></strong>&rdquo; window &ndash; see below;</p>
<p><img alt="rups13001" border="0" height="504" src="http://www.telnetport25.com/wp-content/uploads/2011/12/rups13001.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="rups13001" width="675" /></p>
<p>When you &ldquo;<strong><em>hover</em></strong>&rdquo; over an active area within the interface you will be presented with a hint in the &ldquo;<strong><em>Hints</em></strong>&rdquo; window, and when you execute a shell command via the interface, the results will be populated into the &ldquo;<strong><em>Command Output Window</em></strong>&rdquo;. You have the option of both clearing the Command Output (<em>via the &ldquo;<strong>Clear</strong>&rdquo; button</em>) as well as exporting the log to a file (by clicking on the &ldquo;<strong><em>Export</em></strong>&rdquo; button).</p>
<p>I have also made some &ldquo;<strong><em>behind the scenes</em></strong>&rdquo; changes which include better exception handling and stopping certain services when commands such as the FSCUTILITY are executed &ndash; and then starting those same services again before the patch is applied.</p>
<p>I have also renamed the tool to &ldquo;<strong><em>Apply Exchange Updates</em></strong>&rdquo; &ndash; which seemed to make more sense, given that it now supports both Roll-Ups and Service Packs.</p>
<h2>Download</h2>
<p>As before this version of the tool supersedes all previous releases and I recommend that you replace any current version that you are using with the one below. Installation and functionality are the same as described <a href="http://www.telnetport25.com/2011/11/apply-roll-up-to-exchange-2010-sp1-and-above-encapsulation-tool/" target="_blank">here</a>, <a href="http://www.telnetport25.com/2011/11/update-to-the-rups-tool-apply-roll-ups-to-exchange-2010/" target="_blank">here</a> and <a href="http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/" target="_blank">here</a>.</p>
<p><img alt="UMSSetupIcon" border="0" height="58" src="http://www.telnetport25.com/wp-content/uploads/2012/01/UMSSetupIcon.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="UMSSetupIcon" width="58" /> [ <a href="http://www.telnetport25.com/downloads/applications/rups/setupUMS.msi" target="_blank"><font color="#2361a1">Exchange 2010 Update Management System &ndash; v1.5 &ndash; 1.3MB</font></a> ]</p>
<div class="shr-publisher-925"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Froll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else%2F' data-shr_title='Roll-Ups%2C+Service+Packs%2C+Update+Tools+and+another+version+%28I+promise+that+I+will+give+it+a+rest+for+a+while+and+write+about+something+else%29%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/roll-ups-service-packs-update-tools-and-another-version-i-promise-that-i-will-give-it-a-rest-for-a-while-and-write-about-something-else/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated version of the RUPS Tool&#8211;Installing Service Packs&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=updated-version-of-the-rups-toolinstalling-service-packs</link>
		<comments>http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:28:43 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Exchange 2010 (DAG)]]></category>
		<category><![CDATA[Exchange Programming .NET]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows Clustering]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Automated Roll up installation on DAG]]></category>
		<category><![CDATA[DAG]]></category>
		<category><![CDATA[Exchange 2010 Service Pack 2]]></category>
		<category><![CDATA[Powerhshell]]></category>
		<category><![CDATA[Roll-ups]]></category>
		<category><![CDATA[Service Pack 2]]></category>
		<category><![CDATA[Service Packs]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/</guid>
		<description><![CDATA[Note: The download version of this tool has been updated to the latest released of the tool &#8211; this article is still relevant however. Today Microsoft released Service Pack 2 for Exchange 2010 &#8211; and I thought that I would take this as an opportunity to update (again) my Roll-Up tool to support Service Packs [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><blockquote>
<p>Note: The download version of this tool has been updated to the latest released of the tool &#8211; this article is still relevant however.</p>
</blockquote>
<p>Today Microsoft released <a href="http://www.microsoft.com/download/en/details.aspx?id=28190" target="_blank">Service Pack 2 for Exchange 2010</a> &ndash; and I thought that I would take this as an opportunity to update (<strong><em>again</em></strong>) my <a href="http://www.telnetport25.com/2011/11/update-to-the-rups-tool-apply-roll-ups-to-exchange-2010/" target="_blank">Roll-Up tool</a> to support Service Packs as well as patches within DAG environments (<em>or jump on the bandwagon </em><img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://www.telnetport25.com/wp-content/uploads/2011/12/wlEmoticon-smile.png" />)</p>
<p>Now sometimes service packs need new Windows features to be installed &ndash; for example in the case of Service Pack 2 for Exchange your Client Access Servers need to have the IIS 6 Web-WMI tools installed as has been documented <a href="http://www.expta.com/2011/12/new-prerequisite-for-exchange-2010-sp2.html" target="_blank">here</a> &ndash; therefore before you being the upgrade process, if the Exchange Server that you are working on has the CAS role installed you need to open a Powershell window and execute the following commands:</p>
<pre class="code"><span style="color: rgb(95, 158, 160);">Import-Module </span><span style="color: maroon;">ServerManager
</span><span style="color: black;">Add-WindowsFeature Web-WMI</span></pre>
<p>Therefore I have added a new feature to the tool that allows for you to execute custom Powershell commands within the application, which I hope should cater for most situations like the above when installing a Service Pack as well as a Roll-Up &ndash; remember in the case of SP2 the above only applies to Server running the CAS role.</p>
<h2>Using the new features</h2>
<p>The process for installing a Service Pack on a Server which contains both the CAS role and Mailbox role where the mailbox server is a member of a DAG is the same as detailed in my original article located <a href="http://www.telnetport25.com/2011/11/apply-roll-up-to-exchange-2010-sp1-and-above-encapsulation-tool/" target="_blank">here</a>, however you now also have the following option if it applies to you:</p>
<p>From within the &ldquo;<strong><em>Advanced Menu</em></strong>&rdquo; (which was added in the <a href="http://www.telnetport25.com/2011/11/update-to-the-rups-tool-apply-roll-ups-to-exchange-2010/" target="_blank">last update</a>) &ndash; you will see a new menu entitled &ldquo;<strong><em>Custom Powershell &ndash; for Service Packs</em></strong>&rdquo; &ndash; see below</p>
<p><img alt="rupsSP001" border="0" height="147" src="http://www.telnetport25.com/wp-content/uploads/2011/12/rupsSP001.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="rupsSP001" width="536" /></p>
<p>In the command box you can enter in the Powershell commands that you wish to execute and then click on the &ldquo;<strong><em>Add</em></strong>&rdquo; button &ndash; see below</p>
<p><img alt="rupsSP002" border="0" height="390" src="http://www.telnetport25.com/wp-content/uploads/2011/12/rupsSP002.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="rupsSP002" width="616" /></p>
<p>Each command will be added to the script window (<em>you can enter commands directly into the script window should you wish &ndash; remember each command needs to be on its own line</em>), when you have finished entering in commands click on the &ldquo;<strong><em>Execute</em></strong>&rdquo; button, the results of the script will be displayed in the &ldquo;<strong><em>Output</em></strong>&rdquo; window &ndash; see below</p>
<p><img alt="rupsSP003" border="0" height="390" src="http://www.telnetport25.com/wp-content/uploads/2011/12/rupsSP003.jpg" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="rupsSP003" width="618" /></p>
<p>You can then return to the main application window and proceed with the installation of the Service pack in the same way that you would for a Roll-Up.</p>
<h2>Download</h2>
<p>As before the new version of my tool supersedes all previous versions and is available below.</p>
<p><img alt="UMSSetupIcon" border="0" height="58" src="http://www.telnetport25.com/wp-content/uploads/2012/01/UMSSetupIcon.jpg" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="UMSSetupIcon" width="58" /> [ <a href="http://www.telnetport25.com/downloads/applications/rups/setupUMS.msi" target="_blank"><font color="#2361a1">Exchange 2010 Update Management System &ndash; v1.5 &ndash; 1.3MB</font></a> ]</p>
<div class="shr-publisher-920"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fupdated-version-of-the-rups-toolinstalling-service-packs%2F' data-shr_title='Updated+version+of+the+RUPS+Tool%26ndash%3BInstalling+Service+Packs%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/updated-version-of-the-rups-toolinstalling-service-packs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>For the love of Exchange&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/for-the-love-of-exchange/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=for-the-love-of-exchange</link>
		<comments>http://www.telnetport25.com/2011/12/for-the-love-of-exchange/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 11:05:53 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[General Mumblings]]></category>
		<category><![CDATA[Banyan Vines]]></category>
		<category><![CDATA[Beyond Mail]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Exchange Server]]></category>
		<category><![CDATA[Office Power]]></category>
		<category><![CDATA[Why do I love Exchange Server?]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/?p=541</guid>
		<description><![CDATA[Someone asked me a little while back why I love Exchange so much. This was an interesting question, as even though I have worked with Exchange for many years &#8211; I had not really considered why I like it so much as a product until that point in time – or indeed that I really [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Someone asked me a little while back why I love Exchange so much.</p>
<p>This was an interesting question, as even though I have worked with Exchange for many years &#8211; I had not really considered why I like it so much as a product until that point in time – or indeed that I really “loved it” more than any other software or hardware that I have worked with (Microsoft or otherwise) – in my own minds eye I had merely considered it to be “just something that worked” – or “something that made sense”.</p>
<p>I have been reflecting on the question for quite sometime now (<em>honestly I do have some form of life – but my boss has been encouraging me to be more spiritually reflective on questions which resonate with me</em>), therefore I decided to try to answer the question as a blog post.</p>
<p>I will warn you all in advance that this post will be a ramble, and go on a bit – as a trip down memory lane (<em>well for me anyhow</em>) &#8211; so really this is an “<strong><em>interest</em></strong>” piece for folks – rather than something that is going to help you fix a technical problem or revolutionise your career.</p>
<p>For me it all started back to about 1997 when my career really started moving (<em>I can hear some of you snoring already!</em>) &#8211; I was not (<em>at the time</em>) the biggest fan of e-Mail – in fact I hated it! My main experiences had been based around POP3, IMAP, and SMTP based on Apple Mac clients with no formal mail server or distribution point on site.</p>
<p>The entire setup was based around local storage of mail items and given that the primary technology was Apple based – the client was not even as advanced as Schedule + was at the time.</p>
<p>I messed around with e-mail (and the legacy protocols) in that job for two years – and unsurprisingly the uptake of e-mail as an effective communications mechanism within the company was very low (there were only about 10 mailboxes for a staff ratio of about 100) – and those 10 mailboxes caused me no end of grief.</p>
<p>The mail accounts were hosted by BT Campus World (<em>wow ~ anyone in the UK remember them?</em>) and the client was something to do with Mozilla and Netscape navigator (<em>it’s all very hazy now – I drank a lot of beer – and went to some wild parties so remembering the actual e-mail client was not high on my list of memorable moments</em>), however despite my lack of enthusiasm – I would admit that it gave me a good understanding of the principles of e-mail and the protocols that were used to send and receive.</p>
<p>Anyhow, after two years I moved jobs to a much bigger organisation (<em>around 1999</em>). The team that I joined was to say the least in a state of flux and the mail administrator had shall we say “left under a cloud”&#160; &#8211; I remember being asked “<strong><em>Have you done anything with e-Mail?</em></strong>”</p>
<p>Foolishly I said – “<strong><em>yeah, sure</em></strong>” (<em>eager to impress</em>) – to which the reply was – “oh good, over in that dark corner is the ‘mail system’ and your the new admin”. So I bumbled over to the ‘Dark Corner’ and was presented with MSMail!!.</p>
<p>The setup was a core MSMail post office supporting around 360 users – where the “<strong><em>data store</em></strong>” (<em>using the term very loosely</em>) was located on a Old Mitsubishi Shogun server running Novell Netware 3.12 – below, purely for nostalgia is a photo of myself and a very good mate of mine “administering” the “Shogun” [ <strong><em>notice the ruler being used on the keyboard</em></strong> ]-</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 8px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="ModdyAG-Mits" border="0" alt="ModdyAG-Mits" src="http://www.telnetport25.com/wp-content/uploads/2011/12/ModdyAG-Mits1.jpg" width="570" height="382" /></p>
<p>Anyhow – connecting into this primary MSMail post office were a number of MSMail gateways (<em>15 if I recall correctly</em>) which via Modem links (<em>a full 56K!</em>) would accept connections from a further 15 MSMail post offices which were spread around the geographic area.</p>
<p>It was at this point that I learned that if I thought that my experiences of e-mail administration had been painful up until that point – they were about to get worse. I spent the better part of a further two years supporting that MSMail infrastructure (<em>along with Novell in general</em>) travelling the area (around 30 square miles via bus) kicking the system into life as failures were common – <em>very common</em>.</p>
<p>It was inevitable that the decision was taken that Novell and MSMail were not really the way forward and after some very short deliberation we decided that Exchange 5.5 was the way to go (<em>we were already using Schedule + and some Outlook across the estate and we were moving from Novell to Windows NT 4</em>).</p>
<p>This I suppose was really the first time where you could say that “Andy met <strike><strong>Sally</strong></strike> – erm Exchange”.</p>
<p>I was assigned to a two person team (myself and a fabulous chap called <a href="http://www.linkedin.com/in/lurnid" target="_blank">Mahmoud Abu-Wardeh</a> – <em>pictured above</em>) where we were tasked with migrating the 360 users from MSMail (<em>yes those pesky fecking post offices were going to die</em>) to Exchange 5.5.</p>
<p>At this time, it would be fair to say that Mahmoud was the “<strong><em>brains</em></strong>” behind the migration – or these days I prefer to think of him as more of a technical mentor. However through this process I found a bit of a niche in developing OWA for Exchange 5.5 beyond that of its original capabilities (<em>I wrote a neat little set of ASP pages that replicated the Outlook Global Address List picker as well as customising the whole “look and feel” to suite the organisations branding</em>).</p>
<p>As the project took shape I aided Mahmoud with the migration, but took lead on the development of a number of tools (<em>using Borland Delphi and Object Pascal</em>) which facilitated the mass creation of Windows NT accounts (<em>Shares, NTFS permissions, Logon Scripts, Profiles etc.</em>), as well as the aforementioned customisation of OWA for Exchange 5.5.</p>
<p>I obviously paid a bit of attention to the architectural side of Exchange, as after Mahmoud left (<em>he was a contractor at the time</em>) – I had to DR the Exchange installation a few times onto new hardware, as well as perform the usual housekeeping stuff such as Exchange and NT Service Packs.</p>
<p>As the years went on, an interesting offshoot to this project that came up – as mentioned, Mahmoud and I worked for one department within a company of over 4000 users (at the time). Each department had its own IT team, and IT systems (including mail) – the repercussions of which were that one person could not e-mail another person internally between departments.</p>
<p>There was no real company “Global Address List” or SMTP internet connectivity&#160; – as other departments were using technologies like Beyond Mail (Banyan Vines), Office Power, Exchange 5.5 or MS Mail!</p>
<p>To cut a long story short story (which involved more drink, women and mad nipple tweaking South Africans whom piss on their own washing <em>long story</em> – <strong><em>see below</em></strong>)</p>
<p><a href="http://www.telnetport25.com/wp-content/uploads/2011/12/theSaf.jpg"><img style="background-image: none; border-right-width: 0px; margin: 8px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="theSaf" border="0" alt="The Safa" align="left" src="http://www.telnetport25.com/wp-content/uploads/2011/12/theSaf_thumb.jpg" width="166" height="500" /></a></p>
<p>In 2001 the company had decided that it wanted to centralise its IT function from 5 separate IT departments and systems – into one.</p>
<p>&#160;</p>
<p>This meant that I had to apply for a new role, and I came out the other side as the Infrastructure Manager (pseudo CTO) – and was immediately handed the job of centralising the disparate mail systems and authentication domains into one unified platform.</p>
<p>Having come from a Microsoft background via the migrations from Novell to NT4, and indeed seeing what to me looked like the decline of other vendors (<em>such as Bayan Vines and Novell</em>) products – the natural way forward was to build a centralised infrastructure based upon Active Directory and Exchange Server 2000.</p>
<p>I thought about this proposition for quite a while reading numerous whitepapers and bought a suit (well a shirt and tie) – see below (<em>god I had black hair!!!!</em>)</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DSCF0002" border="0" alt="Me at my desk - back in the day!" src="http://www.telnetport25.com/wp-content/uploads/2011/12/DSCF0002.png" width="220" height="283" /></p>
<p>The task of unifying the company systems presented me with a unique set of challenges, the desperate infrastructures were not necessarily orientated for co-existence – but part of the remit that I had been given was to maintain services throughout the migration process.</p>
<p>As mentioned in the mix I had Banyan Vines (running Beyond Mail), AIX (running Office Power), two lots of NT4 (running two separate Exchange 5.5 installations) – so as you can imagine the logistics of getting all of those platforms (including users, shared files, mail items, printers, permissions etc) onto a central, unified directory and mail infrastructure and keep it seamless was going to be difficult.</p>
<p>Again cutting a <em>very</em> long story short (<em>as the actual details of what I did in the end to get these systems all into one place, would take forever to explain</em>) needless to say, 6 months later the project was completed (<em>on time and to budget</em>) – the key thing that I had discovered during the migrations was how versatile and configurable both Exchange (2000) and Active Directory were even at that stage of their development.<img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="P1010041" border="0" alt="New Exchange 2000 Servers ~ Circa 2001" align="right" src="http://www.telnetport25.com/wp-content/uploads/2011/12/P1010041.jpg" width="225" height="300" /></p>
<p>When I say configurable, I mean it was amazing what you could accomplish by understanding the schema and associated ADSI properties of objects in AD and then apply a little scripting knowledge.</p>
<p>I was also in complete awe of how powerful both products were, in particular Exchange 2000 as through its feature set I was able to bring to the business not only a state of the art and resilient mail infrastructure, but added benefits such as really usable web client (<em>in comparison to OWA in 5.5</em>).</p>
<p>The whole product just oozed scalability and at the time it seemed that I would learn something new and cool every day; as I lavished loads of attention on the entire environment.</p>
<p>As the years passed, Exchange upgrades came into the mix, I took the environment from 2000 (both AD and Exchange to 2003) and eventually, just before I left the company in 2010 Exchange 2007 (<em>based on a full CCR implementation</em>).</p>
<p>What continued to strike me as the versions developed was how well the product evolved to provide more “killer” features to the business and to the admins – for example;</p>
<h2>Between Exchange 2000 – 2003</h2>
<ul>
<li><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMGP0273" border="0" alt="IMGP0273" align="left" src="http://www.telnetport25.com/wp-content/uploads/2011/12/IMGP0273.jpg" width="300" height="225" />Improved and usable clustering capability (without requiring a PhD in particle physics) </li>
<li>Workable and integrated implementation of Active Sync </li>
<li>Much improved OWA experience </li>
<li>Better Management Tools </li>
<li>Larger Database sizes for the Standard edition </li>
</ul>
<p>The whole product set was growing up.&#160; It was around 2005 that I decided that I wanted to begin to write about my experiences with Exchange as well as participate more in the online forums; passing on what knowledge that I had – it was at this point where I completely fell for Exchange Server.</p>
<p>The Exchange community is one of the most vibrant a giving on the web, and for want of a better term an entire online nation of people whom I could learn from, share tips with and get a better understanding of the entire product. Sites like <a href="http://www.msexchange.org/" target="_blank">MSExchange.org</a> and the <a href="http://msexchangeteam.com/" target="_blank">Microsoft Exchange product team blog</a> were (and still are) required reading.</p>
<p>It also amazed me that via the Exchange Team’s blog, you could actually enter into dialog with the development team on a 1-1 basis. It did not matter if you were an MVP, MCM, MCP, MCSE etc. they would speak with you directly to get your feedback.</p>
<p>In around 2005 I started <strong><u>telnetport25.blogspot.com</u></strong> (<em>now defunct</em>) which was my first foray into blogging about anything, but I saw it as a natural extension to my participation in the technical community – and it gave me a voice where I could share my own thoughts, experiences in my own words. The idea of blogspot evolved through to telnetport25.wordpress.com (also now defunct) to what it is today <a href="http://www.telnetport25.com">www.telnetport25.com</a> .</p>
<p>In 2009 the community bestowed the distinct honour of becoming an Exchange MVP, where I was re-awarded for the 2010 and 2011 cycles.</p>
<p>In the 14 years that I have been working with E-mail it has become an absolutely essential part of almost all organisations and is a very long way from the 10 accounts that I was in charge of in 1997.</p>
<p>I have now worked on Exchange and Directory implementations of between 5000 – 15,000 seats as well as advised on the architectural side of implementations totalling hundreds of thousands of users, and what never ceases to amaze me is the amount that I still learn every day – not just from the product, but from other people whom are as enthusiastic as I am.</p>
<p><strong><em>So, to finish – why do I love Exchange Server?</em></strong></p>
<p>I guess it is because I will never be a master of it, I will always be learning something new – and the way that I do something today, will be different to how I do the same task in 4 months time!. I get to learn from others, and get a grasp of new technologies as they come along.</p>
<p>For example; these days if you are an Exchange admin at any level – you don’t just need to understand Exchange itself – you need to know about Active Directory, Powershell, DNS, IP, SMTP, POP3, IMAP, Telephony, Routing, SAN’s, RAID, Legal Compliance, Effective Systems monitoring – I could go on.</p>
<p>The key point is, that Exchange makes you learn and evolve in your career and by definition does not allow you as a technical professional to become ‘pigeon holed’ in one technology.</p>
<div class="shr-publisher-541"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Ffor-the-love-of-exchange%2F' data-shr_title='For+the+love+of+Exchange%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/for-the-love-of-exchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update to my create LAB users Powershell Script&#8211;Multiple Domains and 500 more users!&#8230;</title>
		<link>http://www.telnetport25.com/2011/12/update-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users</link>
		<comments>http://www.telnetport25.com/2011/12/update-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 10:23:33 +0000</pubDate>
		<dc:creator>Andy Grogan</dc:creator>
				<category><![CDATA[Exchange 2007 Scripts]]></category>
		<category><![CDATA[Exchange 2010 (LAB)]]></category>
		<category><![CDATA[Exchange 2010 Scripts]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Test Labs]]></category>
		<category><![CDATA[Create Lab Users]]></category>
		<category><![CDATA[CSV Files]]></category>
		<category><![CDATA[Exchange 2007]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[Lab users]]></category>

		<guid isPermaLink="false">http://www.telnetport25.com/2011/12/update-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users/</guid>
		<description><![CDATA[I have been making some modifications to my home lab over the last few days, one key change has been to add in a child domain so that I can test Exchange related scenarios in a multi-domain environment. Naturally, once I had created the child domain, I wanted to populate it with some users – [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>I have been making some modifications to my home lab over the last few days, one key change has been to add in a child domain so that I can test Exchange related scenarios in a multi-domain environment.</p>
<p>Naturally, once I had created the child domain, I wanted to populate it with some users – so out came my <a href="http://www.telnetport25.com/2009/12/quick-post-%e2%80%93-script-to-create-lab-users-%e2%80%93-powershell-version%e2%80%a6/" target="_blank">Powershell Lab users script</a> – with a new CSV file with over 500 unique names within it for the domain.</p>
<p>I executed the script against my new child domain, and it was at this point where I discovered a flaw in the original code logic.</p>
<p>The original script detected the Active Directory domain using the following lines of code:</p>
<pre style="width: 699px; height: 57px" class="code"><span style="color: purple">$domain </span><span style="color: red">= </span><span style="color: black">[</span><span style="color: teal">System.DirectoryServices.ActiveDirectory.Forest</span><span style="color: black">]::</span><span style="color: rgb(139,69,19)">GetCurrentForest</span><span style="color: black">()
</span><span style="color: purple">$DomainDN </span><span style="color: red">= </span><span style="color: black">(([</span><span style="color: teal">System.DirectoryServices.ActiveDirectory.Forest</span><span style="color: black">]::</span><span style="color: rgb(139,69,19)">GetCurrentForest</span><span style="color: black">()).Domains | ? {</span><span style="color: purple">$_</span><span style="color: black">.Name </span><span style="color: red">-eq </span><span style="color: purple">$domain</span><span style="color: black">}).GetDirectoryEntry().distinguishedName</span></pre>
<p>Which is OK if you are using a single domain and forest, however – if you have a multiple Parent / Child domain configuration and execute the script in the child domain – all the accounts are created in the Parent as the lines above will only detect Parent Domain in the Forest.</p>
<p>Therefore I changed the above lines to the following;</p>
<pre style="width: 699px; height: 64px" class="code"><span style="color: purple">$domain </span><span style="color: red">= </span><span style="color: black">[</span><span style="color: teal">System.DirectoryServices.ActiveDirectory.Domain</span><span style="color: black">]::</span><span style="color: rgb(139,69,19)">GetComputerDomain</span><span style="color: black">()
</span><span style="color: purple">$DomainDN </span><span style="color: red">= </span><span style="color: black">(([</span><span style="color: teal">System.DirectoryServices.ActiveDirectory.Forest</span><span style="color: black">]::</span><span style="color: rgb(139,69,19)">GetCurrentForest</span><span style="color: black">()).Domains | ? {</span><span style="color: purple">$_</span><span style="color: black">.Name </span><span style="color: red">-eq </span><span style="color: purple">$domain</span><span style="color: black">}).GetDirectoryEntry().distinguishedName</span></pre>
<p>The changes above change the scope of the of the Active Directory lookup to the Active Directory domain which the local computer is a member of.</p>
<p>The script can now be executed from within any domain (either parent or child), and will create accounts correctly.</p>
<h2>Usage</h2>
<p>Please refer to the original article here for instructions: <a title="http://www.telnetport25.com/2009/12/quick-post-%e2%80%93-script-to-create-lab-users-%e2%80%93-powershell-version%e2%80%a6/" href="http://www.telnetport25.com/2009/12/quick-post-%e2%80%93-script-to-create-lab-users-%e2%80%93-powershell-version%e2%80%a6/">http://www.telnetport25.com/2009/12/quick-post-%e2%80%93-script-to-create-lab-users-%e2%80%93-powershell-version%e2%80%a6/</a></p>
<h2>Download</h2>
<p>You can download the script from the following location – the Self-Extracting file contains the updated Powershell Script file and two sample CSV files which have over 800 user names. I have separated the user accounts into two files in case you have a number of domains (and you obviously would not want the same user accounts in each domain!)</p>
<p><img alt="ESEUtilGUIIco" src="http://www.telnetport25.com/images/stories/legimages/ESEUtilGUIIco.jpg" width="54" height="54" /><a href="http://www.telnetport25.com/downloads/scripts/Create-Users.exe"><strong>Create-Users.exe [ 150KB ]</strong></a></p>
<div class="shr-publisher-900"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.telnetport25.com%2F2011%2F12%2Fupdate-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users%2F' data-shr_title='Update+to+my+create+LAB+users+Powershell+Script%26ndash%3BMultiple+Domains+and+500+more+users%21%26hellip%3B'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.telnetport25.com/2011/12/update-to-my-create-lab-users-powershell-scriptmultiple-domains-and-500-more-users/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

