My HTML Calendar Generating Script for Exchange 2003

In my office, we have over 60 different resources that can be booked online. These resources (including conference rooms, laptops and LCD projectors) can all be scheduled via Outlook and Microsoft Exchange, using Microsoft's latest Auto-Accept Agent. The main draw back is that you can't really tell who has what room for how long. With the previous version of Exchange (5.5) there where issues with users having permissions to the calendars. Outlook would corrupt the conference room calendar and cause the free/busy information to become corrupted.
I developed this script to query the resource calendars and not conflict with the free/busy info. This latest version uses WebDAV to query the calendar (similar to if the user is accessing via OWA!). I have scheduled the script to run every 15 minutes using a Windows Scheduled Task. To export a calendar with 270 items take around 5 seconds.
To configure the script:

  1. Create your conference room mailboxes and configure for the AAA to run
  2. Create a service account in your environment. It will need to have an Exchange Mailbox associated with it.
  3. Via Outlook, grant the service account "REVIEWER" permissions to the conference room calendar. (Right-click | Properties | Permissions | Add...)
  4. On your IIS server, create a new shared folder, and grant the Service Account - Full Control permissions to this folder.
  5. Download and extract the ZIP file below to a server in your environment.
    • (11/21/2005) I've just uploaded an update to the script. This version includes a settings file, which eliminates the code modifcation listed below. Extract this file to the same folder, and modify the corresponding SETTINGS.TXT file.

    Note: Try to avoid putting system variables (? * and \) in the Display Name field.

  6. Double-click on the VBS file and see if it successfully generates the HTML file in the UNC path. If not, verify permissions to the folder. Keep troubleshooting until the HTML file is successful generated.
  7. Now that you have an HTML file, modify the INDEX.HTML file to point to this new resource.
    We've broken our rooms into physical areas.
    Copy the code below for each area, then modify the
     
    a href=
    tags to point to each resource.

            Building A
    <ul id="Bldg A">
    <li><a href="TestResourceMailbox.HTML" target="main">Test mailbox</a>
    <li><a href="Home.HTML" target="main">Home Page</a>
            </ul>

    The JavaScript code will make it into a collapsible tree only showing resources they are looking for.
  8. On the server where you placed the VBS file, create a scheduled task to run the VBScript. This scheduled task should run at regular intervals. I've scheduled them to run, Daily starting at 6AM, repeating every 15 minutes, for 15 hours.
  9. Create a virtual web site, referring to the Index.HTML file, and advertise it to your employees.
  10. You can hide the service account mailbox until you need to add a new conference room to the web page.

That's it! Fairly easy to create and maintain. In a future release I plan to have the script update the local Application Event Logs. This would allow products like NetIQ to monitor the script. Currently a log file is written locally.
Let me know what you think. I won't provide any support for your environment, but can help troubleshoot via e-mail.
6-20-2006: Finally uploaded revision including modification for day-light savings. This version reads the Day light settings from the local server, calculates the difference from DLS and modifies the time accordingly. This has been tested on Exchange 2003 successfully in Pacfic Time Zone.

Revision 3.3: If you downloaded the script, check out my article on the changes to Daylight Savings calculation here in the US. It may cause problems with entries booked on your calendar.

AttachmentSize
WebCalendarHTML.zip10.38 KB
ConferenceRoomWebsite.zip7.93 KB
settings.txt831 bytes