There is nothing new about this. If you have been reading about Exchange Server 2010 or have it deployed with hardware load balancer, chances are, you have read how to configure static ports on Exchange Server 2010 on TechNet Social wiki for Exchange 2010. Chances are that you have also used my script (referenced in the post above) to set static ports on your servers. Lastly, chances are that you have read all about it on my previous post here.
If so, why am I even talking about it today?
Well, if you haven’t noticed a few things already, the way you change ports is different in RTM and SP1. My script didn’t account for SP1 originally when it was written. Was SP1 even existed then?
The other reason is my nature of always learning something and making things better! I noticed how my code was inefficient now that I know a few more things about PowerShell (yeah that’s not funny). I decided to write it more efficiently and that basically meant a complete overhaul of my old script.
The new script is now more user friendly! It uses cmdletbinding and comment based help. It means, for you as a user, you can just type:
Get-Help Set-StaticPorts.ps1 –examples
or
Get-Help Set-StaticPorts.ps1 –Full
The script now validates parameters using ValidateRange and ValidateScript. I think that’s cool! It also uses 59531 and 59532 by default now. How about using recommended ports instead of random ones I used in my previous script? I think that’s even more cool!
The script uses all the right write-* cmdlets now instead of write-host. So now you can use tee-object and won’t end up with empty output file. Yes you loose cool colors I used with write-host but hey, you are trying to set ports on your Exchange Server 2010. For colors you would go see Macy’s Fireworks on New Year, right?
Oh and last but probably the most important change is inclusion of –auto and –whatif functionality!
-WhatIf is obvious. Script will tell you what it is doing without actually making any changes.
-Auto will automatically find all your Exchange 2010 CAS servers and Exchange 2010 Mailbox servers that are hosting Public Folders. It will then change ports on CAS Server for RPC CA service and Exchange AB service. On Mailbox servers it will only change RPC CA ports as Exchange AB service doesn’t exist on Mailbox only role.
If you combine all this with –Force, you can also silence the script. It won’t ask you for any confirmation and will change ports you specify (or use defaults) and restart the services! Isn’t that awesome!
So go download the script from here: Set-StaticPorts.ps1 and give it a go. As always, let me know if you find any issues and I will be happy to fix it.
Originally posted at http://blogs.technet.com/bshukla
The script must be run in an elevated console (Run-As Administrator). Otherwise it throws this error:
Set-RemoteRegistry : System\CurrentControlSet\Services\MSExchangeRPC\ doesn’t exist in LocalMachine or you don’t have access to it. Exiting.
and the same error for MSExchangeAB.
Thanks for this great script!