Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We currently use Public Folders with Exchange 2010. We have a series of shared calendars throughout the organization. Some of the items posted require us to set up devices (video conferencing for example) at a certain time, but the end users who schedule these appointments aren't always the best at letting us know when it is (even though it's supposed to be several days in advance/notice). Other than the obvious way of just going out to those individual calendars multiple times a day to look, is there a way to have Exchange (or powershell, Outlook, etc) alert us via email when an event has been created? For instance if Powershell could go to the Public Folder database, search for any entries added within the last 12 hours, then email me to let me know. Even if I could set it to run once a day, each morning at 7.30 am, that would be a huge help. Thoughts?


share|improve this question
I know it's nearly two years later, but did any of the answers solve your problem? :) – Jon Kloske Aug 26 '14 at 0:31

we actually used to do this with PHP EWS where we'd frequently during the day scrape a set of calendars for changes (by comparing them with a database we kept locally of the last values we'd seen for that calendar) and then emailing us a summary list of changes detected.

I'm in the process of rewriting this in PowerShell (the EWS library was for 2007 and doesn't yet work in 2010) at the moment, so it's quite fresh on my mind right now :)

In terms of determining when something is added (or importantly changed) I saw someone trying to use the unread status of a message as a way of detecting this, but they were running into problems where the unread status wasn't changing properly. Honestly, just doing a diff to a previous seen state that you keep locally (either database, or some sort of flatfile) is probably the most reliable way to do this. You can use the CalendarItem.Id.UniqueID subproperty to identify entries, and the CalendarItem.Id.ChangeKey subproperty to determine when they change.

If you're looking for a place to start to look into the actual powershell you might use to get events from the calendar, here's a good one:

(as noted, you'll need to start by downloading the most recent powershell integration stuff from here:

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.