Copy Receive Connectors to a New Exchange Server

Whether it’s because you’re adding additional Exchange Servers to your existing organization, or you are moving to a new version of Exchange, copying Receive Connectors from one server to another can be a time consuming task.

Using the commands below at the Exchange Management Shell, you can get the existing non-default Receive Connectors from an Exchange Server and create matching ones on another.

To perform this task, we’ll first set two variables to define the source and target servers:

$OldServer = “OldServer”

$NewServer = “NewServer”

Then, we’ll retrieve the list of non-default Receive Connectors from the source server into the variable $ReceiveConnectors:

[array]$ReceiveConnectors = Get-ReceiveConnector -Server $OldServer | Where {$_.Name -notlike “Default $($OldServer) -and $_.Name -notlike “Client $($OldServer)}

To create the Receive Connectors on the target server, we can use a foreach loop to create new receive connectors, populating the values from the source. Before we actually make any changes, we’ll run the commands with the -WhatIf switch to check the syntax and the validity of the command:

$ReceiveConnectors | foreach {

New-ReceiveConnector -Name $_.Name -RemoteIPRanges $_.RemoteIPRanges -bindings $_.Bindings -Banner $_.Banner -ChunkingEnabled $_.ChunkingEnabled -DefaultDomain $_.DefaultDomain -DeliveryStatusNotificationEnabled $_.DeliveryStatusNotificationEnabled -EightBitMimeEnabled $_.EightBitMimeEnabled -DomainSecureEnabled $_.DomainSecureEnabled -LongAddressesEnabled $_.LongAddressesEnabled -OrarEnabled $_.OrarEnabled -Comment $_.Comment -Enabled $_.Enabled -ConnectionTimeout $_.ConnectionTimeout -ConnectionInactivityTimeout $_.ConnectionInactivityTimeout -MessageRateLimit $_.MessageRateLimit -MaxInboundConnection $_.MaxInboundConnection -MaxInboundConnectionPerSource $_.MaxInboundConnectionPerSource -MaxInboundConnectionPercentagePerSource $_.MaxInboundConnectionPercentagePerSource -MaxHeaderSize $_.MaxHeaderSize -MaxHopCount $_.MaxHopCount -MaxLocalHopCount $_.MaxLocalHopCount -MaxLogonFailures $_.MaxLogonFailures -MaxMessageSize $_.MaxMessageSize -MaxProtocolErrors $_.MaxProtocolErrors -MaxRecipientsPerMessage $_.MaxRecipientsPerMessage -PermissionGroups $_.PermissionGroups -PipeliningEnabled $_.PipeLiningEnabled -ProtocolLoggingLevel $_.ProtocolLoggingLevel -RequireEHLODomain $_.RequireEHLODomain -RequireTLS $_.RequireTLS -EnableAuthGSSAPI $_.EnableAuthGSSAPI -ExtendedProtectionPolicy $_.ExtendedProtectionPolicy -ExtendedProtectionTlsTerminatedAtProxy $_.ExtendedProtectionTlsTerminatedAtProxy -SizeEnabled $_.SizeEnabled -TarpitInterval $_.TarpitInterval -Server $NewServer -WhatIf

}

If we’re happy with the output, then we can run the command without the -WhatIf switch to create the new receive connectors:

$ReceiveConnectors | foreach {

New-ReceiveConnector -Name $_.Name -RemoteIPRanges $_.RemoteIPRanges -bindings $_.Bindings -Banner $_.Banner -ChunkingEnabled $_.ChunkingEnabled -DefaultDomain $_.DefaultDomain -DeliveryStatusNotificationEnabled $_.DeliveryStatusNotificationEnabled -EightBitMimeEnabled $_.EightBitMimeEnabled -DomainSecureEnabled $_.DomainSecureEnabled -LongAddressesEnabled $_.LongAddressesEnabled -OrarEnabled $_.OrarEnabled -Comment $_.Comment -Enabled $_.Enabled -ConnectionTimeout $_.ConnectionTimeout -ConnectionInactivityTimeout $_.ConnectionInactivityTimeout -MessageRateLimit $_.MessageRateLimit -MaxInboundConnection $_.MaxInboundConnection -MaxInboundConnectionPerSource $_.MaxInboundConnectionPerSource -MaxInboundConnectionPercentagePerSource $_.MaxInboundConnectionPercentagePerSource -MaxHeaderSize $_.MaxHeaderSize -MaxHopCount $_.MaxHopCount -MaxLocalHopCount $_.MaxLocalHopCount -MaxLogonFailures $_.MaxLogonFailures -MaxMessageSize $_.MaxMessageSize -MaxProtocolErrors $_.MaxProtocolErrors -MaxRecipientsPerMessage $_.MaxRecipientsPerMessage -PermissionGroups $_.PermissionGroups -PipeliningEnabled $_.PipeLiningEnabled -ProtocolLoggingLevel $_.ProtocolLoggingLevel -RequireEHLODomain $_.RequireEHLODomain -RequireTLS $_.RequireTLS -EnableAuthGSSAPI $_.EnableAuthGSSAPI -ExtendedProtectionPolicy $_.ExtendedProtectionPolicy -ExtendedProtectionTlsTerminatedAtProxy $_.ExtendedProtectionTlsTerminatedAtProxy -SizeEnabled $_.SizeEnabled -TarpitInterval $_.TarpitInterval -Server $NewServer

}

7 thoughts on “Copy Receive Connectors to a New Exchange Server”

  1. Hello,

    Thanks for this. I am not able to get this going. When I past in the last part I just get a >> prompt. Any ideas

  2. I just get the following error trying to copy from 2007 to 2013:

    A parameter cannot be found that matches parameter name ‘ExtendedProtectionTlsTerminatedAtProxy’.
    + CategoryInfo : InvalidArgument: (:) [New-ReceiveConnector], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,New-ReceiveConnector

  3. HI,
    I succeeded in using the command to copy the connectors from 2007 to 2013 in my lab.
    At first I had the same errors so I copied the command to notepad ++, there I ordered the syntax in a single line and removed (-ExtendedProtectionTlsTerminatedAtProxy $ _. ExtendedProtectionTlsTerminatedAtProxy) because I do not have a TMG or proxy configured.

Leave a Comment

Your email address will not be published.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Scroll to Top