There are 26 entries in this Category.

Dynamic Distribution Groups based on user’s home database

With some recent Exchange database consolidation at a client, one of the requirements came up from the CIO to have a way for the company’s communications department to notify people effected by a certain database issue (outage, heavy IO, whatever). We’ll, they have both primary and archive databases, which could be activated on different servers. There were upwards of 100 databases company wide, and so the initial thought was that this is going to be a manual effort to create distribution lists, manage user membership, and hope they never changed database. That wasn’t going to happen. Continue reading “Dynamic Distribution Groups based on user’s home database” »

Excluding Domain Controllers in Exchange 2010

Update 5/31/2013: DO NOT PUT YOUR LIST IN QUOTES! Putting the list of domain controllers within quotes causes Exchange to view that item as a single name, versus parsing out at the commas. I’ve updated the Powershell commands below to show it without the quotes.

I’m back and in action working as an Exchange SME from being involved in an SCCM project for a few months, and one of the issues I ran into at a client is that they needed to roll out a few new domain controllers in their empty root domain as well as their child domain. Unfortunately there were some deployment issues that caused the OAB generation to fail when it his these problematic DCs.

While we didnt want to use the StaticDomainControllers and StaticGlobalCatalogs switch for the Set-ExchangeServer command, in this case until we get the problematic DCs fixed, we decided to use the StaticExcludedDomainControllers switch. We could optionally set each one individually:

Set-ExchangeServer -Identity MP1EXCCAS501 -StaticExcludedDomainControllers MP1INFADS012.child.corp,MP1INFADS003.parent.corp,MP1INFADS002.parent.corp

Or pipe the list of servers into the command to set them  all at once:

Get-ExchangeServer | Set-ExchangeServer -StaticExcludedDomainControllers MP1INFADS012.child.corp,MP1INFADS003.parent.corp,MP1INFADS002.parent.corp

Once this was set, we ran into the age old issue that it wasn’t being reflected through the Get-ExchangeServer command. I don’t know WHY Microsoft did it this way, but you have to use the -STATUS switch to see the results reflected properly. I always prefer the format table command and list out each of the DC settings to ensure things took properly.

get-exchangeserver -status | ft name,staticexcludeddomaincontrollers,staticdomaincontrollers,staticglobalcatalogs

Based on AD replication, you may need to give it some time (up to 60 minutes) to bake in, but you can always open the Event Log on your server and in the Application event log look for MSExchange ADAccess 2080 Topology. It should not show those excluded domain controllers:

Log Name:      Application
Source:        MSExchange ADAccess
Date:          3/19/2013 12:36:30 PM
Event ID:      2080
Task Category: Topology
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      mp1excmbx504.child.corp
Process MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=1740). Exchange Active Directory Provider has discovered the following servers with the following characteristics:
(Server name | Roles | Enabled | Reachability | Synchronized | GC capable | PDC | SACL right | Critical Data | Netlogon | OS Version)
MP1INFADS001.parent.corp CDG 1 7 7 1 0 1 1 7 1
MP1INFADS011.child.corp CDG 1 7 7 1 0 1 1 7 1
MP1INFADS501.parent.corp CDG 1 7 7 1 0 1 1 7 1
mp1infads511.child.corp CDG 1 7 7 1 0 1 1 7 1
MP1INFADS012.child.corp CDG 1 7 7 1 0 1 1 7 1
MP1INFADS002.parent.corp CDG 1 7 7 1 0 1 1 7 1
MP1INFADS003.parent.corp CDG 1 7 7 1 0 1 1 7 1
mp1infdns501.child.corp CDG 1 7 7 1 0 1 1 7 1
mp1infdns502.child.corp CDG 1 7 7 1 0 1 1 7 1


Integrating Exchange 2013 + Lync 2013 for UCS & OWA integration

Update 7/13/2015 – Two and half years after the original post and finally some updates! I have had a chance to fully patch my environment to the latest updates for Exchange and Lync 2013. With some troubleshooting I have it working, and you’ll find updates scattered throughout this article.

