<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Steve Goodman's Tech Blog - The weblog of an IT pro specialising in Exchange, Exchange, VMware, Servers and Storage</title>
	
	<link>http://www.stevieg.org</link>
	<description>Exchange, VMware, Servers and Storage News, Hints and Tips</description>
	<lastBuildDate>Tue, 27 Jul 2010 10:36:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/stevieg" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="stevieg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Using Powershell to import contacts into Exchange and Outlook Live</title>
		<link>http://www.stevieg.org/2010/07/using-powershell-to-import-contacts-into-exchange-and-outlook-live/</link>
		<comments>http://www.stevieg.org/2010/07/using-powershell-to-import-contacts-into-exchange-and-outlook-live/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 21:56:29 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[EWS]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Outlook Live]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Exchange2010]]></category>
		<category><![CDATA[exchangeserver2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/?p=336</guid>
		<description><![CDATA[
			
				
			
		
When performing migrations between different systems, there’s always the case where the tools available don’t do the job out of the box – and although IMAP migration tools for Exchange and Outlook Live can be great for moving mail, there isn’t a decent free solution for importing contacts.
For a recent migration from a Unix system [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fusing-powershell-to-import-contacts-into-exchange-and-outlook-live%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fusing-powershell-to-import-contacts-into-exchange-and-outlook-live%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=EWS,Exchange2010,exchangeserver2010,Powershell" height="61" width="50" /><br />
			</a>
		</div>
<p>When performing migrations between different systems, there’s always the case where the tools available don’t do the job out of the box – and although IMAP migration tools for Exchange and Outlook Live can be great for moving mail, there isn’t a decent free solution for importing contacts.</p>
<p>For a recent migration from a Unix system (Dovecot + SquirrelMail) to Outlook Live, I came across this very scenario. While Microsoft provide IMAP migration tools to move mail to Outlook Live (which I was lucky enough to beta test before it was widely available), no tools are provided to move other data such as contacts and calendars.</p>
<p>While this isn’t the actual code I used (I wrote my original code in C#), I’ve re-visited what I’ve done and listened to what others say they need. What I’ve heard is it would be useful to have some Powershell code that out-of-the box can import contacts into any Exchange mailbox. The reason that Powershell is the right language for code like this is that it’s fairly easy for the enterprising administrator to modify to their needs.</p>
<h5>Getting started</h5>
<p>Before you can run this script, there are a few things you need to set up first. Don’t worry though! It’s nothing too onerous – all is needed to get going is two things:</p>
<ol>
<li>Setup of EWS  impersonation, unless you only want to work with accounts you know the username/password for.</li>
<li>Installing the Managed API DLL onto your computer.</li>
</ol>
<p><strong>Setup of Exchange Web Services Impersonation<br />
</strong>Exchange Web Services is the programmatic interface to each user’s Exchange mailbox. Most actions that can be performed in Outlook can be performed via EWS – so much so, in fact, that Apple’s <a href="http://images.apple.com/macosx/exchange/docs/MacOSXSL_Exchange.pdf">Mail.app</a> in Snow Leopard and the <a href="http://www.microsoft.com/mac/itpros/entourage-ews.mspx">latest update</a> for Entourage 2008 use EWS as the backend for the mail clients themselves.</p>
<p>If you’re planning on doing a mass-import of contacts, or don’t know the user’s password you’re importing, then setup of EWS impersonation is the step you need to take to allow a trusted account to switch to the user you want to import.</p>
<p>In Exchange 2010, setup of Exchange impersonation is managed via <a href="http://msexchangeteam.com/archive/2009/11/16/453222.aspx" target="_blank">RBAC</a>. Full details of how to setup impersonal are <a href="http://msdn.microsoft.com/en-us/library/bb204095.aspx" target="_blank">on the Microsoft site</a>, but if you just want to get it setup for a single admin/service account, org-wide, use the following command substituing <em>serviceaccount</em> for your service account:</p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">New<span style="color: pink;">-</span>ManagementRoleAssignment <span style="color: #008080; font-style: italic;">-Name</span>:impersonationAssignmentName <span style="color: #008080; font-style: italic;">-Role</span>:ApplicationImpersonation <span style="color: pink;">-</span>User:serviceaccount</div></div>
<p>On Exchange 2007, it’s very different, and is managed by AD permissions on individual Client Access Servers. Again – <a href="http://msdn.microsoft.com/en-us/library/bb204095%28EXCHG.80%29.aspx" target="_blank">full details on the Microsoft site</a>, but to add the permission to all CAS servers, the following code will suffice, again substituting <em>serviceaccount </em>for your Service account:</p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Get<span style="color: pink;">-</span>ExchangeServer <span style="color: pink;">|</span> <span style="color: #0000FF;">where</span> <span style="color: #000000;">&#123;</span><a href="about:blank"><span style="color: #000080;">$_</span></a>.IsClientAccessServer <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$TRUE</span><span style="color: #000000;">&#125;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">ForEach-Object</span> <span style="color: #000000;">&#123;</span>Add<span style="color: pink;">-</span>ADPermission <span style="color: pink;">-</span>Identity <a href="about:blank"><span style="color: #000080;">$_</span></a>.distinguishedname <span style="color: pink;">-</span>User <span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>User <span style="color: pink;">-</span>Identity serviceaccount<span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">select-object</span><span style="color: #000000;">&#41;</span>.identity <span style="color: pink;">-</span>extendedRight ms<span style="color: pink;">-</span>Exch<span style="color: pink;">-</span>EPI<span style="color: pink;">-</span>Impersonation<span style="color: #000000;">&#125;</span></div></div>
<p><strong></strong></p>
<p><strong>Installing the Exchange Web Services Managed API</strong><br />
Next, whatever environment you are in, you need a copy of the DLL file that provides the bits and pieces that make this all work. The easiest way to get up and running is to download the API (choosing the right version for your platform), and install it to it’s default location.</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=C3342FB3-FBCC-4127-BECF-872C746840E1&amp;amp;displaylang=en&amp;displaylang=en" target="_blank">Download the EWS Managed API from the Microsoft site</a></p>
<p>Once downloaded and installed, you should be good to go with script.</p>
<h5>Using the script <em>Import-MailboxContacts.ps1</em></h5>
<p>So, you’ve got impersonation setup if needed, got the EWS DLL on your machine. You should be good to go!</p>
<p>For each mailbox you want to import contacts from you need a separate CSV file. The format of the file is intentionally the same as Outlook will export in, mainly because a lot of apps already export in the format (Gmail does, for example) so you should find it easy to get test data, but if you haven’t I’ve included a sample file to get you started.</p>
<p>Along with the data, you also need, at a minimum, the mailbox email address to import to. This is used when impersonating, and for Autodiscover. If you’re not logged on as the user you want to use for the import, you can specify a username and password. Additionally, there’s a variety of options to specify the EWS Url manually, switching to the Exchange 2007 version of the API etc.</p>
<p><strong>Examples</strong></p>
<p>The first example is a straightforward import into the current logged-on user’s mailbox. We’re specifying the Email Address and the URL to EWS (to bypass Autodiscover):</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image66.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb47.png" border="0" alt="image" width="704" height="80" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">.\Import<span style="color: pink;">-</span>MailboxContacts.ps1 <span style="color: pink;">-</span>CSVFileName .\Contacts.csv <span style="color: pink;">-</span>EmailAddress steve<span style="color: pink;">@</span>goodman.net <span style="color: pink;">-</span>EwsUrl https:<span style="color: pink;">//</span>server<span style="color: pink;">/</span>EWS<span style="color: pink;">/</span>Exchange.asmx</div></div>
<p>As you can see in the above example – it’s all fairly straightforward. You’ll also see the output shows the contacts that have been created – you can use standard Powershell pipeling to export this data, pipe it to another command or filter it.</p>
<p>The second example is slightly more complicated, and reflects the main use case. We’re connecting to a remote exchange organisation, using Autodiscover to find the EWS address, enabling impersonation and providing credentials at the command line:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image67.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb48.png" border="0" alt="image" width="704" height="74" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">.\Import<span style="color: pink;">-</span>MailboxContacts.ps1 <span style="color: pink;">-</span>CSVFileName .\Contacts.csv –EmailAddress steve<span style="color: pink;">@</span>contoso.com <span style="color: pink;">-</span>Impersonate <span style="color: #800080;">$true</span> <span style="color: pink;">-</span>Username serviceaccount <span style="color: pink;">-</span>Password password <span style="color: pink;">-</span>Domain contoso</div></div>
<p>In addition to the options above, you can also specify the parameters -Exchange2007 $true and use -EWSManagedApiDLLFilePath to specify a different path the the EWS DLL.</p>
<p><strong>Powershell Code</strong></p>
<p>Finally, you’ll need a copy of the code to do all this. At the bottom of the post you’ll find a ZIP file containing the Import-MailboxContacts.ps1 file and a sample CSV file, and below you’ll see the code itself. Happy importing!</p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br /></div></td><td><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">param</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$CSVFileName</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$EmailAddress</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$Username</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$Password</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$Domain</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">bool</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$Impersonate</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$EwsUrl</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$EWSManagedApiDLLFilePath</span><span style="color: pink;">,</span><span style="color: #000000;">&#91;</span><span style="color: #008080;">bool</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$Exchange2007</span><span style="color: #000000;">&#41;</span>;<br />
<br />
<span style="color: #008000;">#</span><br />
<span style="color: #008000;"># Import-MailboxContacts.ps1</span><br />
<span style="color: #008000;">#</span><br />
<span style="color: #008000;"># By Steve Goodman, Use at your own risk.</span><br />
<span style="color: #008000;">#</span><br />
<span style="color: #008000;"># Parameters</span><br />
<span style="color: #008000;"># &nbsp;Mandatory:</span><br />
<span style="color: #008000;"># -CSVFileName : Filename of the CSV file to import contacts for this user from. Same format as Outlook Export.</span><br />
<span style="color: #008000;"># -EmailAddress : Account SMTP email address. Required, but only used when impersonating or with Autodiscover - otherwise uses the user you login as</span><br />
<span style="color: #008000;"># &nbsp;Optional:</span><br />
<span style="color: #008000;"># -Impersonate : Set to $true to use impersonation.</span><br />
<span style="color: #008000;"># -Username : The username to use. If this isn't specified (along with Password), attempts to use the logged on user.</span><br />
<span style="color: #008000;"># -Password : Used with above</span><br />
<span style="color: #008000;"># -Domain : Used with above - optional.</span><br />
<span style="color: #008000;"># -EwsUrl : The URL for EWS if you don't want to use Autodiscover. Typically https://casserver/EWS/Exchange.asmx</span><br />
<span style="color: #008000;"># -EWSManagedApiDLLFilePath : (Optional) Overwrite the filename and path to the DLL for EWS Managed API. By default, uses the default install location.</span><br />
<span style="color: #008000;"># -Exchange2007 : Set to $true to use the Exchange 2007 SP1+ version of the Managed API.</span><br />
<span style="color: #008000;">#</span><br />
<br />
<span style="color: #008000;"># Contact Mapping - this maps the attributes in the CSV file (left) to the attributes EWS uses.</span><br />
<span style="color: #008000;"># NB: If you change these, please note &quot;First Name&quot; is specified at line 102 as a required attribute and</span><br />
<span style="color: #008000;"># &quot;First Name&quot; and &quot;Last Name&quot; are hard coded at lines 187-197 when constructing NickName and FileAs.</span><br />
<span style="color: #800080;">$ContactMapping</span><span style="color: pink;">=@</span><span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;First Name&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;GivenName&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Middle Name&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;MiddleName&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Last Name&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Surname&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Company&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;CompanyName&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Department&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Department&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Job Title&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;JobTitle&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Street&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Business:Street&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business City&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Business:City&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business State&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Business:State&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Postal Code&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Business:PostalCode&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Country/Region&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Business:CountryOrRegion&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Street&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Home:Street&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home City&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Home:City&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home State&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Home:State&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Postal Code&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Other:Home:PostalCode&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Country/Region&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Home:CountryOrRegion&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other Street&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Other:Street&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other City&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Other:City&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other State&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Other:State&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other Postal Code&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Other:PostalCode&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other Country/Region&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Address:Other:CountryOrRegion&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Assistant's Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:AssistantPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Fax&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:BusinessFax&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:BusinessPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Business Phone 2&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:BusinessPhone2&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Callback&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:CallBack&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Car Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:CarPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Company Main Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:CompanyMainPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Fax&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:HomeFax&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:HomePhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Home Phone 2&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:HomePhone2&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;ISDN&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:ISDN&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Mobile Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:MobilePhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other Fax&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:OtherFax&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Other Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:OtherTelephone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Pager&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:Pager&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Primary Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:PrimaryPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Radio Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:RadioPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;TTY/TDD Phone&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:TtyTddPhone&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Telex&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Phone:Telex&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Anniversary&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;WeddingAnniversary&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Birthday&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Birthday&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;E-mail Address&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Email:EmailAddress1&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;E-mail 2 Address&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Email:EmailAddress2&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;E-mail 3 Address&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Email:EmailAddress3&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Initials&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Initials&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Office Location&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;OfficeLocation&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Manager's Name&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Manager&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Mileage&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Mileage&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Notes&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Body&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Profession&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Profession&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Spouse&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;SpouseName&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Web Page&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;BusinessHomePage&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #800000;">&quot;Contact Picture File&quot;</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Method:SetContactPicture&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># CSV File Checks</span><br />
<span style="color: #008000;"># Check filename is specified</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$CSVFileName</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Parameter CSVFileName must be specified&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Check file exists</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Get-Item</span> <span style="color: #008080; font-style: italic;">-Path</span> <span style="color: #800080;">$CSVFileName</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Please provide a valid filename for parameter CSVFileName&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Check file has required fields and check if is a single row, or multiple rows</span><br />
<span style="color: #800080;">$SingleItem</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span>;<br />
<span style="color: #800080;">$CSVFile</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">Import-Csv</span> <span style="color: #008080; font-style: italic;">-Path</span> <span style="color: #800080;">$CSVFileName</span>;<br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$CSVFile</span>.<span style="color: #800000;">&quot;First Name&quot;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$SingleItem</span> <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>;<br />
<span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$CSVFile</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #800000;">&quot;First Name&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;File $($CSVFileName) must specify at least the field 'First Name'&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Check email address</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$EmailAddress</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Parameter EmailAddress must be specified&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$EmailAddress</span>.Contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;@&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Parameter EmailAddress does not appear valid&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Check EWS Managed API available</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$EWSManagedApiDLLFilePath</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$EWSManagedApiDLLFilePath</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;C:\Program Files\Microsoft\Exchange\Web Services\1.0\Microsoft.Exchange.WebServices.dll&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Get-Item</span> <span style="color: #008080; font-style: italic;">-Path</span> <span style="color: #800080;">$EWSManagedApiDLLFilePath</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;EWS Managed API not found at $($EWSManagedApiDLLFilePath). Download from http://bit.ly/9O7gLo&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Load EWS Managed API</span><br />
<span style="color: #000000;">&#91;</span>void<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>Reflection.Assembly<span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadFile</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;C:\Program Files\Microsoft\Exchange\Web Services\1.0\Microsoft.Exchange.WebServices.dll&quot;</span><span style="color: #000000;">&#41;</span>;<br />
<br />
<span style="color: #008000;"># Create Service Object</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Exchange2007</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$service</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.ExchangeService<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.ExchangeVersion<span style="color: #000000;">&#93;</span>::Exchange2007_SP1<span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$service</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.ExchangeService<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.ExchangeVersion<span style="color: #000000;">&#93;</span>::Exchange2010<span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #008000;"># Set credentials if specified, or use logged on user.</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Username</span> <span style="color: #FF0000;">-and</span> <span style="color: #800080;">$Password</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Domain</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$service</span>.Credentials <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> &nbsp;Microsoft.Exchange.WebServices.Data.WebCredentials<span style="color: #000000;">&#40;</span><span style="color: #800080;">$Username</span><span style="color: pink;">,</span><span style="color: #800080;">$Password</span><span style="color: pink;">,</span><span style="color: #800080;">$Domain</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$service</span>.Credentials <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> &nbsp;Microsoft.Exchange.WebServices.Data.WebCredentials<span style="color: #000000;">&#40;</span><span style="color: #800080;">$Username</span><span style="color: pink;">,</span><span style="color: #800080;">$Password</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; <br />
<span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$service</span>.UseDefaultCredentials <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<br />
<span style="color: #008000;"># Set EWS URL if specified, or use autodiscover if no URL specified.</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$EwsUrl</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$service</span>.URL <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Uri<span style="color: #000000;">&#40;</span><span style="color: #800080;">$EwsUrl</span><span style="color: #000000;">&#41;</span>;<br />
<span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; try <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$service</span>.AutodiscoverUrl<span style="color: #000000;">&#40;</span><span style="color: #800080;">$EmailAddress</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> catch <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">throw</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Perform a test - try and get the default, well known contacts folder.</span><br />
<br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Impersonate</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$service</span>.ImpersonatedUserId <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.ImpersonatedUserId<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.ConnectingIdType<span style="color: #000000;">&#93;</span>::SmtpAddress<span style="color: pink;">,</span> <span style="color: #800080;">$EmailAddress</span><span style="color: #000000;">&#41;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
try <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$ContactsFolder</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.ContactsFolder<span style="color: #000000;">&#93;</span>::Bind<span style="color: #000000;">&#40;</span><span style="color: #800080;">$service</span><span style="color: pink;">,</span> <span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.WellKnownFolderName<span style="color: #000000;">&#93;</span>::Contacts<span style="color: #000000;">&#41;</span>;<br />
<span style="color: #000000;">&#125;</span> catch <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">throw</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Add contacts</span><br />
<span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$CSVFile</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #008000;"># If impersonate is specified, do so.</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Impersonate</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$service</span>.ImpersonatedUserId <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.ImpersonatedUserId<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.ConnectingIdType<span style="color: #000000;">&#93;</span>::SmtpAddress<span style="color: pink;">,</span> <span style="color: #800080;">$EmailAddress</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.Contact<span style="color: #000000;">&#40;</span><span style="color: #800080;">$service</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;First Name&quot;</span> <span style="color: #FF0000;">-and</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;Last Name&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.NickName <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;First Name&quot;</span> <span style="color: pink;">+</span> <span style="color: #800000;">&quot; &quot;</span> <span style="color: pink;">+</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;Last Name&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;First Name&quot;</span> <span style="color: #FF0000;">-and</span> <span style="color: pink;">!</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;Last Name&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.NickName <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;First Name&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;First Name&quot;</span> <span style="color: #FF0000;">-and</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;Last Name&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.NickName <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800000;">&quot;Last Name&quot;</span>;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.DisplayName <span style="color: pink;">=</span> <span style="color: #800080;">$ExchangeContact</span>.NickName;<br />
&nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.FileAs <span style="color: pink;">=</span> <span style="color: #800080;">$ExchangeContact</span>.NickName;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #800080;">$BusinessPhysicalAddressEntry</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry;<br />
&nbsp; &nbsp; <span style="color: #800080;">$HomePhysicalAddressEntry</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry;<br />
&nbsp; &nbsp; <span style="color: #800080;">$OtherPhysicalAddressEntry</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #008000;"># This uses the Contact Mapping above to save coding each and every field, one by one. Instead we look for a mapping and perform an action on</span><br />
&nbsp; &nbsp; <span style="color: #008000;"># what maps across. As some methods need more &quot;code&quot; a fake multi-dimensional array (seperated by :'s) is used where needed.</span><br />
&nbsp; &nbsp; <span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Key</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$ContactMapping</span>.Keys<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;"># Only do something if the key exists</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;"># Will this call a more complicated mapping?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactMapping</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$Key</span><span style="color: #000000;">&#93;</span> <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;*:*&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;"># Make an array using the : to split items.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$MappingArray</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactMapping</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$Key</span><span style="color: #000000;">&#93;</span>.Split<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;:&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;"># Do action</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">switch</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Email&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.EmailAddresses<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.EmailAddressKey<span style="color: #000000;">&#93;</span>::<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Phone&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.PhoneNumbers<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.PhoneNumberKey<span style="color: #000000;">&#93;</span>::<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Address&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">switch</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Business&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$BusinessPhysicalAddressEntry</span>.<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">2</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.PhysicalAddresses<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.PhysicalAddressKey<span style="color: #000000;">&#93;</span>::<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$BusinessPhysicalAddressEntry</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Home&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$HomePhysicalAddressEntry</span>.<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">2</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.PhysicalAddresses<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.PhysicalAddressKey<span style="color: #000000;">&#93;</span>::<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$HomePhysicalAddressEntry</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Other&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$OtherPhysicalAddressEntry</span>.<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">2</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.PhysicalAddresses<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.PhysicalAddressKey<span style="color: #000000;">&#93;</span>::<span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$OtherPhysicalAddressEntry</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;Method&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">switch</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$MappingArray</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800000;">&quot;SetContactPicture&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$Exchange2007</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Get-Item</span> <span style="color: #008080; font-style: italic;">-Path</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Contact Picture File not found at $($ContactItem.$Key)&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.SetContactPicture<span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;"># It's a direct mapping - simple!</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactMapping</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$Key</span><span style="color: #000000;">&#93;</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Birthday&quot;</span> <span style="color: #FF0000;">-or</span> <span style="color: #800080;">$ContactMapping</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$Key</span><span style="color: #000000;">&#93;</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;WeddingAnniversary&quot;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#91;</span>System.DateTime<span style="color: #000000;">&#93;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">Get-Date</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.<span style="color: #000000;">&#40;</span><span style="color: #800080;">$ContactMapping</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$Key</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ContactItem</span>.<span style="color: #800080;">$Key</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;"># Save the contact &nbsp; &nbsp;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$ExchangeContact</span>.Save<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #008000;"># Provide output that can be used on the pipeline</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> Object;<br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> NoteProperty FileAs <span style="color: #800080;">$ExchangeContact</span>.FileAs;<br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> NoteProperty GivenName <span style="color: #800080;">$ExchangeContact</span>.GivenName;<br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> NoteProperty Surname <span style="color: #800080;">$ExchangeContact</span>.Surname;<br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> NoteProperty EmailAddress1 <span style="color: #800080;">$ExchangeContact</span>.EmailAddresses<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#91;</span>Microsoft.Exchange.WebServices.Data.EmailAddressKey<span style="color: #000000;">&#93;</span>::EmailAddress1<span style="color: #000000;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #800080;">$Output_Object</span>;<br />
<span style="color: #000000;">&#125;</span></div></td></tr></tbody></table></div>
<p><a href="http://www.stevieg.org/downloads/Import-MailboxContacts.zip"><strong>Download as ZIP</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/07/using-powershell-to-import-contacts-into-exchange-and-outlook-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the Exchange 2010 SP1 Mailbox Export features for Mass Exports to PST files</title>
		<link>http://www.stevieg.org/2010/07/using-the-exchange-2010-sp1-mailbox-export-features-for-mass-exports-to-pst/</link>
		<comments>http://www.stevieg.org/2010/07/using-the-exchange-2010-sp1-mailbox-export-features-for-mass-exports-to-pst/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 20:26:09 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[Exchange2010]]></category>
		<category><![CDATA[exchangeserver2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/?p=307</guid>
		<description><![CDATA[
			
				
			
		
In Exchange 2007 SP1 thru to Exchange 2010 RTM, the Export-Mailbox command was the replacement for the once-familiar ExMerge utility when it came to exporting mailboxes to PST files.
The main problem with Export-Mailbox for most Exchange administrators is the requirement for Outlook – either on a 32-bit machine with Management Tools for Exchange 2007, or [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fusing-the-exchange-2010-sp1-mailbox-export-features-for-mass-exports-to-pst%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fusing-the-exchange-2010-sp1-mailbox-export-features-for-mass-exports-to-pst%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange,Exchange2010,exchangeserver2010" height="61" width="50" /><br />
			</a>
		</div>
<p>In Exchange 2007 SP1 thru to Exchange 2010 RTM, the Export-Mailbox command was the replacement for the once-familiar <a href="http://www.microsoft.com/downloads/details.aspx?familyid=429163ec-dcdf-47dc-96da-1c12d67327d5&amp;displaylang=en" target="_blank">ExMerge</a> utility when it came to exporting mailboxes to PST files.</p>
<p>The main problem with Export-Mailbox for most Exchange administrators is the requirement for Outlook – either on a 32-bit machine with Management Tools for Exchange 2007, or on a 64-bit machine for Exchange 2010. All in all, it wasn’t ideal and certainly didn’t facilitate scripted mailbox exports.</p>
<p>Thankfully, with Exchange 2010 SP1, Export-Mailbox is going the way of the dodo and new cmdlets for Mailbox imports and exports are available. Just like the New-MoveRequest cmdlet, the new import/export command use the <a href="http://technet.microsoft.com/en-us/library/dd298174.aspx#MRS" target="_blank">Mailbox Replication Service</a> to perform the move via one of the Client Access Servers giving performance benefits, such as ensuring the PST transfer doesn’t have to go via the machine with the Exchange Management Tools/Outlook installed, as was the case previously.</p>
<p>The main aim of this post is to give you an overview of how to use the new mailbox export cmdlets, and then show you how to put them to practical use, both at the command line and with a scheduled task for brick-level backups.</p>
<h5>Getting it set up</h5>
<p>The basic requirements for using the new feature are pretty straightforward. You need to use an account that’s a member of the organisational management groups, and have the “Mailbox Import Export” role assignment assigned to you or a role group you’re a member of. As the export is done at a CAS server (and if you’ve multiple CAS servers you can’t specify which one in each site will be used) you can’t specify a local drive letter and path – you must specify a UNC path to a network share that the “Exchange Trusted Subsystem” group has read/write access to.</p>
<h6>Step One</h6>
<p>Create a share on a server, and grant <strong>Exchange Trusted Subsystem</strong> read/write permission. In this example I’m using a share called <strong>Exports</strong> on a test server called <strong>Azua</strong> in my lab environment:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image56.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image5_thumb.png" border="0" alt="image" width="226" height="287" /></a></p>
<h6>Step Two</h6>
<p>Next, you’ll need to grant a user, or group, the <strong>Mailbox Import Export</strong> role assignment. You can do this using the Exchange Management shell with a single command. In this example, I’m granting my lab domain’s Administrator user the role assignment:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image111.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image11_thumb.png" border="0" alt="image" width="714" height="87" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">New<span style="color: pink;">-</span>ManagementRoleAssignment –Role “Mailbox Import Export” –User AD\Administrator</div></div>
<p>After you’ve done this, close and re-open the Exchange Management shell, and you’re ready to go!</p>
<h5>Exporting a Mailbox</h5>
<p>At it’s simplest, use the <strong>New-MailboxExportRequest</strong> command with the –<strong>Mailbox</strong> parameter, to specify the mailbox to export along with the –<strong>FilePath</strong> parameter, to specify the PST file to create and export data to, e.g:</p>
<h5><a href="http://www.stevieg.org/wp-content/uploads/image57.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb38.png" border="0" alt="image" width="714" height="66" /></a></h5>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">New<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>Mailbox Administrator <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;\\AZUA\Exports\Administrator.pst&quot;</span></div></div>
<p>In addition, there are some other useful options – such as –<strong>BatchName</strong>, which allows grouping of requests together, and –<strong>ContentFilter</strong>, which allows only certain content to be exported to the PST – useful for discovery purposes.  As usual, use the <strong>Get-Help New-MailboxExportRequest –detailed</strong> command to review the full plethora of options.</p>
<p>After submission of your requests, you can check progress, including the percentage complete, with the two <strong>Get-MailboxExportRequest </strong>and the <strong>Get-MailboxExportRequestStatistics</strong> commands. Pipe the former into the latter to get a listing:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image58.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb39.png" border="0" alt="image" width="714" height="66" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">|</span> Get<span style="color: pink;">-</span>MailboxExportRequestStatistics</div></div>
<p>After the requests complete, you can remove the requests in a similar fashion, using the <strong>Remove-MailboxExportRequest</strong> command:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image59.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb40.png" border="0" alt="image" width="714" height="90" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">|</span> Remove<span style="color: pink;">-</span>MailboxExportRequest</div></div>
<h5>Performing mass exports</h5>
<p>One benefit of Powershell is it’s very easy to put together commands enabling mass-exports of PST data with only a few commands. If you really wanted to, you could even use a Powershell script as a secondary brick-level backup!</p>
<h6>The Basics</h6>
<p>So to check out how to do this, let’s look at it’s simplest – backing up all the mailboxes (assuming it’s a full Exchange 2010 environment) to a single share:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image61.png"><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb42.png" border="0" alt="image" width="718" height="31" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$i</span> <span style="color: #0000FF;">in</span> <span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>Mailbox<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> New<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>Mailbox <span style="color: #800080;">$i</span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;\\AZUA\Exports\${$i.Alias).pst&quot;</span> <span style="color: #000000;">&#125;</span></div></div>
<p>In the above example, we’re simply performing a for-each loop through each mailbox and creating a new Mailbox Export Request, using the alias to build the name for the PST.</p>
<p>But – what if we’re in a mixed environment, and only want to target the Exchange 2010 mailboxes?</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image62.png"><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb43.png" border="0" alt="image" width="718" height="87" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$i</span> <span style="color: #0000FF;">in</span> <span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>Mailbox <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><a href="about:blank"><span style="color: #000080;">$_</span></a>.ExchangeVersion.ExchangeBuild.Major <span style="color: #FF0000;">-eq</span> <span style="color: #804000;">14</span><span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> New<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>Mailbox <span style="color: #800080;">$i</span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;\\AZUA\Exports\${$i.Alias).pst&quot;</span> <span style="color: #000000;">&#125;</span></div></div>
<p>In this example above, now, we’ve added a clause to only select the mailboxes where the Exchange Major Build is 14 – Exchange 2010. Simple!</p>
<p>Moving on from such wide-targeting, you may want to target just a pre-defined list, using a CSV file. To do this, simply create a CSV file with the column “Alias”, and list the Mailbox alias fields you wish to export. Then, using the Import-CSV command we can use this CSV file to create the requests:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image63.png"><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb44.png" border="0" alt="image" width="718" height="78" /></a></p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$i</span> <span style="color: #0000FF;">in</span> <span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Import-Csv</span> .\exports.csv<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> New<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>Mailbox <span style="color: #800080;">$i</span>.Alias <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;\\AZUA\Exports\$($i.Alias).pst&quot;</span> <span style="color: #000000;">&#125;</span></div></div>
<h6>Performing Mass Exports as a scheduled task</h6>
<p>Now you’ve seen the basics of how easy it is to perform mass mailbox exports using the New-MailboxExportRequest command, I’ll finish off with a final example showing how to use this mass export feature as part of a scheduled task.</p>
<p>This script is aimed at backing up all the mailboxes on a single database, or a single server. After creating the requests, it waits for the requests to complete then, if you’ve specified a report directory, it will write reports showing completed and incomplete (i.e. failed!) requests. Finally it removes the requests it created.</p>
<p>To use the script, you need to alter the config section and specify either a server or a database, a share to export to, a share to write a report to after the process has completed and you can choose whether to remove each mailbox’s associated PST file or leave as-is at each export – merging the contents.</p>
<p>You’ll see the content of the script below and at the bottom of the post I’ve zipped it up along with a bootstrap CMD file you could use when setting up a schedule task. As always – use at your own risk and test out in your lab environment first. Happy Exporting!</p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:400px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #008000;"># Exchange 2010 SP1 Mailbox Export Script</span><br />
<span style="color: #008000;"># Steve Goodman. Use at your own risk!</span><br />
<br />
<span style="color: #008000;">###############</span><br />
<span style="color: #008000;"># Settings &nbsp; &nbsp;#</span><br />
<span style="color: #008000;">###############</span><br />
<br />
<span style="color: #008000;"># Pick ONE of the two below. If you choose both, it will use $Server.</span><br />
<span style="color: #800080;">$Server</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;server&quot;</span><br />
<span style="color: #800080;">$Database</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;&quot;</span><br />
<br />
<span style="color: #008000;"># Share to export mailboxes to. Needs R/W by Exchange Trusted Subsystem</span><br />
<span style="color: #008000;"># Must be a UNC path as this is run by the CAS MRS service.</span><br />
<span style="color: #800080;">$ExportShare</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;\\server\share&quot;</span><br />
<br />
<span style="color: #008000;"># After each run a report of the exports can be dropped into the directory specified below. (The user that runs this script needs access to this share)</span><br />
<span style="color: #008000;"># Must be a UNC path or the full path of a local directory.</span><br />
<span style="color: #800080;">$ReportShare</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;\\server\share&quot;</span><br />
<br />
<span style="color: #008000;"># Shall we remove the PST file, if it exists beforehand? (The user that runs this script needs access to the $ExportShare share)</span><br />
<span style="color: #008000;"># Valid values: $true or $false</span><br />
<span style="color: #800080;">$RemovePSTBeforeExport</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span><br />
<br />
<span style="color: #008000;">###############</span><br />
<span style="color: #008000;"># Code &nbsp; &nbsp; &nbsp; &nbsp;#</span><br />
<span style="color: #008000;">###############</span><br />
<br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Server</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>ExchangeServer <span style="color: #800080;">$Server</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Exchange Server $Server not found&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>MailboxDatabase <span style="color: pink;">-</span>Server <span style="color: #800080;">$Server</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Exchange Server $Server does not have mailbox databases&quot;</span>;<br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #800080;">$Mailboxes</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Mailbox <span style="color: pink;">-</span>Server <span style="color: #800080;">$Server</span> <span style="color: pink;">-</span>ResultSize Unlimited<br />
<span style="color: #000000;">&#125;</span> <span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Database</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>MailboxDatabase <span style="color: #800080;">$Database</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;Mailbox database $Database not found&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #800080;">$Mailboxes</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Mailbox <span style="color: pink;">-</span>Database <span style="color: #800080;">$Database</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$Mailboxes</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;No mailboxes found on $Server&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #800080;">$Mailboxes</span>.Count<span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #0000FF;">throw</span> <span style="color: #800000;">&quot;This script does not support a single mailbox export.&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Pre-checks done</span><br />
<br />
<span style="color: #008000;"># Make batch name</span><br />
<span style="color: #800080;">$date</span><span style="color: pink;">=</span><span style="color: #008080; font-weight: bold;">Get-Date</span><br />
<span style="color: #800080;">$BatchName</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Export_$($date.Year)-$($date.Month)-$($date.Day)_$($date.Hour)-$($date.Minute)-$($date.Second)&quot;</span><br />
<br />
<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800000;">&quot;Queuing $($Mailboxes.Count) mailboxes as batch '$($BatchName)'&quot;</span><br />
<br />
<span style="color: #008000;"># Queue all mailbox export requests</span><br />
<span style="color: #0000FF;">foreach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Mailbox</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$Mailboxes</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$RemovePSTBeforeExport</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$true</span> <span style="color: #FF0000;">-and</span> <span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Get-Item</span> <span style="color: #800000;">&quot;$($ExportShare)\$($Mailbox.Alias).PST&quot;</span> <span style="color: #008080; font-style: italic;">-ErrorAction</span> SilentlyContinue<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #008080; font-weight: bold;">Remove-Item</span> <span style="color: #800000;">&quot;$($ExportShare)\$($Mailbox.Alias).PST&quot;</span> <span style="color: #008080; font-style: italic;">-Confirm</span>:<span style="color: #800080;">$false</span><br />
<span style="color: #000000;">&#125;</span><br />
New<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>BatchName <span style="color: #800080;">$BatchName</span> <span style="color: pink;">-</span>Mailbox <span style="color: #800080;">$Mailbox</span>.Alias <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;$($ExportShare)\$($Mailbox.Alias).PST&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800000;">&quot;Waiting for batch to complete&quot;</span><br />
<br />
<span style="color: #008000;"># Wait for mailbox export requests to complete</span><br />
<span style="color: #0000FF;">while</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>BatchName <span style="color: #800080;">$BatchName</span> <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><a href="about:blank"><span style="color: #000080;">$_</span></a>.Status <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Queued&quot;</span> <span style="color: #FF0000;">-or</span> <a href="about:blank"><span style="color: #000080;">$_</span></a>.Status <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;InProgress&quot;</span><span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<br />
<span style="color: #008080; font-weight: bold;">sleep</span> <span style="color: #804000;">60</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Write reports if required</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$ReportShare</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800000;">&quot;Writing reports to $($ReportShare)&quot;</span><br />
<span style="color: #800080;">$Completed</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>BatchName <span style="color: #800080;">$BatchName</span> <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><a href="about:blank"><span style="color: #000080;">$_</span></a>.Status <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Completed&quot;</span><span style="color: #000000;">&#125;</span> <span style="color: pink;">|</span> Get<span style="color: pink;">-</span>MailboxExportRequestStatistics <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Completed</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #800080;">$Completed</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;$($ReportShare)\$($BatchName)_Completed.txt&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #800080;">$Incomplete</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>BatchName <span style="color: #800080;">$BatchName</span> <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><a href="about:blank"><span style="color: #000080;">$_</span></a>.Status <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;Completed&quot;</span><span style="color: #000000;">&#125;</span> <span style="color: pink;">|</span> Get<span style="color: pink;">-</span>MailboxExportRequestStatistics <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Format-List</span><br />
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$Incomplete</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="color: #800080;">$Incomplete</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out<span style="color: #FF0000;">-File</span></span> <span style="color: #008080; font-style: italic;">-FilePath</span> <span style="color: #800000;">&quot;$($ReportShare)\$($BatchName)_Incomplete_Report.txt&quot;</span><br />
<span style="color: #000000;">&#125;</span><br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #008000;"># Remove Requests</span><br />
<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800000;">&quot;Removing requests created as part of batch '$($BatchName)'&quot;</span><br />
Get<span style="color: pink;">-</span>MailboxExportRequest <span style="color: pink;">-</span>BatchName <span style="color: #800080;">$BatchName</span> <span style="color: pink;">|</span> Remove<span style="color: pink;">-</span>MailboxExportRequest <span style="color: #008080; font-style: italic;">-Confirm</span>:$false</div></div>
<p>Command file contents:</p>
<div class="codecolorer-container powershell default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="powershell codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe <span style="color: #008080; font-style: italic;">-command</span> <span style="color: #800000;">&quot;. 'c:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; .\MassExport.ps1&quot;</span></div></div>
<p><strong><a href="http://www.stevieg.org/downloads/MassExport.zip" target="_blank">Download as ZIP</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/07/using-the-exchange-2010-sp1-mailbox-export-features-for-mass-exports-to-pst/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New OWA themes available in Exchange 2010 SP1</title>
		<link>http://www.stevieg.org/2010/07/new-themes-available-in-exchange-2010-sp1/</link>
		<comments>http://www.stevieg.org/2010/07/new-themes-available-in-exchange-2010-sp1/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 19:48:01 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Exchange2010]]></category>
		<category><![CDATA[exchangeserver2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/?p=289</guid>
		<description><![CDATA[
			
				
			
		
In my earlier post about the Outlook Web App improvements in SP1 you’d have seen than in Exchange 2010 SP1, themes are making a welcome return.
If you don’t have the resources and time to install the SP1 beta yourself, or just want a quick look at all the new themes that will be included in [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fnew-themes-available-in-exchange-2010-sp1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Fnew-themes-available-in-exchange-2010-sp1%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange,Exchange2010,exchangeserver2010" height="61" width="50" /><br />
			</a>
		</div>
<p>In my earlier post about <a href="http://www.stevieg.org/2010/04/a-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1/" target="_blank">the Outlook Web App improvements in SP1</a> you’d have seen than in Exchange 2010 SP1, themes are making a welcome return.</p>
<p>If you don’t have the resources and time to install the SP1 beta yourself, or just want a quick look at all the new themes that will be included in the upcoming service pack, this quick post is for you!</p>
<p><strong>Default</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image34.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb17.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Mixxer</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image35.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb18.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Botanical</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image36.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb19.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>One World</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image37.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb20.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Super Sparkle Happy</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image38.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb21.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>It Came From Space</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image39.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb22.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Autumn Blade</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image41.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb23.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Herding Cats</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image42.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb24.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Finger Paints</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image43.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb25.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Damask</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image44.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb26.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Arctic</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image45.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb27.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Cupcake</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image46.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb28.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Blibbet</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image47.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb29.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Gothitech</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image48.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb30.png" border="0" alt="image" width="674" height="85" /></strong></a><strong> </strong></p>
<p><strong>Winterland</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image49.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb31.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Pink</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image50.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb32.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Blue</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image51.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb33.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Green</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image52.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb34.png" border="0" alt="image" width="674" height="82" /></strong></a><strong> </strong></p>
<p><strong>Voilet</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image53.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb35.png" border="0" alt="image" width="674" height="79" /></strong></a><strong> </strong></p>
<p><strong>Grey</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image54.png"><strong><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb36.png" border="0" alt="image" width="674" height="79" /></strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/07/new-themes-available-in-exchange-2010-sp1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful articles from around the web in July…</title>
		<link>http://www.stevieg.org/2010/07/links-for-2010-07-15/</link>
		<comments>http://www.stevieg.org/2010/07/links-for-2010-07-15/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 23:10:15 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[DeliciousLinks]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/07/links-for-2010-07-15/</guid>
		<description><![CDATA[
			
				
			
		
[Updated] - I've recompiled my link list for July and will continue to update it as anything I've found useful surfaces. These were originally published through Delicious.

The EXPTA {blog}: Trouble with ActiveSync with iOS4 for iPhone
The Cat Is Out Of The Bag. vSphere 4.1 &#124; Tech Blog
Manage Exchange 2007 Out-Of-Office (OOF) Settings with PowerShell and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Flinks-for-2010-07-15%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F07%2Flinks-for-2010-07-15%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8" height="61" width="50" /><br />
			</a>
		</div>
<div>[Updated] - I've recompiled my link list for July and will continue to update it as anything I've found useful surfaces. These were originally published through Delicious.</div>
<div></div>
<div><a href="http://kendrickcoleman.com/index.php?/Tech-Blog/the-cats-out-of-the-bag-vsphere-41.html">The EXPTA {blog}: Trouble with ActiveSync with iOS4 for iPhone</a></div>
<div><a href="http://kendrickcoleman.com/index.php?/Tech-Blog/the-cats-out-of-the-bag-vsphere-41.html">The Cat Is Out Of The Bag. vSphere 4.1 | Tech Blog</a></div>
<div><a href="http://www.mikepfeiffer.net/2010/07/manage-exchange-2007-out-of-office-oof-settings-with-powershell-and-the-ews-managed-api/">Manage Exchange 2007 Out-Of-Office (OOF) Settings with PowerShell and the EWS Managed API</a></div>
<div><a href="http://www.nitrodesk.com/default.aspx">Touchdown, a decent Activesync client for Android Phones</a></div>
<div><a href="http://www.amazon.com/dp/0735627193">New Book: Microsoft Exchange Server 2010 Best Practices (covering SP1) by Siegfried Jagott &amp; Joel Stidley</a></div>
<div><a href="http://janssenjones.typepad.com/janssenjonescom/2009/10/powershell-iphone-prowl-sysadmin-notification-nirvana.html">JanssenJones.com: PowerShell + iPhone + Prowl = SysAdmin notification nirvana</a><a href="http://www.shudnow.net/2010/06/30/exchange-2010-database-activation-coordination-dac/"><br />
Exchange 2010 Database Activation Coordination (DAC) | Elan Shudnow's Blog</a><a href="http://blogs.technet.com/b/ilvancri/archive/2010/07/09/configuring-ad-rms-and-exchange-2010-sp1-beta.aspx"></a></div>
<div><a href="http://blogs.technet.com/b/ilvancri/archive/2010/07/09/configuring-ad-rms-and-exchange-2010-sp1-beta.aspx">Configuring AD RMS and Exchange 2010 Sp1 Beta - Ilse Van Criekinge's Weblog - Site Home - TechNet Blogs</a><a href="http://blogs.technet.com/b/provtest/archive/2010/07/05/what-s-not-available-in-exchange-2010-sp1-hosting-mode.aspx"></a></div>
<div><a href="http://blogs.technet.com/b/provtest/archive/2010/07/05/what-s-not-available-in-exchange-2010-sp1-hosting-mode.aspx">What's not available in Exchange 2010 SP1 Hosting Mode - TechNet Blogs</a><a href="http://searchexchange.techtarget.com/generic/0,295582,sid43_gci1516122,00.html"></a></div>
<div><a href="http://searchexchange.techtarget.com/generic/0,295582,sid43_gci1516122,00.html">Exchange 2010 SP1 personal archives -- Why you should wait</a><a href="http://blogs.msexchange.org/walther/2010/06/16/teched-2010-interviews-with-folks-from-the-exchange-product-group/"></a></div>
<div><a href="http://blogs.msexchange.org/walther/2010/06/16/teched-2010-interviews-with-folks-from-the-exchange-product-group/">Henrik Walther Blog » Blog Archive » TechEd 2010 Interviews with folks from the Exchange Product group</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/07/links-for-2010-07-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 SP1 posts from around the web in June..</title>
		<link>http://www.stevieg.org/2010/06/exchange-2010-sp1-posts-from-around-the-web-this-week/</link>
		<comments>http://www.stevieg.org/2010/06/exchange-2010-sp1-posts-from-around-the-web-this-week/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 18:57:35 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Exchange2010]]></category>
		<category><![CDATA[exchangeserver2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/?p=216</guid>
		<description><![CDATA[
			
				
			
		
With the release to the public of Exchange 2010 SP1 Beta, it's nice to see the everyone getting their hands dirty with it at long last. Here's a quick post with a few links I've seen and liked over the last few days.
Installing Exchange 2010 SP1 Beta (Mike Crowley's Whiteboard)
RBAC Database Scopes in Exchange Server [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fexchange-2010-sp1-posts-from-around-the-web-this-week%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fexchange-2010-sp1-posts-from-around-the-web-this-week%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange,Exchange2010,exchangeserver2010" height="61" width="50" /><br />
			</a>
		</div>
<p>With the release to the public of Exchange 2010 SP1 Beta, it's nice to see the everyone getting their hands dirty with it at long last. Here's a quick post with a few links I've seen and liked over the last few days.</p>
<p><a href="http://mikecrowley.wordpress.com/2010/06/07/installing-exchange-2010-sp1-beta-2/">Installing Exchange 2010 SP1 Beta</a> (Mike Crowley's Whiteboard)</p>
<p><a href="http://www.mikepfeiffer.net/2010/06/rbac-database-scopes-in-exchange-server-2010-sp1-beta/">RBAC Database Scopes in Exchange Server 2010 SP1 Beta</a> (Mike Pfeiffer's Blog)</p>
<p><a href="http://www.howexchangeworks.com/2010/06/installing-exchange-2010-pre-requisites.html">Installing Exchange 2010 Pre-requisites Made Part Of The SP1 Beta Setup Process…</a> (How Exchange Works)</p>
<p><a href="http://www.howexchangeworks.com/2010/06/archive-mailbox-improvements-in.html?utm_source=feedburner&amp;utm_medium=twitter&amp;utm_campaign=Feed%3A+howexchangeworks+%28How+Exchange+Works%3F%29&amp;utm_content=Twitter">Archive Mailbox Improvements In Exchange 2010 SP1 Beta…</a> (How Exchange Works)</p>
<p>And of course there's a few more older articles linked at the <a href="http://social.technet.microsoft.com/wiki/contents/articles/exchange-2010-service-pack-1-overview.aspx">Technet Wiki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/06/exchange-2010-sp1-posts-from-around-the-web-this-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing iCal Calendar Sharing with Exchange 2010 SP1 [Updated]</title>
		<link>http://www.stevieg.org/2010/06/calendar-sharing-improvements-coming-in-exchange-2010-sp1/</link>
		<comments>http://www.stevieg.org/2010/06/calendar-sharing-improvements-coming-in-exchange-2010-sp1/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 09:16:00 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Open Standards]]></category>
		<category><![CDATA[Outlook Web App]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[Calendar Sharing]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[iCalendar]]></category>
		<category><![CDATA[OWA]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/04/calendar-sharing-improvements-coming-in-exchange-2010-sp1/</guid>
		<description><![CDATA[
			
				
			
		
One of the new features available in Exchange 2010 SP1 beta that I’m excited about (and already making use of) is the ability to share calendars from Exchange either in iCalendar or HTML format.
So – why is this useful? Doesn’t Exchange 2010 already have improved Calendar sharing with the new federated sharing features available from [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fcalendar-sharing-improvements-coming-in-exchange-2010-sp1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fcalendar-sharing-improvements-coming-in-exchange-2010-sp1%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Calendar+Sharing,Exchange,Exchange+2010,iCal,iCalendar,OWA" height="61" width="50" /><br />
			</a>
		</div>
<p>One of the new <a href="http://www.stevieg.org/2010/06/exchange-2010-sp1-public-beta-available-to-download/" target="_blank">features available in Exchange 2010 SP1 beta</a> that I’m excited about (and already making use of) is the ability to share calendars from Exchange either in iCalendar or HTML format.</p>
<p>So – why is this useful? Doesn’t Exchange 2010 already have improved Calendar sharing with the new federated sharing features available from RTM? Well, yes it does.. And this new features doesn’t replace federated sharing, however if you want to share calendars <em>now</em> is that the world doesn’t run Exchange 2010. Some organisations will move to it over the next year or two; but lets face facts – some enterprises out there may move to Google Apps, Zimbra or something else, so Federated Sharing isn’t going to be an option. While a workaround might be to create partner mailboxes or use third party software, it would be nice to have a solution that “just works” and enables the business to collaborate with partners easily without worrying too much about what technology each other uses. Only with open standards can this happen and with SP1 that’s now a reality.</p>
<p>The ability to publish calendars with anonymous viewers (and that’s an important point, which I’ll come back to) means that should the admin enable it, the user can now go in via OWA, select the calendar they wish to share and choose to publish it. They then receive a set of URLs that they can share via email. The recipient then can simply refer to the calendar via a web browser, or by using any iCalendar compliant software or web app they can subscribe to the shared Calendar.</p>
<p>Getting back to the anonymous part, there are two options. The end user can publish a calendar with a “public” URL that is searchable. The other option is a “restricted” URL with an obfuscated URL. Additionally, the user can restrict what will be shown for each calendar they choose to publish. On top of this, the admin can restrict via sharing policies the maximum amount of information users can publish, and sharing policies can be tied to a certain set of users. So there is some risk in enabling the facility, but by default no user’s calendars are shared, and there are a number of controls available to user and admin to pull the feature in line with the business and individual user’s requirements.</p>
<p>Now you know a little more about the new feature, let’s take a look at how it comes together from a user perspective, and how it’s configured by the admin.</p>
<h4>The User Experience</h4>
<p>If a feature is going to work well it has to be easy for a user to find and configure. Exchange 2010 SP1 doesn’t disappoint as the feature is listed in both OWA and Outlook in the same place as other calendar sharing options.</p>
<p>For an OWA user, they select the calendar they want to share, then choose “Share”, and the option is listed as “Publish This Calendar…”</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image8.png" border="0" alt="image" width="279" height="133" /></p>
<p>If they’re using Outlook 2010 (<em>beta </em>), the user right clicks the calendar they want to share, chooses “Share” and again, it’s listed as “Publish This Calendar…”</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image9.png" border="0" alt="image" width="404" height="362" /></p>
<p>After clicking “Publish This Calendar…” via OWA or Outlook, the options can be chosen including the detail to show, the date range and the type of access:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image10.png" border="0" alt="image" width="393" height="484" /></p>
<p>After clicking “Start Publishing”, the links are generated:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image11.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb4.png" border="0" alt="image" width="400" height="484" /></a></p>
<p>The user can now either copy the links from this page, or via “Share” choose “Send Links to This Calendar…” which opens a new email with the two URLs attached.</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image12.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb5.png" border="0" alt="image" width="269" height="128" /></a></p>
<p>Opening the calendar by the recipient is easy enough. For our first example, let’s have a look at Exchange’s primary competitor, Google Apps. To add the shared calendar to Google Calendar, the end user chooses “Add” then “Add by URL”.</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image13.png" border="0" alt="image" width="244" height="104" /></p>
<p>They pop in the iCalendar URL, and it shows up in the recipients Google Calendar. You’ll see below I’m subscribing to two Exchange 2010 SP1 calendars – my personal one and my team’s:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image14.png" border="0" alt="image" width="404" height="220" /></p>
<p>(In my case – this is one aspect I personally like about the feature. Although I don’t use Google Calendar I <em>do</em> use iGoogle and it allows me to see my Exchange calendars on my homepage via the Google Calendar widget.)</p>
<p>Next up it’s Zimba. Add a new Calendar, choose Synchronise appointments from remote calendar, then pop in the Exchange iCalendar URL:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image15.png" border="0" alt="image" width="275" height="184" /></p>
<p>Again, the Calendars show perfectly:</p>
<p><img style="display: inline; margin-left: 0px; margin-right: 0px; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image16.png" border="0" alt="image" width="404" height="222" align="right" /></p>
<p>Finally let’s not forget Outlook users; from Outlook 2007 onwards iCalendar subscriptions are supported. I’ve quickly tried this in Outlook 2010 beta – simple right click in the calendar list, choose “Add Calendar” and then select “From Internet…”</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image17.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb6.png" border="0" alt="image" width="315" height="158" /></a></p>
<p>As above, after popping the iCalendar URLs in the subscriptions are created in the local Outlook client.</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image18.png" border="0" alt="image" width="404" height="239" /></p>
<p>And, finally let’s not forget HTML sharing, which does exactly what you’d expect:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image19.png" border="0" alt="image" width="404" height="221" /></p>
<h4>The Admin Experience</h4>
<p>Now you’ve seen the user experience let’s take a look at what needs to be done to get it up and running in your SP1 environment. To get it all enabled we need to do the following:</p>
<ul>
<li>Set an ExternalURL for your organisation’s Client Access Server</li>
<li>Enable Calendar Publishing on the OWA Virtual Directory</li>
<li>Create or modify the sharing policy to allow anonymous sharing</li>
</ul>
<p>Setup of the ExternalURL is pretty standard stuff so I won’t cover it here. Moving on to the Calendar Publishing OWA virtual directory feature, let’s look at what it’s made up of.</p>
<p>The Calendar Publishing works via a new virtual directory – “calendar”. This lives <em>beneath</em> the “owa” virtual directory as “/owa/calendar” and has anonymous, http access enabled (watch out ISA/TMG users). It’s enabled by default but should it need re-enabling it’s pretty straightforward using Powershell. Here’s a quick example:</p>
<p><span style="font-family: consolas;">Set-OWAVirtualDirectory "owa (Default Web Site)" –CalendarPublishingEnabled:$true</span></p>
<p>Next up, a sharing policy needs to be configured to allow anonymous access. You can do this via EMS or via the EMC. The EMS example below changes the Default Sharing Policy to only allow anonymous access with maximum access level of Calendar Sharing with Free/Busy plus Subject, Location and Body.</p>
<p><span style="font-family: consolas;">Set-SharingPolicy -Identity "Default Sharing Policy" -Domains "Anonymous:CalendarSharingFreeBusyReviewer"</span></p>
<p>Via the EMC is also pretty straightforward and particularly suitable when you need to create multiple policies or modify existing ones. Here’s a quick run through of how to create a new policy via EMC that only applies to certain users:</p>
<p>Open EMC and navigate to the Organizational Configuration node, then to Mailbox and select the Sharing Policies tab:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image20.png" border="0" alt="image" width="554" height="306" /></p>
<p>First, examine the sharing policies already present. In the above screenshot, I’ve got a single sharing policy which is disabled. As we’re adding a new policy right-click in the white space or click “New Sharing Policy…” on the actions pane. Give the policy a name and add a new “domain” called “Anonymous” and select an appropriate maximum level of access:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image21.png" border="0" alt="image" width="554" height="426" /></p>
<p>After you’ve added the “domain” anonymous to the policy, make sure it’s enabled, then press Next. On the next page you’ll be presented with the opportunity to add mailboxes now. You can of course add these later either via the EMC or via EMS:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image22.png" border="0" alt="image" width="554" height="483" /></p>
<p>Press Next, then after confirming the details, press New. After completion you’ll see a warning that lets you know calendar publishing is enabled for this policy:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image23.png" border="0" alt="image" width="554" height="488" /></p>
<p>Press Finish and we’re all done. You should now be able to login to the specific mailbox and following the first part of the article share the Calendar.</p>
<h4>Conclusion</h4>
<p>We’ve had a look at what the new feature brings both from an end-user experience and to an administrator. As we can seen it’s great for sharing calendars in an environment where open standards are important or where partners use different products. I’d like to see full WebDAV compatibility so a Linux user can plug straight in and go, but this is a great start as far as sharing is concerned.</p>
<p>Getting back to new shared calendar features in SP1 - I’m hoping more can be revealed over the next few weeks as there’s still a bit more in store! <img src='http://www.stevieg.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  And of course, you’ll be able to get your hands on this yourself early June.</p>
<p>A final thought – bear in mind all the features and steps described here are not necessarily final so don’t be surprised if things change over the next few months.</p>
<p>Steve</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/06/calendar-sharing-improvements-coming-in-exchange-2010-sp1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 SP1 public beta available to download</title>
		<link>http://www.stevieg.org/2010/06/exchange-2010-sp1-public-beta-available-to-download/</link>
		<comments>http://www.stevieg.org/2010/06/exchange-2010-sp1-public-beta-available-to-download/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 09:14:17 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Exchange2010 exchangeserver2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/06/exchange-2010-sp1-public-beta-available-to-download/</guid>
		<description><![CDATA[
			
				
			
		
If you don’t already know, the first public beta of Exchange 2010 SP1 is now up for download. Although it must not be installed into production environments it’s defiantly worth a look due to some of the improvements brought to the table:

Better setup experience including integrated pre-req installer and setup resumes where you let off [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fexchange-2010-sp1-public-beta-available-to-download%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F06%2Fexchange-2010-sp1-public-beta-available-to-download%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange2010+exchangeserver2010" height="61" width="50" /><br />
			</a>
		</div>
<p>If you don’t already know, the first public beta of Exchange 2010 SP1 is now up for download. Although it must not be installed into production environments it’s defiantly worth a look due to some of the improvements brought to the table:</p>
<ul>
<li>Better setup experience including integrated pre-req installer and setup resumes where you let off after a reboot</li>
<li>Improvements to the Exchange Management Console when managing DAGs</li>
<li>Improvements to public folder management</li>
<li>Import and Export of PST files without Outlook installed on the server</li>
<li>Calendar sharing improvements including iCal sharing</li>
<li>OWA themes and another OWA overhaul</li>
</ul>
<p>More links to articles are available over on the <a href="http://social.technet.microsoft.com/wiki/contents/articles/exchange-2010-service-pack-1-overview.aspx">Technet Wiki</a> and SP1 beta’s <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a0965fc9-2723-4947-ae6b-74bc3808e72a&amp;displaylang=en">available for download here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/06/exchange-2010-sp1-public-beta-available-to-download/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Does your domain start with “live."? Expect problems with Outlook 2010! [Updated with workaround]</title>
		<link>http://www.stevieg.org/2010/05/does-your-domain-start-with-live-expect-problems-with-outlook-2010/</link>
		<comments>http://www.stevieg.org/2010/05/does-your-domain-start-with-live-expect-problems-with-outlook-2010/#comments</comments>
		<pubDate>Thu, 20 May 2010 21:49:20 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Outlook Live]]></category>
		<category><![CDATA[Outlook2010]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/05/does-your-domain-start-with-live-expect-problems-with-outlook-2010/</guid>
		<description><![CDATA[
			
				
			
		
Over on the Outlook Live forums today we discovered a very strange issue with Outlook 2010’s account setup preventing Exchange autodiscover from working for some domains. If your domain starts with “live.” then the Autodiscover and Guessmart processes don’t even kick in. You get prompted straight away to install the Hotmail Connector:

As you can see [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F05%2Fdoes-your-domain-start-with-live-expect-problems-with-outlook-2010%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F05%2Fdoes-your-domain-start-with-live-expect-problems-with-outlook-2010%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange,Outlook2010" height="61" width="50" /><br />
			</a>
		</div>
<p>Over on the Outlook Live forums today we discovered a very strange issue with Outlook 2010’s account setup preventing Exchange autodiscover from working for some domains. If your domain starts with “live.” then the Autodiscover and Guessmart processes don’t even kick in. You get prompted straight away to install the Hotmail Connector:</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image24.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb7.png" border="0" alt="image" width="371" height="259" /></a></p>
<p>As you can see in the above example the domain doesn’t even exist. A NetMon trace shows no attempt to check the domain to somehow link it to Hotmail, and if you use the Test E-Mail Auto configuration utility it follows the “real” logic and doesn’t alert you to this problem.</p>
<p>Any information on exactly why this does this isn’t already out there – the closest I’ve come to an answer is over on the Outlook blog, here. If you know more – feel free to leave a comment. In the meantime I’ll be doing some more research.</p>
<p><strong>Update 1 27/05/2010 – I have a solution from Microsoft for the issue. Just waiting for confirmation before I post.</strong></p>
<p><strong>Update 2 01/06/2010 - Workaround below:</strong></p>
<p>NB: The following instructions are for use at your own risk. If you aren't sure what you are doing, get a professional to assist and always ensure you have an up-to-date backup that you know how to restore.</p>
<p>Open Registry Editor and navigate to:<br />
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Outlook\AutoConfigDomains<br />
Remove the following key:<br />
live.*</p>
<p>This will of course make it so name@live.com will not autoconfigure with the Hotmail Connector.</p>
<p>If you want that that to still work change the Key name to HKLM\Software\Microsoft\Office\Outlook\AutoConfigDomains\live.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/05/does-your-domain-start-with-live-expect-problems-with-outlook-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A quick look at Outlook Web App improvements coming in Exchange 2010 SP1</title>
		<link>http://www.stevieg.org/2010/04/a-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1/</link>
		<comments>http://www.stevieg.org/2010/04/a-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 21:22:33 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange 2010 SP1]]></category>
		<category><![CDATA[Outlook Web App]]></category>
		<category><![CDATA[Exchange 2010]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[Improvements]]></category>
		<category><![CDATA[OWA]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/04/a-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1/</guid>
		<description><![CDATA[
			
				
			
		
Today Microsoft made public some of the new features in Exchange 2010 SP1 over on the Exchange Team blog. There’s a multitude of new features available and I encourage you to take a look. I’ll be publishing a few posts over the coming days on features I’m most interested in but to start off, I’m [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F04%2Fa-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F04%2Fa-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8&amp;hashtags=Exchange+2010,iCal,Improvements,OWA,Themes" height="61" width="50" /><br />
			</a>
		</div>
<p>Today Microsoft <a href="http://msexchangeteam.com/archive/2010/04/07/454533.aspx" target="_blank">made public some of the new features in Exchange 2010 SP1</a> over on the Exchange Team blog. There’s a multitude of new features available and I encourage you to take a look. I’ll be publishing a few posts over the coming days on features I’m most interested in but to start off, I’m looking at the massive improvements to Outlook Web App.</p>
<p>One of the biggest improvements in Exchange 2010 was the cross-browser OWA compatibility and cleaner interface. In the past, this would have been it until Exchange 15 came out, giving the competition (i.e. <em>Google</em>) a few years to catch up and leapfrog Microsoft. Today Microsoft made it clear that no longer will they allow the competition to out-innovate them against Exchange, and they will continue to deliver benefits to customers in between major releases.</p>
<h4>What’s new in the premium interface?</h4>
<p>Basically – nearly everything! Although from quick glance you might mistake the SP1 OWA for RTM, it won’t take long to realise it’s had an overhaul. The simpler UI is cleaner and well.. feels more like a modern web app than previous versions which have tried hard to mimic a desktop app. It’s less cluttered, easier to navigate and looks a lot more sexy <img src='http://www.stevieg.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Enough anyway with the talk. Let’s get down to business and have a look.</p>
<p><strong>Outlook Web App, Exchange 2010 RTM</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image2.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image_thumb2.png" border="0" alt="image" width="498" height="255" /></a></p>
<p><strong>Outlook Web App, Exchange 2010 SP1</strong></p>
<p><a href="http://www.stevieg.org/wp-content/uploads/1.png"><img style="display: inline; border-width: 0px;" title="1" src="http://www.stevieg.org/wp-content/uploads/1_thumb.png" border="0" alt="1" width="497" height="253" /></a></p>
<p>As you’ll see the interface is a whole lot cleaner. There’s a breadcrumb navigation trail in the top left, just below the OWA logo to help you find where you are at a glance. The Exchange icon has gone - It’s just a simple tree menu. The structured lines separating the elements fade away and blend into the background. The icons have been refreshed and only what’s needed is present. If you look very closely you’ll even see that you can use checkboxes to select email. You don’t need to ctrl-click anymore, unless of course you want to!</p>
<p>The interface overhaul isn’t all that’s new. Also announced today were the following new features for OWA SP1 – A new set of themes, sharing calendars to the web and allowing the reading pane to be shown across the bottom.</p>
<h4>Themes</h4>
<p>Themes were an obvious omission from Exchange 2010 RTM, however in previous versions of OWA they have mainly been variations of the default theme but in different colours – apart from the Xbox and Zune themes – though I’m sure they weren’t overwhelmingly popular. I must say though, I am glad they didn’t rush these out. The new set of themes are absolutely <em>amazing</em>. I’m not going to reveal them all – that really would ruin the surprise but as a sneak preview here’s a couple of my favourite new themes and the new options button/themes picker:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image3.png" border="0" alt="image" width="207" height="169" /></p>
<p>New Options button and theme picker</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image4.png" border="0" alt="image" width="480" height="77" /></p>
<p>Super Sparkle Happy theme</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image7.png" border="0" alt="image" width="485" height="50" /></p>
<p>Blibbet (Check out the retro MSFT logo!)</p>
<h4>Calendar sharing to the web</h4>
<p>An often requested feature from my users has been the ability to share their calendar with non-exchange users.  And now it’s possible. Below you see Google Calendar opening an Exchange 2010 SP1 calendar. Also, note which interface fits better on a small window and looks more modern…</p>
<p><a href="http://www.stevieg.org/wp-content/uploads/image40.png"><img style="display: inline; border: 0px;" title="image" src="http://www.stevieg.org/wp-content/uploads/image40_thumb.png" border="0" alt="image" width="600" height="294" /></a></p>
<p>I’ll be following up Calendar sharing in more detail in my next post in a couple of days time – as it requires a little server configuration, and there’s more to show off.</p>
<p>Hope you’ve found this interesting. If there’s some more Exchange 2010 SP1 features made public over at the <a href="http://msexchangeteam.com/archive/2010/04/07/454533.aspx" target="_blank">Exchange Team Blog</a> that you’d like more information about let me know. If I can tell you, I will.</p>
<p>Steve</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/04/a-quick-look-at-outlook-web-app-improvements-coming-in-exchange-2010-sp1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>A big thanks to Chris Rue!</title>
		<link>http://www.stevieg.org/2010/04/a-big-thanks-to-chris-rue/</link>
		<comments>http://www.stevieg.org/2010/04/a-big-thanks-to-chris-rue/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 21:11:26 +0000</pubDate>
		<dc:creator>Steve Goodman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevieg.org/2010/04/a-big-thanks-to-chris-rue/</guid>
		<description><![CDATA[
			
				
			
		
Just a quick note here – a big shout out to Chris Rue (@chrisrue on Twitter) over at Chris’ Funcave and a massive thank you!
I was lucky enough to win a Microsoft exam voucher from Chris as part of the Great Voucher Giveaway. I think I’ll be using mine to get a Hyper-V cert to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F04%2Fa-big-thanks-to-chris-rue%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stevieg.org%2F2010%2F04%2Fa-big-thanks-to-chris-rue%2F&amp;source=stevegoodman&amp;style=normal&amp;service=bit.ly&amp;service_api=stevegoodman%3AR_3fe50251364190101017aec80ede24a8" height="61" width="50" /><br />
			</a>
		</div>
<p>Just a quick note here – a big shout out to Chris Rue (<a href="http://twitter.com/chrisrue" target="_blank">@chrisrue</a> on Twitter) over at <a href="http://www.chrisrue.com/funcave/" target="_blank">Chris’ Funcave</a> and a massive thank you!</p>
<p>I was lucky enough to win a Microsoft exam voucher from Chris as part of the Great Voucher Giveaway. I think I’ll be using mine to get a Hyper-V cert to go with my VMware certs. If nothing else that gives me a good excuse to get my team’s lab sorted out at work <img src='http://www.stevieg.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>And if you’d like to get in on some free voucher action – head over to <a href="http://www.pkguild.com/2010/04/win-a-voucher-for-a-free-microsoft-certification-exam/" target="_blank">Christopher Kusek’s blog</a> (<a href="http://twitter.com/cxi" target="_blank">@cxi</a> on Twitter) ASAP as he’s got an exam voucher giveaway going on right now.</p>
<p>Steve</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevieg.org/2010/04/a-big-thanks-to-chris-rue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
