Testing for bad SMTP Addresses

While working on my latest project,  I encountered a significant number of objects with malformed SMTP addresses.  These appeared to have been objects that had been somehow manually modified over the years by directly writing to the proxyAddresses attribute in Active Directory, bypassing an API that would check for correctly-formatted addresses.… [ Continue reading ]

Updating Remote Recipient Types on-Premises

During migrations from third-party platforms like Gmail or various POP3 providers or from hosted Exchange environments, we frequently see customers provisioning remote mailboxes for shared resources.

This works fine for three out of four recipient types. You can run New-RemoteMailbox for a regular user or specify a Type (Room or Equipment) to get the appropriate mailboxes. … [ Continue reading ]

Office 365 License Assignment

There is perpetually a lot of angst around licensing users for Office 365 workloads.  Most of my customers over the years have wanted to ease into deployment, only enabling certain services at a time.  Of course, as an evergreen service, we are always adding features, leading to new service plans to disable as you discover them.… [ Continue reading ]

Remove a user’s oldest ActiveSync device

A few weeks ago, I saw something come up for a peer that needed a way to manage the maximum number of ActiveSync devices that a user had connected in Office 365.  Using only native Exchange policies, we can’t do that (MDM solutions solve this problem by manning the Exchange ActiveSync quarantine). … [ Continue reading ]

Using XML to Backup and Restore Office 365 Settings

Frequently, I am asked to make changes to a customer's environment.  I'm a belt and suspenders kind of guy, so my backups have backups.  At any rate, normally when I am performing changes in a tenant (or Exchange on-premises environment, for that matter), I make two sets of backups–one by piping a Get-cmdlet to Export-CSV (so I have a readable copy), and one by piping the same Get-cmdlet to Export-Clixml (so I have a way to set the nodes as parameters and import them back).… [ Continue reading ]

Customizing the Windows PowerShell Console

Another blog on customizing the PowerShell console?  Really?

Yes.  This is actually what I use on a day-to-day basis as a consultant managing many projects at once.  I find that I’m usually running various PowerShell sessions concurrently and having to keep which one is which can be difficult without having to stop and check which server or Office 365 tenant I’m connect to, or what type of activity I’m performing.… [ Continue reading ]

Disconnect all PSTs from the Default Outlook Profile

Today, one of my consultant peers posed a problem to me: a customer wanted to import all PSTs into Office 365 archives, but in order to do that, had to disconnect them from the user’s default Outlook profile.

Fortunately, you can expose a number of methods and properties from the Outlook ComObject inside PowerShell, so this wasn’t terribly difficult (although, I’m still trying to figure out how to do this against all Outlook profiles configured).… [ Continue reading ]

Wipe Content from an Exchange Online Mailbox

This tool has been updated with new options.  See https://bhr.62e.myftpupload.com/2017/10/19/update-to-wipe-exchange-online-mailbox-script/.  This tool also has a new home: https://www.powershellgallery.com/packages/Wipe-ExchangeOnlineMailbox/

Periodically over the years, I’ve run into content problems trying to migrate data to Exchange Online using third-party migration tools–they somehow get stuck, don’t like something existing in the destination mailbox (or didn’t write it properly in the first place) and you need a clean mailbox to restart the process. … [ Continue reading ]