Update Rollup 1 (UR1) for Exchange Server 2010 SP1 Released

October 7th, 2010 No comments

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

  • Update Rollup 1 for Exchange Server 2010 SP1 (2407028)

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

Remember, you only need to download the latest update for the version of Exchange that you’re running.

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

  1. 2028967 Event ID 3022 is logged and you still cannot replicate a public folder from one Exchange Server 2010 server to another
  2. 2251610 The email address of a user is updated unexpectedly after you run the Update-Recipient cmdlet on an Exchange Server 2010 server
  3. 978292 An IMAP4 client cannot send an email message that has a large attachment in a mixed Exchange Server 2010 and Exchange Server 2003 environment

Download the rollup here.

Microsoft also announced that UR2 for Exchange 2010 SP1 should be released in early December.

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.

Also, the installer and Add/Remove Programs text is only in English – even when being installed on non-English systems.

Note to Forefront users:

If you don’t disable Forefront before installing a rollup or service pack, and enable afterwards, you run the risk of Exchange related services not starting. You can disable Forefront by going to a command prompt and navigating to the Forefront directory and running FSCUtility /disable. To enable Forefront after installation of a UR or SP, run FSCUtility /enable.

Changelog: New-HandBrakeConversion.ps1

October 6th, 2010 No comments

This is the changelog page for New-HandBrakeConversion.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.

v1.3 09-27-2011

  1. added pop dialog when files finish
  2. added PowerShell comment based help

v1.2 10-19-2010

  1. added support for .mkv files. Will add the rest as I test

v1.1 10-15-2010

  1. added better target filename handling; added speech; auto detection of Handbrake path; command line arguments (source folder)

v1.0 10-06-2010

  1. Original version
Categories: PowerShell Tags: ,

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

September 13th, 2010 No comments

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

  • Update Rollup 1 for Exchange Server 2007 SP3 (2279655)

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

Remember, you only need to download the latest update for the version of Exchange that you’re running.

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

  1. 2188615 Event ID: 4999 is logged when the EdgeTransport.exe process crashes intermittently on an Exchange Server 2007 server
  2. 2203381 “554 5.6.0 STOREDRV.Deliver; Corrupt message content” NDR is generated when you send an email message to an Exchange Server 2007 user
  3. 2251714 The connecting information is not logged when a user accesses a mailbox that is hosted on an Exchange Server 2007 server by using POP3 or by using IMAP4
  4. 958305 An incorrect user is displayed as the caller in a mail message in an Exchange Server 2007 environment
  5. 973040 The Bcc information is lost when the Exchange Server 2003 journalized messages are sent to an Exchange Server 2007 mailbox
  6. 973637 Exchange Server 2007 creates incorrect Lotus Notes proxy email addresses
  7. 975424 The “legacyExchangeDN” value is shown in the “From” field of an email message instead of the Simple Display Name in an Exchange Server 2007 environment
  8. 975993 “The message could not be opened” error message when an Exchange Server 2007 user tries to open or accept a meeting request
  9. 976100 Shared calendar items are shown incorrectly in the server time zone instead of the time zone of an Exchange Server 2007 user who is accessing the shared calendar
  10. 977189 The meeting time of a meeting forward notification is incorrect on an Exchange Server 2007 server
  11. 978144 A warning message is received when you run the Test-ReplicationHealth cmdlet on an Exchange Server 2007 server
  12. 978468 You receive an error message and Event ID: 1008 is logged when you move an Exchange Server 2007 mailbox
  13. 979038 A memory leak occurs in the Microsoft.Exchange.Monitoring.exe process when you run the Test-OwaConnectivity cmdlet or the Test-ActiveSyncConnectivity cmdlet in Exchange Management Shell on an Exchange Server 2007 server
  14. 979194 Excluding domain names from the Sender ID filter does not take effect after you run the Set-SenderIDConfig cmdlet on an Exchange Server 2007 server
  15. 979338 Fax communication sessions are dropped by an Exchange Server 2007 Unified Messaging server
  16. 979519 The PR_REPORT_TEXT property represents an incorrect read notification in Exchange Server 2007
  17. 979803 Internet Explorer unexpectedly focuses on an Exchange Server 2007 user’s OWA inbox or on an OWA calendar that is added as a web part on a SharePoint Server-based website
  18. 980205 Public folder replication is blocked unexpected in an Exchange Server 2007 environment
  19. 980301 The Microsoft Exchange Information Store service stops responding during a Volume Shadow Copy Service backup on an Exchange Server 2007 server
  20. 980404 A multibyte character is converted into a “0xFFFD” character or into unrecognized characters when you use Exchange Web Services in an Exchange Server 2007 environment
  21. 980725 You experience issues when you move messages from one mailbox folder to another mailbox folder in an Exchange Server 2007 environment
  22. 980914 A user does not receive any new email messages by using a third-party POP3 client in a mixed Exchange Server 2007 and Exchange Server 2003 environment
  23. 980953 A second dot is added to the file names of the automatic generated attachments on an Exchange Server 2007 SP2 or later version server
  24. 981794 The Get-AgentLog cmdlet operation stops and you receive an error message Exchange Server 2007
  25. 982055 The store.exe process crashes occasionally on an active node when you move the Exchange Virtual Server from an active node to a passive node in an Exchange Server 2007 cluster environment
  26. 982099 Unexpected issues occur after you run the Set-mailbox cmdlet on an Exchange Server 2007 server to convert a shared mailbox into a regular mailbox
  27. 982118 The VSS backup operation fails occasionally and Event ID: 2034 is generated on an Exchange Server 2007 server
  28. 982213 The display name or the address of a user is displayed in garbage characters when you reply to an email message in an Exchange Server 2007 environment
  29. 982475 The inline image of an email message that is sent by using OWA with S/MIME enabled is lost for an Exchange Server 2007 user
  30. 982542 Attachments of certain email messages disappear at the client-side when you use an ExOLEDB-based application to change email messages in an Exchange Server 2007 environment
  31. 982722 It takes a long time to copy or move items from one public folder to another public folder by using Outlook in an Exchange Server 2007 environment
  32. 982928 The Msftesql.exe process continues using memory on an Exchange Server 2007 server
  33. 983296 Exchange ActiveSync crashes on an Exchange Server 2007 server causing the client synchronization to be unavailable
  34. 983447 A NDR is not generated when an email message is not delivered after you set the value for “Maximum number of recipients” of “Transport Settings” to “0” on an Exchange Server 2007 server
  35. 983529 The EdgeTransport.exe process crashes and then restarts on an Exchange Server 2007 server
  36. 983540 “Http 500” error message when you use Exchange Troubleshooting Assistant on an Exchange Server 2007 Client Access server to diagnose issues

Download the rollup here.

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.

 

Exchange Server 2010 SP1 Is Now Available

August 31st, 2010 No comments

Microsoft has released Service Pack 1 (SP1) for Exchange Server 2010. See the Release Notes for Exchange 2010 SP1 for more information, including a list of known issues.

The 522MB download is just like RTM – a full install package. Existing installations can be upgraded, as new installs can be completed with the Service Pack integrated.

What’s New in Exchange 2010 SP1 has a comprehensive list of the changes and enhancements, including:

New Deployment Functionality

  1. During an Exchange 2010 SP1 installation, you can now select a new option to install the required Windows roles and features for each selected Exchange 2010 SP1 server role. For more information, see New Deployment Functionality in Exchange 2010 SP1.

Client Access Server Role Improvements

  1. Federation Certificates
  2. Exchange ActiveSync
  3. SMS Sync
  4. Server-Side Information Rights Management Support
  5. Outlook Web App Improvements
  6. Reset Virtual Directory
  7. Client Throttling Policies

Improvements in Transport Functionality

  1. MailTips access control over organizational relationships
  2. Enhanced monitoring and troubleshooting features for MailTips
  3. Enhanced monitoring and troubleshooting features for message tracking
  4. Message throttling enhancements
  5. Shadow redundancy promotion
  6. SMTP failover and load balancing improvements
  7. Support for extended protection on SMTP connections
  8. Send connector changes to reduce NDRs over well-defined connections

Permissions Functionality

  1. Database scope support
  2. Active Directory split permissions
  3. Improved user interface

Exchange Store and Mailbox Database Functionality

  1. With the New-MailboxRepairRequest cmdlet, you can detect and repair mailbox and database corruption issues.
  2. Store limits were increased for administrative access.
  3. The Database Log Growth Troubleshooter (Troubleshoot-DatabaseSpace.ps1) is a new script that allows you to control excessive log growth of mailbox databases.
  4. Public Folders client permissions support was added to the Exchange Management Console (EMC).

Mailbox and Recipients Functionality

  1. Calendar Repair Assistant supports more scenarios than were available in Exchange 2010 RTM.
  2. Mailbox Assistants are now all throttle-based (changed from time-based in Exchange 2010 RTM).
  3. Internet calendar publishing allows users in your Exchange organization to share their Outlook calendars with a broad Internet audience.
  4. Importing and exporting .pst files now uses the Mailbox Replication service and doesn’t require Outlook.
  5. Hierarchical address book support allows you to create and configure your address lists and offline address books in a hierarchical view.
  6. Distribution group naming policies allow you to configure string text that will be appended or prepended to a distribution group’s name when it’s created.
  7. Soft-delete of mailboxes after move completion.

High Availability and Site Resilience Functionality

  1. Continuous replication – block mode
  2. Active mailbox database redistribution
  3. Enhanced datacenter activation coordination mode support
  4. New and enhanced management and monitoring scripts
  5. Exchange Management Console user interface enhancements
  6. Improvements in failover performance

Messaging Policy and Compliance Functionality

  1. Provision personal archive on a different mailbox database
  2. Import historical mailbox data to personal archive
  3. Delegate access to personal archive
  4. New retention policy user interface
  5. Support for creating retention policy tags for Calendar and Tasks default folders
  6. Opt-in personal tags
  7. Multi-Mailbox Search preview
  8. Annotations in Multi-Mailbox Search
  9. Multi-Mailbox Search data de-duplication
  10. WebReady Document Viewing of IRM-protected messages in Outlook Web App
  11. IRM in Exchange ActiveSync for protocol-level IRM
  12. IRM logging
  13. Mailbox audit logging

Unified Messaging Server Role Improvements

  1. UM reporting
  2. UM management in the Exchange Control Panel
  3. Cross-Forest UM-enabled mailbox migration
  4. Outlook Voice Access improvements
  5. Caller Name Display support
  6. Test-ExchangeUMCallFlow cmdlet
  7. New UM Dial Plan wizard
  8. Office Communications Server “14” Support
  9. Secondary UM dial plan support
  10. UM language packs added
  11. Call answering rules improvements
  12. Unified Communications Managed API/speech platform improvements
  13. UM auto attendant update

Audit Logging Improvements

  1. Improvements in administrator audit logging
  2. New mailbox audit logging

Support for Coexistence with Exchange Online

  1. Migration of UM-enabled mailboxes
  2. IRM support for coexistence
  3. Remote Mailboxes
  4. Transport

Support for Multi-Tenancy

Upgrade from Exchange 2010 RTM to Exchange 2010 SP1 includes details you should know before upgrading, as well as how to upgrade including upgrading DAG members.

Equally important is Exchange 2010 Prerequisites, which details which hotfixes you need to install before doing a clean install of Exchange 2010 SP1, or when upgrading an RTM installation. Be prepared, as several of the 2008 R2 hotfixes require a reboot.

Download the Service Pack here.

Exchange Server 2007 SP3 Released!

June 21st, 2010 No comments

Microsoft has released Service Pack 3 (SP3) for Exchange Server 2007.

The 800+MB download is just like SP1 – a full install package that incorporates the Service Pack. Existing installations can be upgraded, as new installs can be completed with the Service Pack integrated.

Service Pack 3 also includes support for running Exchange on Windows Server 2008 R2 – a much sought after feature, and for running the Management tools on Windows 7.

Update: I guess it would help if I included a download link.

Update Rollup 4 (UR4) for Exchange Server 2010 Released

June 19th, 2010 No comments

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

  • Update Rollup 4 for Exchange Server 2010 (981401)

If you’re running Exchange Server 2010, you need to apply Update Rollup 4 for Exchange 2010 to address the issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running.

Here is a list of the fixes included in update rollup 4:

  1. 979342 An attachment is not visible when an Exchange Server 2010 user opens a signed mail message by using Outlook 2003
  2. 979517 You cannot send a message to a Dynamic Distribution Group in a mixed Exchange Server 2007 and Exchange Server 2010 environment
  3. 979790 An IMAP4 client crashes when accessing an Exchange Server 2010 mailbox
  4. 979801 An error message is generated in Exchange Server 2010 when you use Exchange Troubleshooting Assistant
  5. 979810 You cannot connect an Exchange Server 2010 mailbox by using a MAPI client
  6. 979848 Event ID 1066 is logged and you cannot move a mailbox from an Exchange Server 2003 server to an Exchange Server 2010 server
  7. 979862 Event ID 4999 and Event ID 7031 are logged when you move a mailbox to an Exchange Server 2010 server
  8. 979921 You cannot replicate a public folder from one Microsoft Exchange Server 2010 server to another, and Event ID 3079 is logged on the target server
  9. 980149 The Add-MailboxDatabaseCopy command fails when it is used to add a database copy to a Database Availability Group in an Exchange Server 2010 environment
  10. 980353 A MAPI application that is used to access Exchange Server 2010 mailboxes crashes when the application accesses an address book
  11. 980354 “MAPI_E_INVALID_PARAMETER” error message when you copy email messages from an Exchange Server 2010 mailbox
  12. 980364 Microsoft Exchange Transport service on an Exchange Server 2010 server crashes when a certain message is processed
  13. 980701 An Exchange Server 2010 mailbox user receives a NDR error message when the user sends an email message to multiple internal users
  14. 980852 The RpcClientAccess process on an Exchange Server 2010 server crashes when you access a mailbox by using a MAPI application
  15. 981033 Error message when you expand the Microsoft Exchange On-Premises node in the EMC of Exchange Server 2010
  16. 981961 Event ID 4033 is logged and the Free/Busy replication from an Exchange Server 2003 server to an Exchange Server 2010 server fails
  17. 982209 Some embedded messages are corrupted when they are contained in a message that is sent from an Exchange Server 2010 mailbox address
  18. 982378 A delegate receives only one meeting request when someone sends a meeting request to several principals in an Exchange Server 2010 RU1 or later environment
  19. 982944 The msExchVersion attribute value of a user is stamped incorrectly after you run the Enable-MailUser cmdlet to mail-enable the user
  20. 983200 The .xls file as an attachment is empty when you access an Exchange Server 2010 mailbox by using OWA
  21. 983631 “redirect it to people or distribution list” rule does not work on an Exchange Server 2010 mailbox address
  22. 2084061 A user intermittently fails to access an Exchange Server 2010 mailbox after the mailbox is moved

Download the rollup here.

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.

Also, the installer and Add/Remove Programs text is only in English – even when being installed on non-English systems.

Using Cmdlet Extension Agents to Cause Automatic Events to Occur in Exchange 2010 – Life Just Got Simpler!

May 29th, 2010 6 comments

In previous posts, I’ve shown how to automate some tasks like automatically sending a ‘welcome’ email to all new user accounts, automatically applying Messaging Records Management policies to new users, and other functions. This helps perform normally routine tasks, as well as providing for a level of interaction with the users that isn’t as readily available manually. It also helps reduce errors and maintain consistency.

The problem with these methods is that they rely on scheduled tasks. So, every four hours, send a message to the new users. That’s all fine and dandy when the account is provisioned for a user starting tomorrow or next week. But if the HR person is standing at your desk saying “the person is starting NOW”, there’s a gap. Additionally, as the environment gets bigger and bigger, the queries to find new users can take more time and more system resources. There must be a better way, and there IS!

A nearly undocumented Exchange 2010 feature called the cmdlet extension agents helps perform tasks automatically based on other commands running. Other Exchange notables have talked about some of the features, including Administrator Audit Logging. There are also cmdlet extension agents for OAB Resource Management, Provisioning Policy, Mailbox Resources Management, RUS, and even a Query Base DN agent. These can be seen by using the Get-CmdletExtensionAgent cmdlet. Today, we’ll focus on the Scripting Agent.

Picture this: a new user mailbox is created from ANY method that calls the new-mailbox cmdlet. This could be Exchange Management Console, Exchange Management Shell, or even some custom provisioning application. As soon as that cmdlet succeeds, the server immediately fires another event – say, sending the ‘welcome’ email. Or disabling POP3 and IMAP on the mailbox; or assigning an Exchange ActiveSync or retention policy. Very cool. But it gets even cooler when you realize that you can also trigger events BEFORE the cmdlet actually does much. Imagine, everytime the remove-mailbox cmdlet is run, an export-mailbox cmdlet is triggered and dumps the mailbox to .pst! It’s possible! Here’s how we can do thngs:

Open Notepad and paste the following:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
 <Feature Name="MailboxProvisioning" Cmdlets="new-mailbox">
  <ApiCall Name="OnComplete">
   if($succeeded)    {
    $newmailbox = $provisioningHandler.UserSpecifiedParameters["Name"]
    set-casmailbox $newmailbox -ImapEnabled $false
   }
  </ApiCall>
 </Feature>
</Configuration>

Save the file as ScriptingAgentConfig.xml in the \bin\CmdletExtensionAgents folder, which, by default is C:\Program Files\Microsoft\Exchange Server\V14\Bin\CmdletExtensionAgents

Let’s break down how this works. In our code, the highlighted sections are where we need to focus, Notice this line: <Feature Name=”MailboxProvisioning” Cmdlets=”new-mailbox”>. The “cmdlets” parameter dictates what cmdlets will fire our custom event. In this case, whenever new-mailbox is executed. We can define multiple cmdlets here, separating them with a comma.The very next line, <ApiCall Name=”OnComplete”> defines when during the new-mailbox process our custom event will fire. Here, it’s OnComplete, or after the new-mailbox command finishes. We can also use “validate”, to trigger an event after Exchange determines new-mailbox is a valid command and has all of the info it needs. “validate” is where we could export a mailbox during remove-mailbox, as it occurs after validation, but before the mailbox is actually removed.

For the sake of keeping things simple here, we’ll disable IMAP on a new mailbox as an example. In order to disable the IMAP feature, we normally run the set-casmailbox cmdlet (or use EMC, which just calls set-casmailbox), which requires a mailbox name. So, we use $newmailbox = $provisioningHandler.UserSpecifiedParameters[“Name”] to assign the mailbox name used in the new-mailbox cmdlet to a variable, $newmailbox. After that, we simply run set-casmailbox $newmailbox -ImapEnabled $false like we would from EMS or a .ps1 script. That’s it!

Before we try out our new found feature, we need to enable the Cmdlet Extension Agent. Open an Exchange Management Shell window and use the following command:

Enable-CmdletExtensionAgent "Scripting Agent"

Now – using either EMS or EMC, create a new mailbox. Once it’s created, look at the Mailbox Features tab of the mailbox, and you’ll see that IMAP is disabled:

You can certainly perform multiple actions, if you’d like, by simply specifying each command on a new line. If you’d like to take complex actions after new-mailbox (or any cmdlet), you can also call an external script by placing the path and script name in the .xml file.

$newmailbox = $provisioningHandler.UserSpecifiedParameters["Name"]
c:\myscript.ps1 -name $newmailbox

Keep in mind that you can’t do things like write-host or dump other outputs to the console screen. If you’d like to look at some other samples, look at the ScriptingAgentConfig.sample file in the \CmdletExtensionAgents folder in Notepad.

As you can see, the possibilities here are endless. We can automate many tasks, and, with the power of PowerShell, perform many actions not available in the Exchange Management Console.

Caveats: If you have more than one server running Exchange 2010, you’ll need to enable the extension agent on each, and create the .xml file.

Script: Add-Cmdlets2Dictionary.ps1 – Adding PowerShell and Exchange Cmdlets to the Office Dictionary

May 12th, 2010 1 comment

I write a LOT of things that include technical terms, including email, book chapters, and client documentation. Of course, being the good soldier that I am, I try to spell and grammar check things so that the communications don’t make me look like a blabbering idiot.

The problem is that I’m constantly adding terms to the dictionary as I come across them. This include a ton of PowerShell, and usually, Exchange specific cmdlets. When I switched to a new workstation a week ago, I figured it was time to make life earlier. I mentioned online that there had to be a way to easily take a full list of PowerShell cmdlets and functions and dump them into the dictionary. Fellow Exchange MVP Michael B. Smith said it should be easy in PowerShell, and could be done in a single line of code. So we started to collaborate via Facebook (of all places!) on a solution. Michael posted the solution at Simplifying Life for Exchange Authors. I recommend you read his post for a way to do this painlessly. Thanks to Michael for indulging me.

After we came up with working code, it dawned on my that not everyone has remote PowerShell sessions into Exchange servers from their workstations. So I figured I’d make life a little easier, and compiled some various pieces together into a script. The script below will get a list of all Exchange servers in the same AD site as your workstation, randomly pick one, and establish a remote PowerShell session to it. Once established, it will dump all PowerShell functions and cmdlets to the Office dictionary. Copy the following code into Notepad on your workstation:

function Get-ExchangeServerInSite {
    $ADSite = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]
    $siteDN = $ADSite::GetComputerSite().GetDirectoryEntry().distinguishedName
    $configNC=([ADSI]"LDAP://RootDse").configurationNamingContext
    $search = new-object DirectoryServices.DirectorySearcher([ADSI]"LDAP://$configNC")
    $objectClass = "objectClass=msExchExchangeServer"
    $version = "versionNumber>=1937801568"
    $site = "msExchServerSite=$siteDN"
    $search.Filter = "(&($objectClass)($version)($site))"
    $search.PageSize=1000
    [void] $search.PropertiesToLoad.Add("name")
    [void] $search.PropertiesToLoad.Add("msexchcurrentserverroles")
    [void] $search.PropertiesToLoad.Add("networkaddress")
    $search.FindAll() | %{
        New-Object PSObject -Property @{
            Name = $_.Properties.name[0]
            FQDN = $_.Properties.networkaddress |
                %{if ($_ -match "ncacn_ip_tcp") {$_.split(":")[1]}}
            Roles = $_.Properties.msexchcurrentserverroles[0]
        }
    }
}

#add all servers in the local site to an array
$servers = New-Object System.Collections.ArrayList
Get-ExchangeServerInSite | %{ [void]$servers.Add(($_.fqdn)) }

#select a random server from the current site
if($servers.count -gt 1) {
    $random = Get-Random -Minimum 0 -Maximum $servers.count
    $fqdn = $servers[$random]
}
else {
    $fqdn = $servers[0]
}

#create the session
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$fqdn/PowerShell/" -Authentication Kerberos
#import the session
Import-PSSession $session
$dicFile = (Get-Content Env:AppData) + "\Microsoft\UProof\CUSTOM.DIC"
Get-Command -module $global:importresults | Where-Object {$_.CommandType -eq "cmdlet" -or $_.CommandType -eq "function" -and $_.Name -notmatch ":"} | select-Object Name | Out-file -append $dicfile
#kill the session
Remove-PSSession $session

Save it as Add-Cmdlets2Dictionary.ps1. Now, open PowerShell, navigate to where you saved the file, and execute it using .\Add-Cmdlets2Dictionary.ps1. Once it’s finished, open Word or Outlook and test it with some random cmdlets like New-Mailbox. Keep in mind that Michael’s one-liner works great if you’ve already got a remote session into an Exchange server. My script above is in case you don’t, or you want a reusable script to share with colleagues.

Installation

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.

Donations

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 https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Script: Set-Exchange2010FilterConfig.ps1 v2.0 – Cleaner Configuration of the FilterPack for Exchange Server 2010

May 10th, 2010 2 comments

Description

Late last year, I wrote Cleaner configuration of the FilterPack for Exchange Server 2010 to provide a cleaner script that handles registration of file types for the Office 2007 Filter Pack. This was because the default script would generate a bunch of exception errors when it encountered existing registration entries in the registry. This could be fairly confusing to some people. So my script just did some rudimentary checking before attempting to set the registration. Same end result, just a little cleaner.

Anyways, fast forward to last week, when Microsoft released v2.0 of the Filter Pack. The new version includes support for Office 2010 file types, as well as all of the legacy versions. The registration script didn’t need to change, since it’s based on file extensions, and there aren’t new file extensions in 2010 (like there was in 2007).

But, some people are also installing the Adobe PDF iFilter 9.0 package to enable Exchange to index PDF file attachments as well. Like the Office Filter Pack, the PDF Filter Pack requires a PowerShell script to run to register the file types. Combine that and the update to the script mentioned at Automated prerequisite installation via PowerShell for Exchange Server 2010 on Windows Server 2008 R2 – v2.0, and combining the two filter pack registration scripts just made sense.

This version allows you to register either the Office or the PDF Filter Pack, or both. If you register the PDF Filter Pack, a server reboot is required, as is running the script .\ResetSearchIndex.ps1, which is located in the \scripts folder (typically c:\Program Files\Microsoft\Exchange Server\V14\Scripts). Resetting the search index can be somewhat taxing if there is already a large amount of mail in databases on that server, so you may want to plan when to run this.

Check out the original post for more info, and get the updated script at Set-Exchange2010FilterConfig20.zip

Installation

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.

Donations

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 https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

[Redirect] Automated Prerequisite Installation via PowerShell for Exchange Server 2010 on Windows Server 2008 R2 – v2.0

May 7th, 2010 No comments

Big changes in the fairly popular script at Automated prerequisite installation via PowerShell for Exchange Server 2010 on Windows Server 2008 R2. In an effort to make your job easier (as well as mine), I’ve updated it extensively. And, I’ve used better coding practices to make it more efficient.

Changes to the script include at least the following:

  1. Downloads now use BITS on the machine. If BITS isn’t installed, the script will install it to download the files, and remove it when you exit. The script also detects whether the server you’re running it on has Internet access before trying to download files.
  2. Microsoft Office 2010 Filter Packs has replaced the 1.0 file. This adds support for indexing of content in Office 2010 file attachments in addition to the previously available Office 2007 files. For more info, see Bharat Suneja’s Released: Microsoft Office 2010 Filter Packs post.
  3. Adobe PDF iFilter 9 support has been added to (only) option #11. This adds support for indexing of .pdf files. See the Exchange Product Groups Introducing Attachment Inspection in Transport Rules for more info. Option #11 is the same as #6, but with .pdf filter, and is what I use for my server builds.
  4. Better detection of a successful installation of the filter packs
  5. Added an option (#13) to disable TCP/IP v6
  6. Updated the option (#12) to download the latest Update Rollup to get UR3
  7. Added an option (#7) due to a project requirement
  8. Removed the auto rebooting of the server if a reboot was required. It now just displays a warning that a reboot is needed before installing Exchange. This allows you to inspect what the script has done, and identify any issues, as well as execute more options, like disabling TCP/IP v6, before rebooting.

With the change in the Office filter pack, as well as the addition of the .pdf filter pack, I’ll have a new version of the configuration script for those available at Cleaner configuration of the FilterPack for Exchange Server 2010 in the next couple of days.

Visit the original post at the link above for the original info and a link to the updated script.

As always, if you’d like to see an option added, or have questions or comments, please feel free to let me know.