Transport rules kopieëren
3 januari, 2010
In Exchange 2010 zijn de transport rules flink uitgebreid, aangezien de configuratie van de Hub servers in de AD wordt opgeslagen worden de transport rules hier ook in opgeslagen. Dit heeft als voordeel dat de transport rules gebruikt kunnen worden door de diverse Hub servers in een zelfde Exchange organisatie.
Met een Edge server wordt dit natuurlijk wat lastiger aangezien deze geen lid is van de AD maar gebruik maakt van lokale ADLDS waarmee replicatie niet mogelijk is. Nou is het wanneer je één Edge server hebt nog wel te doen om de transport rules van een Hub opnieuw te configureren op een Edge. Maar stel je voor dat je meerdere Edge servers hebt en je wil dat de configuratie van de transport rules op deze servers identiek is.
In dat geval kun je gebruik gaan maken van de Export-TransportRuleCollection en Import-TransportRuleCollection commando’s. Voor beide commando’s geldt dat deze zowel op een Hub als Edge transport server uitgevoerd kunnen worden.
Met onderstaande commando zorgen we ervoor dat er een export wordt gemaakt van de transport rules in de directory export.
$file = Export-TransportRuleCollection
Set-Content -Path “C:\Export\TransportRules.xml” -Value $file.FileData -Encoding Byte
Vervolgens dient het xml bestand gekopieerd te worden naar de overige Edge servers en dient het import commando gedraaid te worden.
[Byte[]]$Data = Get-Content -Path “C:\Import\TransportRules.xml” -Encoding Byte -ReadCount 0
Import-TransportRuleCollection -FileData $Data
Dit zorgt ervoor dat de transport rules welke zich in het bestand transportrules.xml bevinden geïmporteerd worden op de server.
Wanneer er nu veel wijzigingen plaatsvinden in de transport rules dan kun je middels een script automatiseren dat de transport rules worden ge-exporteerd en geïmporteerd worden.
Onderstaand een voorbeeld script om transport rules te exporteren. Dit bestaat uit een batch bestand en een Powershell bestand, het batch bestand wordt gebruikt door de scheduled task welke bijvoorbeeld eenmaal per uur een export maakt van de transport rules. Wanneer de opdracht is uitgevoerd wordt een entry gemaakt in het application event log. Een opmerking hierbij is dat ik er vanuit ben gegaan dat de export directory een shared folder is waar de gebruikeraccount die wordt gebruikt om het script uit te voeren rechten op heeft:
exporttransportrules.cmd
PowerShell.exe -command “. ‘C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1′; Connect-ExchangeServer -auto; C:\Export\exporttransportrules.ps1″
$file = Export-TransportRuleCollection
Set-Content -Path “C:\Export\TransportRules.xml” -Value $file.FileData -Encoding Byte
$evt=new-object System.Diagnostics.EventLog(“Application”)
$evt.Source=”Export transport rules”
$infoevent=[System.Diagnostics.EventLogEntryType]::Information
$evt.WriteEntry(“Transport rules have been exported”,$infoevent,70)
OK nu we het export gedeelte hebben nu het import script:
importtransportrules.cmd
PowerShell.exe -command “. ‘C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1′; Connect-ExchangeServer -auto; C:\Import\importtransportrules.ps1″
importtransportrules.ps1
[Byte[]]$Data = Get-Content -Path “\\sourceserver\export\TransportRules.xml” -Encoding Byte -ReadCount 0
Import-TransportRuleCollection -FileData $Data
$evt=new-object System.Diagnostics.EventLog(“Application”)
$evt.Source=”Import transport rules”
$infoevent=[System.Diagnostics.EventLogEntryType]::Information
$evt.WriteEntry(“Transport rules have been imported”,$infoevent,70)
Het import script is nagenoeg hetzelfde, alleen export-transportrulecollection is vervangen door import-transportrulecollection en het pad waarvan geïmporteerd moet worden staat verwezen naar de “bron”.
Set-Content -Path “C:\Export\LegacyRules.xml” -Value $file.FileData -Encoding Byte
Technet Export-TransportRuleCollection open
Technet Import-TransportRuleCollection open
Rubrieken: Exchange 2010 ~ Trackback











Reageer