Archive for November, 2009

Update Rollup 1 (UR1) for Exchange Server 2007 SP2 Released

November 28th, 2009 No comments

Microsoft has released the following update rollup for Exchange Server 2007:

  • Update Rollup 1 for Exchange Server 2007 SP2 (971534)

If you’re running Exchange Server 2007 SP2, you need to apply Update Rollup 1 for Exchange 2007 SP1 to address the security issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP2 and vice versa.

Here is a list of the fixes included in rollup 1:

  1. 941775 An error message occurs when you run the “Isinteg” command on a newly created Exchange 2007 database
  2. 958617 E-mail messages are blocked at the local delivery queue in an Exchange Server 2007 Service Pack 2 environment if a user has Outlook client-side rules totaling more than 32 kilobytes (KB)
  3. 961856 The logon page does not display the “This is a private computer” option correctly in the Greek version of Outlook Web Access
  4. 967174 The User account is not logged in Event ID 566 after the user makes changes to a mailbox
  5. 969046 E-mail messages are queued when you use the DNS round robin feature on multiple Exchange Server 2007 hub servers
  6. 969487 The Public Folder Hierarchy replication fails and event error 3079 and 9669 occur in Exchange Server 2007
  7. 969606 Recurring appointments in the calendar public folder are not replicated correctly in Microsoft Exchange Server 2007
  8. 970104 When you install an Exchange Server 2007 update rollup by using a user account that has no Exchange Server Administrator permissions, the installation program fails
  9. 970118 The IMAP4 service crashes, and then event error 4999 occurs on a computer that is running Exchange Server 2007
  10. 970893 E-mail addresses are created incorrectly if an e-mail address policy in Exchange Server 2007 contains certain symbols, a slash or a backslash, and then another of these symbols
  11. 971010 Some databases intermittently do not come back online when a cluster failover occurs in an Exchange Server 2007 CCR environment
  12. 971053 The Edgetransport.exe program intermittently crashes on Exchange Server 2007
  13. 971431 The IMAP service crashes and event error 4999 occurs on a computer that is running Exchange Server 2007
  14. 971641 After you synchronize your mobile device to work with an Exchange Server 2007 server, the synchronization time and the request time are shown in UTC
  15. 971857 The storage limit does not affect the managed custom folder if you copy messages into this folder by using Outlook Web Access (OWA)
  16. 972009 E-mail messages cannot be retrieved by an Exchange Web Service (EWS)-based application if there are invalid control characters in the text body of the e-mail message
  17. 972103 The Microsoft Exchange Information Store service crashes during move-mailbox operations and event error 4999 occurs in Exchange Server 2007
  18. 972115 A transport rule is not applied to MDNs in Exchange Server 2007
  19. 972172 The “Display sender’s name on messages” option in the Exchange Management Console of Exchange Server 2007 does not work for Message Delivery Notifications (MDNs) that are to remote domains
  20. 972269 The Store.exe process hangs intermittently and all clients accessing the server are blocked in an Exchange 2007 environment
  21. 972272 A new download method is available for HTTP offline address books on Exchange Server 2007 servers that has the Client Access Server role installed
  22. 972278 Update of Private status in a meeting request is not reflected in an Exchange Server 2007 environment
  23. 972357 You cannot view a clear-signed e-mail message in Exchange Server 2007 SP2 when you open the message by using a non-MAPI client
  24. 972426 Error message when you save a filter as default in the Exchange Management Console (EMC) and then restart the EMC: “The search filter is invalid”
  25. 972473 Outlook Web Access (OWA) removes the Calendar items for a recurring meeting when you delete the meeting request from the Deleted items folder in Exchange Server 2007
  26. 972514 Event ID 4011 is logged when you query free/busy data for external contacts in Exchange Server 2007
  27. 973190 The wrong attendee is removed in Scheduling Assistant when you remove attendees from a meeting request in Outlook Web Access server light version
  28. 973253 Message delivery times are stamped with the current date and time when Exchange Server 2007 users submit messages by using an IMAP4 client and the APPEND command
  29. 973293 The Edge Transport server’s transport process fails during an e-mail address rewrite on an Exchange Server 2007 server
  30. 973307 An application that uses Exchange Web Services returns an exception on an Exchange Server 2007 server
  31. 973361 Hidden messages in an Exchange Server 2007 mailbox can be downloaded by any IMAP4 client
  32. 973490 Error message in Exchange Management Shell in Microsoft Exchange Server 2007 when you run the “New-DynamicDistributionGroup” command: “You must provide a value expression on the right-hand side of the ‘-and’ operator.”
  33. 973761 When an Exchange Server 2007 user sends a meeting request to external recipients with the Reminder turned off, the default 15 minute Reminder pop-up window still appears
  34. 973868 A delegate cannot cancel meetings in the organizer’s calendar by using Exchange Web Service (EWS)
  35. 973912 Error message when an Exchange 2007 user clicks “Post” or “Send” to submit a new post item or to submit a new calendar item for a moderated public folder in OWA: “The item that you attempted to access no longer exists”
  36. 974010 Recipients cannot see the attendee entry for Domino Room resource after an Exchange Server 2007 user sends a meeting request that includes a Domino room resource to the recipient
  37. 974242 The abbreviation sequence is incorrect when an Outlook Web Access Light user checks the calendar in Weekly view after the user sets the language to “Basque” in Exchange Server 2007 Service Pack 2
  38. 974640 The whole calendar view is broken and an error message is returned when you view an exception occurrence of a private recurring meeting in OWA