I had previously written an article on how to integrate Exchange/Lync 2010 for IM capability via OWA, and now that Exchange/Lync 2013 have been released, Microsoft has maintained the compatibility but thankfully with an easier-to-achieve process.

Because of the Unified Communications Managed API (UCMA) 4.0 requirement on Exchange 2013 for the integrated UM role, both platforms have a similar set of prerequisite requirement. That was half the battle in 2010, because if you didn’t have the correct version of the patches, or didn’t install them in the right order, things would fail.

Along with OWA integration, Lync now supports a Unified Contact Store (UCS), which was somewhat hinted to in 2010 but didn’t come to fruition until 2013. This means that you don’t have to maintain a separate set of contact from Exchange, which was somewhat frustrating and cumbersome. This will be any admin’s friend in pushing out set groups of contacts 🙂
Continue reading “Integrating Exchange 2013 + Lync 2013 for UCS & OWA integration” »

Exchange 2013 Liftoff! Part 1 – Installation

Just this past week, Exchange 2013 has been RTM’d (Released to Manufacturing)! We’re still a few months away before the general public can start their installs, possibly longer for migrations since we’re waiting for the release of SP3 for Exchange 2007/2010 specifically for Exchange 2013 migration – but more on that later.

For now, it’s time to take a look under the hood to see how Microsoft has revamped the setup process. Plus, we’re going to dig into some troubleshooting.

We’re diving straight into a build on Windows Server 2012 Standard

Continue reading “Exchange 2013 Liftoff! Part 1 – Installation” »

Exchange 2013 Liftoff! Part 1.5, Installation Troubleshooting

Updated 4/9/2014 with additional information to hopefully help you :mrgreen:

Now Microsoft has made the Exchange 2013 setup is pretty easy, but what happens when you run into problems? There are a myriad of different ways an install can go upside down, and I’m going to try to touch on as many as I’ve seen here. I guarantee it won’t cover them all but I’m more than willing to jump in and take a look with you – just leave me a blog post to take it from there.

Installation Media issues

I’m going to start here and reiterate that the consistency of your installation media is PARAMOUNT. I’m not sure why I’ve seen so many install issues with Exchange 2013 because of a bad ISO or install EXE. I can’t say if it’s due to issues during the download, from the Microsoft end, or at the client end – take your pick, I’ve seen them all. I’ve even tried to copy the SP1 EXE package from a network share to my Exchange server and end up with the File is Corrupt message.

You could get as far as one of the 15 steps for install and then magically have Exchange install bomb. The bad thing about this is if it happens during a step, and you try to rerun setup using this same media, it could make things worse to where you would need to perform something like the Uninstall & Cleanup process.

My recommendation would be 2 fold:

  • For an ISO, copy the files off the disk to a local folder on the Exchange server itself. If you seen Incorrect Function using the GUI, or like in the case below using ROBOCOPY, cut your losses and download a new copy. Don’t keep retrying the install

  • For the self-extracting package, download right from the Microsoft site (or use a USB drive if you’re not virtual, but who isn’t these days) on the Exchange server itself, then expand to a folder on the same machine. Don’t try to expand to a network path!!!!

Rerunning Installation

If you rerun setup from media, its smart enough to detect know and try a repair

In this scenario, using Programs and Feature to try and perform a change to fix what is broken.

Continue reading “Exchange 2013 Liftoff! Part 1.5, Installation Troubleshooting” »

Getting Mailbox Statistics from a select group of users

I’m working a project where they’re targeting a pilot group of users for mailbox quota information, and I was requested to put together a Powershell command that allowed them to put together a list of users, gather some information on each one regarding their mailbox usage, and dump that report out to a CSV. Well, it look a little bit of work, trial & error, plus all round Googling, but I’ve come up with the gem that works.

Your input CSV, list.csv, needs only to be 1 column with Row 1 titled Name and the remaining rows as the first/last name of the users you want to gather information on.

Save this file below as report.ps1, and fire it up:

Import-Csv “c:\list.csv” | ForEach-Object -Process {Get-Mailbox $_.Name | Select-Object name,@{n=”Size(MB)”;e = {$MBXstat = Get-MailboxStatistics $; $MBXstat.totalItemsize.value.toMB()}},@{n=”DeletedSize(MB)”;e = {$MBXstat = Get-MailboxStatistics $; $MBXstat.totalDeletedItemsize.value.toMB()}},@{n=”Items”; e = {$MBXstat = Get-MailboxStatistics $ ; $MBXstat.itemcount}},@{n=”DeleteItems”; e = {$MBXstat = Get-MailboxStatistics $ ; $MBXstat.deleteditemcount}}} | Export-CSV “c:\userstats.csv” -notype

You’ll be able to pull the the total items, both in the mailbox and deleted items dumpster, as well as the size of the mailbox plus deleted items dumpster. If you want to add more rows from either the Get-Mailbox or Get-MailboxStatistics command, its pretty straight forward!

Can’t create/mount a new Exchange 2010 database in a multi domain environment

This morning I went to create a new database on Exchange 2010 server in a client’s new server environment, and when I did it failed to mount due to the following error.

Couldn’t mount the database that you specified. Specified database: EMAIL5DBTEST; Error code: An Active Manager operation failed. Error: The database action failed. Error: Operation failed with message: MapiExceptionNotFound: Unable to mount database. (hr=0x8004010f, ec=-2147221233)
. [Database: EMAIL5DBTEST, Server:].

I did a little more digging and found my answer. In my case, the production domain is a child (ad.domain.local) of the empty root domain (domain.local). The AD structure is flat, meaning all of the domains are in a single AD site to allow for continuity and AD replication, so the list of the domain controllers that Exchange 2010 sees are across the parent and root domain.

The easiest way to set Exchange to recognize the domain controller in the child domain is to hard set it inside of Powershell, and Microsoft KB 977960 gives us the quick Powershell on how to do this:

Set-ADServerSettings –PreferredServer

Not sure why Exchange likes to see the DCs in the root parent domain first over the ones in their own domain. Microsoft need to look into this!

Restoring a deleted Exchange 2010 mailbox from PowerShell

In our hosted Exchange 2010 SP1 environment we have to administer the environment via PowerShell, versus using the traditional Exchange Management Console (EMC) – one of the lovely limitations of using /hosting mode. Surprisingly, after almost a year of being in production this one had never come up until just yesterday: a user had been deleted (via Exchange Control Panel, which you can still thankfully use for end-user management) and their mailbox still sat on the server thanks to deleted mailbox retention. But how would I approach recovery

Continue reading “Restoring a deleted Exchange 2010 mailbox from PowerShell” »

Woohoo – its official!

With some of the new found time and freedom I’ve found in my new job I was able to spend a week studying the 70-662 and 70-663 exams, and took the first last Friday and the last this Tuesday. We’ll, I was happy to wake up this morning and find this email:

So I rushed over to the Microsoft Learning site to view my transcript, and it was there:

Now it’s official – I’m an Enterprise Messaging Administrator on Exchange 2010!

Resource Room Calendar Permissions in Exchange 2010

With our Company’s recent move to Exchange 2010, we decided to move away from a “resource calendar” setup on SharePoint to using the Room Resources in Exchange and scheduling our conference rooms against them instead. What I found out is that once the mailboxes were setup (and Exchange 2010 does a great job of automating this whole process without the need of additional PowerShell) when I went to add an event it would show the time as being blocked out but would not give any event details or let me open it without an error.

If I went to try and request the resource calendar to share itself with me, I would give an error saying that the network doesn’t support this type of request.

I tried to use the Add-MailboxFolderPermission command and add Default to the mailbox but I got the message “An existing permission entry was found for user: Default.”. What I needed to do was modify the existing permission for Default on the Calendar by the following:

Set-MailboxFolderPermission -Identity lrgconfroom@pts.local:\Calendar -User Default -AccessRights Reviewer

Once this was complete, I could have simply restarted Outlook for the permissions to take place but after waiting a few minutes I could see the event with no problem: