powershell

Service Pack 3 for Exchange 2010

Service Pack 3 for Exchange 2010

So I only recently got around to installing SP3 for Exchange 2010 (I’ve been on holiday for a few weeks and what not) and thought I’d share my experience around the experience!

Now you may or may not know this service pack updates the Active Directory Scheme which basically means when you install this update you must be a Schema or Enterprise Admin to run the installation!!

Now if like me your Exchange Server sits on a completely separate domain to your Root Active Directory servers you’ll need to do a little planning.

For example I have a domain, let’s call it BohemianGrove.co.uk and a sub domain called Corp.BohemianGrove.co.uk.  BohemianGrove.co.uk is where my root Active Directory Domain Controllers are installed which means that’s where the Schema settings are stored for Exchange, these settings then filter down to sub domains which in my case is where my Exchange servers are installed i.e Corp.BohemianGrove.co.uk.

All this means in regards to this update is I’ll need to run Setup.com /prepareAD from BohemianGrove.co.uk as an Enterprise Admin before I run the update from the actual Exchange servers.

Exchange_Adprepare

So from the above you can see that all went very smoothly luckily for me (I won’t write about how I tried to run the SP2 update two or three times which produced soooo many errors)!  From here I waited 20 mins for the Schema update to replicate down, although you can force a update via Active Directory Sites and Services.

 

Next came the update for the servers but please note, install the update on the roles in this order:

Client Access servers,

Hub Transport (My HT and CAS roles are on the same server),

Edge Transport servers,

Mailbox servers,

Unified Messaging servers (I don’t have any, does anyone?),

 

Before I start talking about the install I should mention that you should only install the update on nodes or DAG servers that arnt active i.e. you need to fail an active server to a passive server and run the update, then fail back.  Here’s a very quick how to do this:

 

CAS/Hub Transport –

–  Stop the active node in the cluster via Network Load Balancing Manager by right clicking a node and click Clicking Control Host then Stop (or DrainStop if your worried users are connected still),

– In Network Load Balancing Manager right click the same node and choose properties and set the Default state to STOPPED, this will stop the node auto joining the cluser when once it reboots,

– Finally run the update, reboot the server and re-start the Default state.

– Do the above to the next node.

 

Mailbox Server  with a DAG –

–  Find the active database plus where the PAM role is and make a note:

–          Check the cluster group:

–          The above is just an initial check to ensure that the environment is in a situation where it is ready for manual failover.  The next set of instructions will fail the DB over to the passive server, prevent DB automounts, and reconfigure the cluster.

–          Run DAG Maintenance script (run from C:\Program Files\Microsoft\Exchange Server\V14\Scripts):

(please note overrideMinimumTwoCopies, this is because I only have two servers in my DAG).

–          This fails the active DB over to MB02. A quick check of the Management Console will show this is correct.

–          Rerunning the PAM holder and Cluster owner commands will show the second server as the master,

–          You can now conduct your tasks on this server with no Exchange downtime,

–          Once your tasks are complete, it’s time to fail the services back,

–          From Exchange Powershell, run; (From C:\Program Files\Microsoft\Exchange Server\V14\Scripts)

–          There is no output from this script as it simply allows us to now make changes. Fail databases back

–          Switch Cluster Master cluster group

–          Finally run both the PAM and Cluster query commands to ensure both roles are back with the active server,

 

So run the install:

Extract_Binary

 

Upgrade

Exchang Start

 

The install will check if you’ve updated the schema and if your servers, click Upgrade and the install will start, be warned it can take a while to install, mine took about 30 mins which seemed to be mostly the language pack:

Readiness

Install

Fortunately for me the install went smoothly on all my servers but just be careful to only run the update on servers that are not active.  Also note that once you update a server with a database on you cant fail that database to a none updated server.

Finally make sure you run Exchange 2010 SP3 Rollup 3 as this will fix a heap of issues with Exchange 2010 SP3.

Tags: , , , , ,

MAPI Connections to Exchange 2010

Posted by robd on August 19, 2013
exchange 2010, Office 2010, powershell / 5 Comments

So had a bunch of errors on my Exchange 2010 server today, namely:

Event ID 9646 MSExchangeIS

The error doesn’t give much away but basically what its saying is:

A user with GUID “ccd83bc42-1bff-459e-9db2-558cc68478b9” has more than 500 open folders in a single session, because exchange only allows 500 open folder connections (for a cached mailed) at a time its going to screw with the user and in our case not automatically update the users folders in Outlook 2010.  Please note this is different from open MAPI connections to the mailbox.

Note this has been edited with help from Mark Daley who stated:

the objtfolder is an ‘Open Item Limit’ ie the limit of the number of folders that are being opened in a single session, not the number of connections being made to the mailbox which is a session limit See (http://technet.microsoft.com/en-us/library/ff477612(v=exchg.141).aspx). This limit is the total for the session so if a user has 250 folders in their own mailbox and say 300 in a shared mailbox then the limit will be breached. The other thing that should be explained in that this is only likely to occur when the mailboxes are cached (shared and non-shared) as it is the consequence of caching that is causing the limit to be breached because each folder is opened / counted during the mailbox sync process. Therefore turning off caching mode for either the primary mailbox or just the shared mailbox is another fix for this issue.

 

You may be wondering how a user could have more than 500 connections, well in our case the user had two mailboxes attached to their own mailbox and all the folders (inbox, outbox etc) together added up to more than 500 folders.

You can scan a mailbox with Power Shell to determine the number of folders:

So lets say you see the errors on your Exchange 2010 server but don’t know who’s having the issue, you find Users MAPI GUID’s by running the following Power Shell command:

Once you know who the user is what can you do, well there’s four options in my mind:

1) Tell the user to re-organise the folder structure,

2) Remove some of the extra Mailboxes from a users mail profile if possible (you could add a extra profiles to Outlook, making Outlook prompt on start up),

3) Do not cache the mailbox in Outlook or simply do not cache the additional mailbox in Outlook.

4) Change Exchange 2010 to allow more than 500 folder to be open at a single time for cached mailboxes!

 

To proceed with 4) you’d need to do the below but be warned if large quantities of users connected with plus of 500 folders your server performance will suffer drastically:

Log onto all your mailbox servers and create the following registry key:

  1. Click Start, click Run, type regedit, and then click OK.
  2. Expand the following registry subkey:
    \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem
  3. Right-click ParametersSystem, point to New, and then click Key.
  4. Type MaxObjsPerMapiSession, and then press ENTER to name the new sub key.
  5. Right-click MaxObjsPerMapiSession, click New, and then click DWORD Value.
  6. Enter the object type as specified in the event description, and then press ENTER.
  7. Right-click the object type that you entered, and then click Modify.
  8. In the Value data box, type the number of objects to which you want to limit this entry, and then click OK.

 

Tags: , , , , , , , , , ,

Exchange 2010 – Health Report

Posted by robd on February 14, 2013
exchange 2010, powershell / No Comments

So the other day I wanted to run a health report on Exchange servers to show management that our Exchange environment is happily chugging away and their email problems are likely be down to inferior laptops or iPads or what ever!

Tha’ts when I found a brilliant PowerShell script written by Paul Cunningham that runs a health report on all the Exchange servers in your environment and emails you a report.

You’ll need to setup the email bit in the script, for example:

SMTP
Then just run it, for example:

The it produces a very useful report:
report

 

Tags: , , , ,

When Exchange 2010 Breaks

Posted by robd on January 11, 2013
ESX, exchange 2010, powershell, WAN / No Comments

Part 1

So recently a client had some WAN issues where the WAN kept dropping packets on the primary link, meaning some network traffic would work fine and other network traffic would fall off the face of the planet!!

 

Unfortunately the system affected the most was Exchange 2010!!  The site had Exchange 2010 DAG set-up between two sites.  One on Site A and another on another site B with the File share witness on Site A.  So because some traffic was flowing nicely and some wasn’t some of the cluster services were up and some went down meaning the DAG got in a pickle!

 

Site B ended up taking ownership of the DAG and wouldn’t let go because he file share witness wasn’t available.  So as people could still get mail, I patiently waited for the WAN to be fixed (in the end someone pulled the primary link which forced the secondary to take over and everything became hunky dory).

 

So now the WAN was back and happy but still the cluster service wouldn’t appear, so after digging the arp entries were missing (no idea why), so ended up creating another IP for the cluster service….Done.  It’s up, time to reseed!

 

Update: Well shit me, MS know about this:

http://support.microsoft.com/kb/2743761

 

Well anyway I wish the reseed was that easy! During the issues, the mail store was un-mounted and now it won’t mount!! Booo, so another admin decided to run eseutil and recover the DB which worked but then decided to seed the wrong way meaning site B now has an old mail store with no mail from that day!!  BUGGER!

 

Part 2

 

So I need to rerun all the mail and then import and luckily all the missing mail logs are still on Site B!

I know what you’re thinking:

 

Restore the EDM file from a backup,

Rerun the Logs via ESEUTIL,

Mount the recovery DB,

Merge users,

Bam.

 

Well the business was very panicky now and didn’t want anyone touching anything on Exchange till things settled down, fair enough a day’s worth of mail is missing at the moment so people are touchy.

 

So I decide to make use of the most excellent Veeam feature SureBackup, which will allow me to restore the entire exchange live setup including a DC in lab environment without touching the live environment!!  Brilliant!

 

So I set it up, add a host, some storage, make sure I have a good backup of Exchange and it runs, great!!  Be careful though as it uses snap shots heavily so every change adds to a delta file meaning storage gets eaten!!  So here I am with the live environment in a lab environment, there some issues as I cant restore site B, so I have to remove the DAG and the other site which I do via ADSI edit (quick and easy but dangerous)!

 

So I copy over the recovered DB I restored with file level restore on veeam (copied by creating a HD in ESX and mounting it on veeam and copying file to it then mounting in my lab),

Create a recovery DB:

 

Checked the logs:

 

Replayed:

 

(May of run ESEUTIL /p too, cant remember)

 

Mounted!

 

Emails are all there but in the disconnected items section, reconnect to a test db and GREAT the emails are there!!

 

So connect all the mailboxes (manually unfortunately), then export them to pst (to my mounted HD):

 

Un-mounted the HD, added the HD to the live environment and imported the PSTS:

Tags: , , , , ,

Mail tips with Exchange 2010

Posted by robd on October 09, 2012
exchange 2010, powershell / No Comments

Mail tips can be brilliant in Exchange 2010, its an easy way of getting a message to a user before he or she sends a email.

For example we use mail tips to let people know the SLA’s around our service desk:

So, how to do it:

Go to an Exchange Server,

Open the Exchange Shell,

Type:

 

Hit enter

Done.

Tags: , , ,

Out Of Office and Room Booking Requests Issues

Posted by robd on May 23, 2012
CAS, Database, exchange 2010, Office 2010, OOF, Out Of Office, powershell / No Comments

What a week!

So Monday comes along and we get a few users complaining that they couldn’t turn off their Out Of Office.  So after a bit of head scratching I managed to turn it off by doing the following:

–       Downloaded MFCMapi.exe
–       In the main window choose;
–       Session-> Logon and Display Store Table
–       Select the Outlook mail profile to logon to when prompted.
–       You’ll now see a list of your configured message stores in your mail profile.
–       Select your mailbox by looking at the Display Name column.
–       In the pane below, some properties will get loaded.
–       Look at the Property Name(s) column and select the entry called;
PR_OOF_STATE
–       When you look at the Value column for this property, you’ll see it is now set to True.
–       Double click the entry to disable the check box in front of “Boolean”.
–       Press OK to close the dialog.
–       Log off your session via;
–       Session-> Logoff (thanks to MSOutlook.info)

Now this worked but oddly enough, it kept happening for more users.

During the day a few other users complained that when they email a meeting request to a room the room the request doesn’t get processed by the room and the meeting doesn’t get booked.

So after a think, I started to wonder if maybe this was a issues with our Microsoft Exchange Mailbox Assistant and the Active Directory Topology Service on our Mailbox Server..

So that evening I did a quick restart of the services…nothing.

So next I tried a trusty server reboot of both our Hub Transport / Client Access and our Mailbox server…nothing!

At this point I’m mildly panicking! So as a methodical thinker,

–       I created a new user and tested OOF – Broken.
–       Tried to repair the user with:

–       Moved the user to another Mailbox Database – IT WORKS!!!
–       Moved the Room to another Mailbox Database – IT also Works!!

So it looks like the Database is knackered!  Well I guess I could move all the users to another Database but that would ruin my DAG so I’d rather not! So what’s my other option, repair the database I guess and look for any broken mailboxes!

First things first, back up the Database, thank you Veeam!

Then ran the following via PowerShell:

And kept an eye on the event viewer for the following:

10059- A database-level repair request started.
10047- A mailbox-level repair request started.
10048- The mailbox or database repair request completed successfully.
10059- A database-level repair request started.
10062- Corruption was detected. View the repair log details to see what the corruption type was and if it was repaired.
The following is an example of the information you would get if the repair request detected and repaired a mailbox with event ID 10062 – Corruptions detected during online integrity check for request 321c88e0-0ad2-4e15-b93b-197a94efd1bd
Mailbox:C51AB7C3-9EB7-40C9-AAC6-953FD084AF59
Database:MBD01
Corruption Is fixed FID Resolution
Folder BacklinksYes1c7c-BC72D267870102Update
Folder Aggregate CountYes1c7c-BC72D267870102Update

So after I ran this, I found absolutely no faulty mailboxes which made me worry that this repair had done a sum total of nothing!!

But Wham, it all seems to be working!!

Oddly enough the following week another Database on another site started doing the same the thing but again a database repair sorted the issue…again though finding no faulty mailboxes.

Hope this helps someone else.

Tags: , , , , ,

Exchange 2010 and Calendars

Posted by robd on January 16, 2012
powershell / No Comments
Here’s how to check who has access to a Calendar with Exchange 2010:

 Log onto a Exchange 2010 server,

Open Exchange Management Shell,

Run the following:

Calendar isnt the only variable you can set with above command, you could use the following for the same result:
  • Inbox
  • SentItems
  • DeletedItems
  • Calendar
  • Contacts
  • Drafts
  • Journal
  • Tasks
  • Notes
  • JunkEmail
  • CommunicationHistory
  • Voicemail
  • Fax
  • Conflicts
  • SyncIssues
  • LocalFailures
  • ServerFailures

 

Copy Protected by Chetan's WP-Copyprotect.