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

<channel>
	<title>Personal website of Dave Hope &#187; Powershell</title>
	<atom:link href="http://davehope.co.uk/Blog/tag/powershell/feed/" rel="self" type="application/rss+xml" />
	<link>http://davehope.co.uk</link>
	<description>Open source projects, sysadmin stuff and the home of Product Key Finder</description>
	<lastBuildDate>Fri, 27 Jan 2012 13:47:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Find accounts without a thumbnail photo</title>
		<link>http://davehope.co.uk/Blog/find-accounts-without-a-thumbnail-photo/</link>
		<comments>http://davehope.co.uk/Blog/find-accounts-without-a-thumbnail-photo/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 15:17:15 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://davehope.co.uk/?p=899</guid>
		<description><![CDATA[Exchange 2010 introduces the thumbnailPhoto attribute for user accounts, allowing you to have photos of staff displayed in Outlook 2010 (or 2007 if you have the social connector installed). Here&#8217;s a quick powershell snippet to find accounts that don&#8217;t already have a photo set: Import-Module ActiveDirectory Get-ADUser -Filter * -SearchBase "OU=Staff,DC=nwtraders,DC=msft" -properties thumbnailPhoto &#124; ? [...]]]></description>
			<content:encoded><![CDATA[<p>Exchange 2010 introduces the thumbnailPhoto attribute for user accounts, allowing you to have photos of staff displayed in Outlook 2010 (or 2007 if you have the social connector installed).</p>
<p>Here&#8217;s a quick powershell snippet to find accounts that don&#8217;t already have a photo set:</p>
<p><code>Import-Module ActiveDirectory<br />
Get-ADUser -Filter * -SearchBase "OU=Staff,DC=nwtraders,DC=msft" -properties thumbnailPhoto | ? {!$_.thumbnailPhoto} | select Name</code></p>
]]></content:encoded>
			<wfw:commentRss>http://davehope.co.uk/Blog/find-accounts-without-a-thumbnail-photo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automating Active Directory account creation with Powershell</title>
		<link>http://davehope.co.uk/Blog/automating-active-directory-account-creation-with-powershell/</link>
		<comments>http://davehope.co.uk/Blog/automating-active-directory-account-creation-with-powershell/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 19:09:05 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://davehope.co.uk/?p=766</guid>
		<description><![CDATA[Earlier this year I set about simplifying the user account creation process for the company I work for. Previously when someone joined the company the user account creation was a manual process. Some of the tasks we manually undertook were: Create the account and Exchange mailbox; Set relevant attributes (Job Title, Office Address etc); Enable [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this year I set about simplifying the user account creation process for the company I work for. Previously when someone joined the company the user account creation was a manual process. Some of the tasks we manually undertook were:</p>
<ul>
<li>Create the account and Exchange mailbox;</li>
<li>Set relevant attributes (Job Title, Office Address etc);</li>
<li>Enable the user for office communicator;</li>
<li>Set the calendar permissions so that everyone can view the persons calendar;</li>
</ul>
<p>I chose Powershell as my tool of choice, it&#8217;s extremely flexible for stuff like this and most of the management functionality comes out the box with Exchange 2007 and later. I initially used <a href="http://gsexdev.blogspot.com/2010/12/exchange-ews-powershell-module-for-ews.html to set permissions">Glen Scales&#8217; EWS module</a> for setting permissions and other bits but as we moved to Exchange 2010 the need for EWS disappeared (Thanks to functionality like Set-MailboxFolderPermissions).<br />
<span id="more-766"></span><br />
The only third-party software I now use is Quest&#8217;s <a href="http://www.quest.com/powershell/activeroles-server.aspx">ActiveRoles Management Shell for Active Directory</a> as there doesn&#8217;t seem to be a decent way to set custom attributes on a user account. Short of writing my own managed code to do it, or calling another application to make the change Quest&#8217;s tool seems to be the best choice.</p>
<p>I eventually came up with the following quick and dirty script to create users, based on the contents of a CSV file it will:</p>
<ul>
<li>Create the mailbox (uses New-Mailbox);</li>
<li>Set attributes on the AD account such as the job title, office address etc;</li>
<li>Set the default calendar permissions to &#8216;Reviewer&#8217;</li>
<li>Set attributes on the account, enabling it to use Office Communications Server</li>
<li>Generate a welcome letter to the user, including the OWA address and other bits of information</li>
</ul>
<p>The format of the CSV file is as follows:</p>
<pre>GivenName,Surname,Password,PhisicalDeliveryLocation,JobTitle
John,Doe,MyFirstPassword123!,London,Test Account</pre>
<p>And finally, the PowerShell script itself:</p>
<pre>
#
# Create user accounts in AD, Exchange and OCS.
# This script will read a CSV file and create user accounts based on that information.
#
# Requirements:
#  [+] http://www.quest.com/powershell/activeroles-server.aspx (For setting
#      attributes on an AD DS account)
#  [+] Exchange Management Console installed (for Powershell stuff, new-mailbox,
#      Get-MailboxDatabase etc).
#
#import-module activedirectory;
Add-PSSnapin Quest.ActiveRoles.ADManagement

$cfgTab = [char]9
$cfgCompany = &quot;NW Traders&quot;;
$cfgOCSHomeServer = &quot;CN=LC Services,CN=Microsoft,CN=OCSSRV01,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=nwtraders,DC=msft&quot;; # OCS Server
$cfgMailDomain = &quot;@nwtraders.msft&quot;; #E-Mail Domain

#=============================================================================
# A series of hash tables for office information.
#=============================================================================
$cfgLondon = @{
  &quot;Address&quot; = &quot;10 Downing Street, London, SW1A 2AA&quot;;
  &quot;Telephone&quot; = &quot;+44 2079 250 918&quot;;
  &quot;OU&quot; = &quot;OU=London,OU=Europe,OU=Users,DC=NWTRADERS,DC=MSFT&quot;;
  &quot;DC&quot; = &quot;LONDON&quot; };

$cfgWashington = @{
  &quot;Address&quot; = &quot;The White House, 1600 Pennsylvania Avenue NW, Washington, DC 20500&quot;;
  &quot;Telephone&quot; = &quot;+1 202 456 1414&quot;;
   &quot;OU&quot; = &quot;OU=Washington,OU=US,OU=Users,DC=NWTRADERS,DC=MSFT&quot;;
  &quot;DC&quot; = &quot;WASHINGTON&quot; };

#=============================================================================
# Creates an array of the above hash tables.
#=============================================================================
$cfgOffices = @{
  &quot;London&quot; = $cfgLondon;
  &quot;Washington&quot; = $cfgWashington;
  };

#=============================================================================
# Displays a select file dialog box, returning the path to a CSV file.
#=============================================================================
function chooseCSVfile
{
	param([string]$Title,[string]$Directory,[string]$Filter=&quot;CSV Files (*.csv)|*.csv&quot;)
	[System.Reflection.Assembly]::LoadWithPartialName(&quot;System.Windows.Forms&quot;) | Out-Null
	$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
	$openFileDialog.InitialDirectory = $Directory
	$openFileDialog.Filter = $Filter
	$openFileDialog.Title = $Title
	$openFileDialog.ShowHelp = $true

	$Show = $openFileDialog.ShowDialog()

	If ($Show -eq &quot;OK&quot;)
	{
		Return $openFileDialog.FileName
	}
	Else
	{
		Exit
	}
}

#=============================================================================
# Generate welcome e-mail.
#=============================================================================
Function generateIntroLetter
{
	param( [string]$GivenName, [string]$samAccountName, [string]$Password, [string]$DisplayName, [string]$DomainController )

	$tmpServer = get-mailbox $DisplayName -DomainController $DomainController | select servername
	$tmpOWA = get-OutlookAnywhere -Server $tmpServer.ServerName -DomainController $DomainController -ADPropertiesOnly | select ExternalHostname
	$tmpOWA = &quot;https://&quot; + $tmpOWA.ExternalHostname + &quot;/owa/&quot;

	$rtfBuilder = new-object system.text.stringbuilder 

	# Append RTF header
	$null = $rtfBuilder.Append(&quot;{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fnil\fcharset0 Calibri;}}&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;) 

	# Append RTF color table which will contain all Powershell console colors.
	#$null = $rtfBuilder.Append('{\colortbl ;\red0\green0\blue255;}')
	#$null = $rtfBuilder.Append(&quot;`r`n&quot;) 

	$null = $rtfBuilder.Append(&quot;{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmult1\f0\fs22 Dear $GivenName,\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;Please find the below access credentials for the NW Traders network. These are the only credentials you should need at NW Traders and will log you into your computer, e-mail account and other systems. As such, they should be kept confidential.\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;\tab Username\tab\tab $samAccountName\line\tab Password\tab\tab $PlainPassword\line\tab Domain\tab\tab\tab NWTRADERS\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;It is highly recommended that you change your password the first time you login. You should be able to use Outlook both in the office and at home, if for some reason that is not available you can access webmail using the following address:\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;\pard\tab{\field{\*\fldinst{HYPERLINK `$tmpOWA`}}{\fldrslt{\ul\cf1 h$tmpOWA}}}\f0\fs22\pard\par&quot;)
	$null = $rtfBuilder.Append(&quot;\pard\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;If you require support please contact the IT Support team via e-mail, {\field{\*\fldinst{HYPERLINK `mailto:it@nwtraders.msft` }}{\fldrslt{\cf1\ul it@nwtraders.msft}}}\cf0\ulnone\f0\fs22 . Alternatively an increasing number of self-service resources are available on our intranet:\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;\pard\fi720\par&quot;)
	$null = $rtfBuilder.Append(&quot;\pard\fi720{\field{\*\fldinst{HYPERLINK `http://intranet/`}}{\fldrslt{\ul\cf1 http://intranet/}}}\f0\fs22\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;\pard\sa200\sl276\slmult1\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;Kind Regards,\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;IT Support.\lang9\f1\par&quot;)
	$null = $rtfBuilder.Append(&quot;`r`n&quot;)
	$null = $rtfBuilder.Append(&quot;}&quot;)

	# Save as RTF File.
	echo $rtfBuilder.ToString() | out-file -Encoding Ascii &quot;$samAccountName.rtf&quot;
}

#=============================================================================
# Displays a list of mailbox databases, which the user needs to choose from.
#=============================================================================
Function chooseMailboxDatabase()
{
	$MbDbase = Get-MailboxDatabase
	$NumOfDB = $MbDbase.Count
	$Number = 0
	$Choice = 0

	If ($NumOfDB -eq $Null)
	{
		Write-Host $MbDbase.Identity
		return $MbDbase.Identity
	}
	else
	{
		foreach ($mbxDB in $MbDbase)
		{
			Write-Host &quot;$Number . &quot; $MbxDB.Identity
			$Number ++
		}
		Write-Host &quot;&quot;
		$Choice = Read-Host &quot;Mailbox Database&quot;
		return $MbDbase[$Choice].Identity
	}
}

#=============================================================================
# Opening user detail list&quot;
#=============================================================================
$FileName = chooseCSVfile -Title &quot;Import an CSV file&quot; -Directory &quot;c:\&quot;
$UserInformation = Import-Csv $FileName

#=============================================================================
# Do some logic about our environment.
#=============================================================================
Foreach ($User in $UserInformation)
{
	$SurName = $User.Surname
	$GivenName = $User.givenName
	$samAccountName = $GivenName + &quot; &quot; + $SurName
	$DisplayName = $SurName + &quot;, &quot; + $GivenName
	$PlainPassword = $User.Password
	$userPrincipalName = $samAccountName + $cfgMailDomain

	#Exchange Specific
	$strMailAddress = $samAccountName -replace &quot; &quot;, &quot;.&quot;;
	$strMailAddress += $cfgMailDomain;
	$strMailAlias = $samAccountName -replace &quot; &quot;, &quot;.&quot;;

	# Attributes.
	$strOffice = $User.PhisicalDeliveryLocation;
	$strTitle = $user.JobTitle;
	$strOU	= $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;OU&quot;)
	$strOAddress = $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;Address&quot;);
	$strOTel = $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;Telephone&quot;);

Write-Host -Foreground Gray &quot;---------------------------------------------------------------&quot;
Write-Host -Foreground Red &quot; &quot;$DisplayName
Write-Host -Foreground Gray &quot;---------------------------------------------------------------&quot;
	Write-Host &quot; Username:&quot;$cfgTab$samAccountName;
	Write-Host &quot; Password:&quot;$cfgTab$PlainPassword;
	Write-Host &quot; Job Title:&quot;$cfgTab$strTitle;
	Write-Host &quot; OU:&quot;$cfgTab$cfgTab$strOU;
	Write-Host &quot; E-Mail:&quot;$cfgTab$strMailAddress
Write-Host -Foreground Gray &quot;---------------------------------------------------------------&quot;
Write-Host &quot;&quot;

	# Choose a mailbox database for this account.
	$mbDatabase = chooseMailboxDatabase
	Write-Host &quot;&quot;
	Write-Host -Foreground Gray &quot;---------------------------------------------------------------&quot;

	# Lets actually create the account now.
	$Password = ConvertTo-SecureString $PlainPassword -AsPlainText -Force

	# Create Exchange mailbox.
	New-Mailbox -Name $DisplayName -Alias $strMailAlias -OrganizationalUnit $strOU -UserPrincipalName $userPrincipalName -SamAccountName $samAccountName -FirstName $GivenName -Initials '' -LastName $SurName -Password $Password -ResetPasswordOnNextLogon $false -Database $mbDatabase -DomainController $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;DC&quot;)  | out-null

	# Set Quest Active Directory stuff to use a DC in the local site (mostly).
	# Otherwise trying to make exchange changes in a remote site using a local
	# DC is going to fail, since the account doesn't exist yet.
	Connect-QADService -service $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;DC&quot;) | out-null

	# Set attributes on AD DS account.
	Get-QADUser $DisplayName | set-qaduser -oa @{'Office'=$strOffice; 'StreetAddress'=$strOAddress; 'OfficePhone'=$strOTel; 'Company'=$cfgCompany; 'Title'=$strTitle } | out-null

	# Set calendar permissions.
	Set-MailboxFolderPermission -Identity $strMailAddress`:\Calendar -User Default -AccessRights Reviewer -DomainController $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;DC&quot;)  | out-null

	# Create the OCS Account.
	Get-QADUser $DisplayName | set-qaduser -oa @{'msRTCSIP-ArchivingEnabled'=0; 'msRTCSIP-FederationEnabled'=$true; 'msRTCSIP-InternetAccessEnabled'=$true; 'msRTCSIP-OptionFlags'=257; 'msRTCSIP-UserEnabled'=$true; 'msRTCSIP-PrimaryHomeServer'=$cfgOCSHomeServer; 'msRTCSIP-PrimaryUserAddress'=(&quot;sip:&quot; + $strMailAddress ).ToString() } | out-null

	# Disconnect QADService.
	disconnect-qadservice

	# Generate Welcome e-mail.
	generateIntroLetter -GivenName $GivenName -samAccountName $samAccountName -Password $PlainPassword -DisplayName $DisplayName -DomainController $cfgOffices.Get_Item( $strOffice ).Get_Item(&quot;DC&quot;)
}
</pre>
<p>You can expect outlook similar to the below:</p>
<pre>---------------------------------------------------------------
<span style="color:red">  Doe, John</span>
---------------------------------------------------------------
 Username:      John Doe
 Password:      MyFirstPassword123!
 Company:       NW Traders
 Job Title:     Test Account
 OU:            OU=London,OU=Europe,OU=Users,DC=NWTRADERS,DC=MSFT
 E-Mail:        John.Doe@nwtraders.msft
---------------------------------------------------------------

0 .  LONDON
1 .  WASHINGTON

Mailbox Database: 0
---------------------------------------------------------------</pre>
<p>You can then send the resulting RTF document to the persons line manager, or whoever should have it for when the employee starts on their first day.</p>
<p>I should note, Andy Grogan (Exchange MVP) <a href="http://www.telnetport25.com/en/component/content/article/15-powershell/332-creating-mailbox-users-in-powershell-from-a-csv-and-then-merging-the-details-into-microsoft-word.html">has a very similar tool</a> which you might like to take a look at. I gleaned the Open-CSV idea and plagiarised the choose mailbox database code from him.</p>
]]></content:encoded>
			<wfw:commentRss>http://davehope.co.uk/Blog/automating-active-directory-account-creation-with-powershell/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Exchange 2007 restore using NTBackup</title>
		<link>http://davehope.co.uk/Blog/exchange-2007-restore-ntbackup/</link>
		<comments>http://davehope.co.uk/Blog/exchange-2007-restore-ntbackup/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 12:08:35 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[NTBackup]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://davehope.co.uk/?p=56</guid>
		<description><![CDATA[Now that I&#8217;m well under way with my Exchange 2007 migration I figured it&#8217;d be a good time to test the new Exchange recovery process. To cut a long story short, it&#8217;s a long process as most of the functionality is via Powershell rather than the Exchange Management Console. Anyway, here&#8217;s a quick guide. 1. [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;m well under way with <a href="http://davehope.co.uk/Blog/exchange-2007-migration/">my Exchange 2007 migration</a> I figured it&#8217;d be a good time to test the new Exchange recovery process.</p>
<p>To cut a long story short, it&#8217;s a long process as most of the functionality is via Powershell rather than the Exchange Management Console.</p>
<p>Anyway, here&#8217;s a quick guide.</p>
<p><strong>1. Create the recovery storage group</strong><br />
This just creates an empty storage group for the recovery database, nothing fancy going on here.</p>
<pre>[PS] C:\&gt;new-storagegroup -LogFolderPath F:\Backup\Restore\Logs -Name ExchangeRestore -SystemFolderPath F:\Backup\Restore\Data -Recovery
Name                      Server            Replicated        Recovery
----                      ------            ----------        --------
ExchangeRestore           IMM-CORE-EXCH01   None              True
[PS] C:\&gt;</pre>
<p><strong>2. Create a new recovery mailbox database</strong><br />
This creates a new empty database for NTBackup to restore to.</p>
<pre>[PS] C:\&gt;new-mailboxdatabase -mailboxdatabasetorecover "Mailbox Database" -storagegroup ExchangeRestore -edbfilepath "F:\Backup\Restore\Data\Mailbox Database.edb"
Name                 Server          StorageGroup         Recovery
----                 ------          ------------         --------
Mailbox Database     IMM-CORE-EXCH01 ExchangeRestore      True
[PS] C:\&gt;</pre>
<p><strong>3. Restore the mailbox database via NTBackup</strong><br />
Now restore the mailbox database  via ntbackup, remembering to tick the &#8220;this is the last backup to restore&#8221; option. Tick the check box not to mount the store after the restore completes.</p>
<p><strong>4. Mount the restored mailbox database</strong></p>
<pre>[PS] C:\&gt;Mount-Database -Identity 'ExchangeRestore\Mailbox Database'
[PS] C:\&gt;</pre>
<p><strong>5. Restore the mailbox to a folder in another mailbox</strong><br />
I prefer to redirect the mailbox restore elsewhere, just so that I can look through it and decide what I want to do with the restored data. Below I&#8217;m restoring my mailbox to an existing mailbox called &#8216;Restore&#8217;.</p>
<pre>[PS] C:\&gt;Restore-Mailbox -RSGMailbox 'Dave Hope' -RSGDatabase 'ExchangeRestore\Mailbox Database' -id 'Restore' -TargetFolder 'Restore'
[PS] C:\&gt;</pre>
<p><strong>6. Dismount the recovered mailbox database</strong><br />
We should now be done with our recovered mailbox database, so we can dismount it ready for removal.</p>
<pre>[PS] C:\&gt;Dismount-database -Identity 'ExchangeRestore\Mailbox Database'
[PS] C:\&gt;</pre>
<p><strong>7. Remove the mailbox database</strong><br />
This removes the mailbox database from the storage group &#8211; it doesn&#8217;t actually delete the files.</p>
<pre>[PS] C:\&gt;Remove-MailboxDatabase -Identity 'ExchangeRestore\Mailbox Database'
[PS] C:\&gt;</pre>
<p><strong>8. Remove the storage group</strong><br />
Since we shouldn&#8217;t need out recovery storage group (at least, until next time) we can remove that too.</p>
<pre>[PS] C:\&gt;Remove-StorageGroup -Identity 'ExchangeRestore'
[PS] C:\&gt;</pre>
<p>There, all done! Good luck with your Exchange restore.</p>
]]></content:encoded>
			<wfw:commentRss>http://davehope.co.uk/Blog/exchange-2007-restore-ntbackup/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Exchange 2007 Migration notes</title>
		<link>http://davehope.co.uk/Blog/exchange-2007-migration/</link>
		<comments>http://davehope.co.uk/Blog/exchange-2007-migration/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 11:43:07 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Powershell]]></category>

		<guid isPermaLink="false">http://davehope.co.uk/?p=55</guid>
		<description><![CDATA[At work I started off an exchange 2007 migration which has been long overdue. In the hope of providing some insight into migrations that others may still have to do, here are some notes. Combining the CAS &#38; Mailbox roles prevents OWA proxying If like me you start off your Exchange migration by just adding [...]]]></description>
			<content:encoded><![CDATA[<p>At work I started off an exchange 2007 migration which has been long overdue. In the hope of providing some insight into migrations that others may still have to do, here are some notes.</p>
<p><strong>Combining the CAS &amp; Mailbox roles prevents OWA proxying</strong><br />
If like me you start off your Exchange migration by just adding a CAS role on a new Exchange 2007 server you&#8217;ll notice that it&#8217;ll proxy the webmail requests for your 2003 servers.</p>
<p>If you decide to add the mailbox role to that server, it stops doing that and just redirects clients. That&#8217;s fine internally, but if you have external people trying to access webmail it&#8217;ll just send them to https://exchange2003.nwtraders.local/exchange/</p>
<p><a href="http://support.microsoft.com/kb/932438">Microsoft have a workaround</a>, which is simply deploying a standalone CAS role. Not a possibility for me, so my only option is to have two seperate OWA URLs.</p>
<p><strong>Migrating AutoAccept sink resources to Exchange 2007 Rooms &amp; Resources</strong><br />
Microsoft implemented booking in Exchaneg 2007, which i&#8217;m ecstatic about (no, i&#8217;m not being sarcastic). To migrate your legacy resources move the mailbox, and then run the following:</p>
<pre>Set-Mailbox -Identity ConferenceRoom1 -Type Room
Set-MailboxCalendarSettings -Identity ConferenceRoom1 -AutomateProcessing AutoAccept</pre>
<p>For more infromation, <a href="http://technet.microsoft.com/en-us/library/bb232130.aspx">see here</a>.</p>
<div class="sponsoredWords">There are different types of <a href="http://www.envisionwebhosting.com">web hosting</a> including reseller, shared, free and <a href="http://www.envisionwebhosting.com/dedicated-servers.htm">dedicated servers</a> hosting. A dedicated server allow you to use the server with full control like <a href="http://www.envisionwebhosting.com/domain-registration.htm">domain registration</a> etc. you can also offer web hosting servers to the candidates with <a href="http://www.envisionwebhosting.com/web-design.php">website design</a> and seo tools.</div>
<p><strong>Annoying things they missed</strong><br />
Nothing&#8217;s perfect, but if Microsoft could add the followign in a patch/service pack i&#8217;d love them forever.</p>
<ul>
<li>Powershell cmdlet to manage calendar permissions &#8211; at present, you have to give yourself permissions to the mailbox, open it and set the calendar permissions. Yawn.</li>
<li>Functionality to set default document favourites &#8211; Documents in OWA 2007 is great! but, with a non-technical staff it&#8217;d be nice to provide some common shares (their home directory for example) and perhaps our general document store</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://davehope.co.uk/Blog/exchange-2007-migration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