Download the rollup here. It is also available on Microsoft Update.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Changelog: Set-Lync2010Features.ps1

November 27th, 2009 No comments

This is the changelog page for Set-Lync2010Features.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v5.3 – 12-23-2011

  1. Added requirements for Front End and Director servers to support Mobility. This includes the Dynamic Compression Windows 2008 feature.

v5.2 – 08-17-2011

  1. Added option (& related Get-Webpage function) to download trial version of Lync (just opens a browser to the site)
  2. Added option to restrict feature availability to Standard CAL

v5.1 – 07-26-2011

  1. Detect if Lync is installed before installing some utilities and tools
  2. DSR loopback adapter option added
  3. Lync Server Updates option was updated to represent the 07-25-2011 release per KB 2493736
  4. Menu was split into pre/post install tasks, with post install tasks only visible if Lync Server is detected on the box

v5.0 – 07-25-2011

  1. added “Find Lync Versions” and related .Net 4 installer
  2. added functions for creating shortcuts and unzipping files
  3. added function for “Windows Media Format Runtime” (per
  4. some variable cleanup
  5. some error checking
  6. added function to run installation routines. This makes it easier to do consistent screen output (menu)
  7. cleaned up variable removal when exiting
  8. Installation of Silverlight
  9. Updated installation of Visual C++ Redistributable to latest version (per MS11-025)
  10. added option to enable federation with Office365

v4.2 – 05-26-2011

  1. updated function to allow downloading files to different folders and different names
  2. added OWA / Lync integration feature

v4.1 – 05-01-2011

  1. added group membership check (checks for local admin, CSAdmin* and RTCUniv* only)
  2. added 04-20-2011 “Lync Server update download”
  3. added chm file download and install & shortcut
  4. added standalone AV server prereq option
  5. added PowerShell transcript
  6. added backup current config

v4.0 – 04-06-2011

  1. added Visual C++ option
  2. added Stress and Performance Tool
  3. added Disable IPv6
  4. added “IM an Expert”
  5. added Windows Update
  6. lots of code cleanup

v3.0 Р02-2011 by St̴le Hansen (

v1.0 – 11/27/2009

  1. initial version

Changelog: Set-Exchange2010Features.ps1

November 27th, 2009 No comments

This is the changelog page for Set-Exchange2010Features.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v3-3 – 12-29-2011

  1. bug fix: option 99, to exit, didn’t work.
  2. bug fix: CAS options were missing and ISAPI filters
  3. feature added: Adobe PDF filter pack is now a separate menu option

v3.2 – 12-23-2011

  1. added Web-WMI Windows Feature to all Client Access Server (CAS) role requirements as this is now a requirement in SP2
  2. Changed latest update download to SP2


  1. swapped out some functions for newer versions
  2. added transcript
  3. general code cleanup


  1. Cleaned up code for detecting R2 version so that it doesn’t bomb with service packs.
  2. cleaned up some other items so that the Lync prerequisite script and this script are more similar.


  1. Cleaned up menu code; Cleaned up code to disable IP v6;

v2.0 – 05-07-2010

  1. better detection of installed filter packs; uses Filter Pack 2; includes PDF iFilter pack; added disabling TCP/IP V6 option.
  2. Now uses BITS for file transfers; added unzip function to unzip the PDF iFilter pack download. Cleaned up some functions. Uses environmental
  3. variable “temp” for download location. Checks if things are already installed/downloaded/unzipped before trying to install/download/unzip them.

v1.1 – 04-09-2010

  1. added help; downloads of update rollups; cleanup of variables; added another option for typical install w/o RPC-Over-HTTP
  2. added RunOnce to delete download path on reboot

v1.0 – 11-27-2009

  1. initial version

Script: Add-BadPhrasesFromFile.ps1 – Importing a File of Bad Words and Phrases into the Content Filter in Exchange Server 2010

November 8th, 2009 No comments


Once upon a time, we didn’t have to worry about our sensitive eyes seeing offensive words in emails. Times have changed, and now we have some built-in features to help prevent us from seeing terms and phrases that might be deemed offensive. Exchange has had the capacity to define a list of words that are considered bad, and bounce messages if it comes across a message containing any.

But that can take quite a while to manually add each one to the Content Filter, especially if you’re starting out with a long list of words you’d like to filter for. If that’s the case, PowerShell to the rescue! We can use Get-Content to open a text file, and then a ForEach loop to cycle through each line, adding each to the content filter phrase list via Add-ContentFilterPhrase. Add-ContentFilterPhrase can add words and phrases to either the GoodWord list, which will allow words through, or the BadWords list, which will get blocked.

The text file containing the words and phrases to be filtered just needs to have each word/phrase on a new line. No special formatting or anything. So if you have an existing text file, such as the sample word list previously supplied with Microsoft Forefront Security for Exchange, it will work fine. Copy this script to Notepad:

$a = hostname
If ((Get-TransportServer $a).AntispamAgentsEnabled -eq $false) {
    write-host "Please install the antivirus agents first, then rerun this script"
$phrases=Get-Content badwordlist.txt

if ($args[0] -ne "uninstall"){
 ForEach ($phrase in $phrases)           {
  Add-ContentFilterPhrase -Phrase $phrase -Influence BadWord
 ForEach ($phrase in $phrases)           {
  write-host "Removing $phrase"
  Remove-ContentFilterPhrase -Phrase $phrase -confirm:$false

Save that as Add-BadWordsFromFile.ps1, and your text file as badwordlist.txt in the same folder. If you’ve already installed the anti-spam agents on your transport server, then run


and it will import the contents of the text file, and add them to the Content Filter. If you don’t have the anti-spam agents installed, the script will exit without trying to import the list. If you decide later that you’d like to remove the complete list from the Content Filter, just run the script again as

.\Add-BadWordsFromFile.ps1 uninstall

and it will remove those words contains in the file (preserving any other words you may have manually added).

Once the words and phrases are imported, you can view/add/remove them manually by opening Exchange Management Console and navigating to Organization Configuration>Hub Transport>Anti-spam>Content Filtering>Properties>Custom Words. You’ll see the list in the lower half of the window, as shown below:

This should make importing a list into the Content Filter a little quicker and easier. I welcome any comments.


Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.


I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.