Powershell: Konfigurieren der internen und externen URLs von Exchange Server 2013, 2016
<#
.SYNOPSIS
Setzt die internen und externen URLs für die Dienste von Exchange Server 2013/2016
.DESCRIPTION
Das Script konfiguriert die internen und externen URLs von Exchange Server 2013/2016 für folgende Dienste:
- WebServicesVirtualDirectory
- OutlookWebAccessDirectory
- ECPVirtualDirectory
- ActiveSyncVirtualDirectory
- OABVirtualDirectory
- AutoDiscover URL
- Outlook Anywhere
- MAPI over HTTP (EX 2016)
.EXAMPLE
& 'C:\path\set-exchange-urls.ps1' -ExchangeServer EXSRV2013.domain.local -InternalFQDN "mail.contoso.com" -ExternalFQDN "owa.contoso.com"
.PARAMETER ExchangeServer
Der Name oder FQDN des Exchange-Servers auf dem die URLs geändert werden sollen (z.B. EXSRV2013 oder EXSRV2013.contoso.com)
.PARAMETER InternalFQDN
Der interne FQDN für den Zugriff innerhalb des Netzwerks (z.B. mail.contoso.com)
.PARAMETER ExternalFQDN
Der externe FQDN unter dem der Exchange von außen ereichbar sein soll (z.B. owa.contoso.com)
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$ExchangeServer,
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$InternalFQDN,
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$ExternalFQDN
)
begin{
cls
write-host "Stelle Verbindung zum Exchange-Server her ..." -F Green
$session = $null
try{
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$exchangeserver/powershell" -Authentication Kerberos -Credential (get-credential)
Import-PSSession $session -DisableNameChecking -AllowClobber | out-null
}catch{
write-host $_.Exception.Message -F Red
return
}
$isExchange2016 = (Get-ExchangeServer $ExchangeServer).AdminDisplayVersion -match '^Version 15\.1'
Write-Host "Konfiguriere die URLs auf '$ExchangeServer' ..." -Foregroundcolor Green
}
process{
Write-Host "Setze EWS-URL ..." -F Green
Get-WebservicesVirtualDirectory -Server $ExchangeServer | Set-WebservicesVirtualDirectory -InternalURL https://$InternalFQDN/EWS/Exchange.asmx -ExternalURL https://$ExternalFQDN/EWS/Exchange.asmx
Write-Host "Setze OWA-URL ..." -F Green
Get-OwaVirtualDirectory -Server $ExchangeServer | Set-OwaVirtualDirectory -InternalURL https://$InternalFQDN/owa -ExternalURL https://$ExternalFQDN/owa
Write-Host "Setze ECP-URL ..." -F Green
Get-EcpVirtualDirectory -Server $ExchangeServer | Set-EcpVirtualDirectory -InternalURL https://$InternalFQDN/ecp -ExternalURL https://$ExternalFQDN/ecp
Write-Host "Setze ActiveSync-URL ..." -F Green
Get-ActiveSyncVirtualDirectory -Server $ExchangeServer | Set-ActiveSyncVirtualDirectory -InternalURL https://$InternalFQDN/Microsoft-Server-ActiveSync -ExternalURL https://$ExternalFQDN/Microsoft-Server-ActiveSync
Write-Host "Setze OAB-URL ..." -F Green
Get-OABVirtualDirectory -Server $ExchangeServer | Set-OABVirtualDirectory -InternalUrl https://$InternalFQDN/OAB -ExternalURL https://$ExternalFQDN/OAB
Write-Host "Setze AutoDiscover-URL ..." -F Green
if ($isExchange2016){
Set-ClientAccessService $ExchangeServer -AutodiscoverServiceInternalUri https://$InternalFQDN/Autodiscover/Autodiscover.xml
}else{
Set-ClientAccessServer $ExchangeServer -AutodiscoverServiceInternalUri https://$InternalFQDN/Autodiscover/Autodiscover.xml
}
Write-Host "Setze Outlook-Anywhere-Einstellungen ..." -F Green
Set-OutlookAnywhere -Identity "$ExchangeServer\Rpc (Default Web Site)" -InternalHostname $InternalFQDN -ExternalHostName $ExternalFQDN -InternalClientAuthenticationMethod ntlm -InternalClientsRequireSsl:$True -ExternalClientAuthenticationMethod NTLM -ExternalClientsRequireSsl:$True
if ($isExchange2016){
Write-Host "Setze Mapi-over-HTTP-URL ..." -F Green
Get-MapiVirtualDirectory -Server $ExchangeServer | Set-MapiVirtualDirectory -InternalURL https://$InternalFQDN/mapi -ExternalURL https://$ExternalFQDN/mapi
}
}
end{
# Anzeigen der neu gesetzten URLs
Write-Host "`n$('='*70)`nDie neuen URLs auf '$ExchangeServer' lauten nun wie folgt:`n$('='*70)`n" -F Green
Write-Host "EWS" -F Green
Get-WebservicesVirtualDirectory -Server $ExchangeServer | fl internalURL,ExternalURL
Write-Host "OWA" -F Green
Get-OWAVirtualDirectory -Server $ExchangeServer | fl internalUrl,ExternalURL
Write-Host "ECP" -F Green
Get-ECPVirtualDirectory -Server $ExchangeServer | fl InternalURL,ExternalURL
Write-Host "ActiveSync" -F Green
Get-ActiveSyncVirtualDirectory -Server $ExchangeServer | fl InternalURL,ExternalURL
Write-Host "OAB" -F Green
Get-OABVirtualDirectory -Server $ExchangeServer | fl InternalURL,ExternalURL
Write-Host "Autodiscover URL" -F Green
if($isExchange2016){
Get-ClientAccessService $ExchangeServer | fl AutodiscoverServiceInternalUri
}else{
Get-ClientAccessServer $ExchangeServer | fl AutodiscoverServiceInternalUri
}
Write-Host "Outlook Anywhere Einstellungen" -F Green
Get-OutlookAnywhere -Identity "$ExchangeServer\rpc (Default Web Site)" |fl internalhostname,internalclientauthenticationmethod,internalclientsrequiressl,externalhostname,externalclientauthenticationmethod,externalclientsrequiressl
if($isExchange2016){
write-Host "MAPI over HTTP" -F Green
Get-MapiVirtualDirectory -Server $ExchangeServer | fl InternalURL,ExternalURL
}
Write-Host "`n$('='*70)`nAbschließende Aufräumarbeiten`n$('='*70)`n" -Foregroundcolor Green
Write-Host "Starte IIS-Dienste neu ..." -F Green
iisreset $ExchangeServer
write-host "Beende Exchange-Session" -F Green
Remove-PSSession $session
write-host "SKRIPT BEENDET" -F Green
write-host 'HINWEIS: Sollte eine der URL noch nicht greifen empfehle ich einen Neustart des Servers.' -F DarkYellow
}
&'C:\path\set-exchange-urls.ps1' -ExchangeServer EXSRV2013.domain.local -InternalFQDN "mail.contoso.com" -ExternalFQDN "owa.contoso.com"
Viel Spaß
Grüße @colinardo
Alle Angaben wie immer ohne Gewähr, und die Nutzung geschieht auf eigene Gefahr
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 236083
Url: https://administrator.de/knowledge/powershell-konfigurieren-der-internen-und-externen-urls-von-exchange-server-2013-2016-236083.html
Ausgedruckt am: 09.06.2025 um 05:06 Uhr
22 Kommentare
Neuester Kommentar
Hi Colinardo,
d.h ich kopiere mir den Kompletten Script Zl.01 - Zl.101 in eine ps1 Datei und speichere diese dann z.B. unter C:\script.ps1 ab.
Dann starte ich das ganze in der Powershell mit:
'C:\script.ps1' -ExchangeServer EXSRV2013.meinedomain.local -InternalFQDN "mail.meinedomain.com" -ExternalFQDN "owa.meinedomain.com"
?
ich nutze keinen Split DNS, kann ich dann auch für Extern den gleichen FQDN wie für Intern nehmen?
Viele Grüße
Philipp
d.h ich kopiere mir den Kompletten Script Zl.01 - Zl.101 in eine ps1 Datei und speichere diese dann z.B. unter C:\script.ps1 ab.
Dann starte ich das ganze in der Powershell mit:
'C:\script.ps1' -ExchangeServer EXSRV2013.meinedomain.local -InternalFQDN "mail.meinedomain.com" -ExternalFQDN "owa.meinedomain.com"
?
ich nutze keinen Split DNS, kann ich dann auch für Extern den gleichen FQDN wie für Intern nehmen?
Viele Grüße
Philipp
Hallo Uwe,
ich habe mir jetzt den script unter C:\script.ps1 abgespeichert
und hab das ganze mit folgenden befehl im PS gestartet:
PS C:\Users\Administrator.MEINEDOMÄNE> cd c:\
PS C:\> 'script.ps1' -ExchangeServer srvex.meinedomäne.local -InternalFQDN "mail.meinedomäne.de" -ExternalFQDN "mail.meinedomäne.de
... darauf dieser Fehler
"
In Zeile:1 Zeichen:14
Unerwartetes Token "-ExchangeServer" in Ausdruck oder Anweisung.
In Zeile:1 Zeichen:30
Unerwartetes Token "srv.meinedomäne.local" in Ausdruck oder Anweisung.
+ CategoryInfo : ParserError: (
, ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\>
Hast du mir eine Idee?
ich habe mir jetzt den script unter C:\script.ps1 abgespeichert
und hab das ganze mit folgenden befehl im PS gestartet:
PS C:\Users\Administrator.MEINEDOMÄNE> cd c:\
PS C:\> 'script.ps1' -ExchangeServer srvex.meinedomäne.local -InternalFQDN "mail.meinedomäne.de" -ExternalFQDN "mail.meinedomäne.de
... darauf dieser Fehler
"
In Zeile:1 Zeichen:14
Unerwartetes Token "-ExchangeServer" in Ausdruck oder Anweisung.
In Zeile:1 Zeichen:30
Unerwartetes Token "srv.meinedomäne.local" in Ausdruck oder Anweisung.
+ CategoryInfo : ParserError: (
+ FullyQualifiedErrorId : UnexpectedToken
PS C:\>
Hast du mir eine Idee?
Ich verstehe nicht was ich falschmache ....
ich habe deinen Script genommen und die Zl.1-Zl.101unter c:\script.ps1 gespeichert
nun öffne ich die Powershell und gebe den Befehl:
'C:\script.ps1' -ExchangeServer srvexch.meinedomäne.local -InternalFQDN "mail.meinedomäne.de" -ExternalFQDN "mail.meinedomäne.de"
Was mache ich falsch?
ich habe deinen Script genommen und die Zl.1-Zl.101unter c:\script.ps1 gespeichert
nun öffne ich die Powershell und gebe den Befehl:
'C:\script.ps1' -ExchangeServer srvexch.meinedomäne.local -InternalFQDN "mail.meinedomäne.de" -ExternalFQDN "mail.meinedomäne.de"
Was mache ich falsch?
soo wenn ich die ' ' bei C:\script.ps1 weglasse erscheint nun folgendender Fehler:
[PS] C:\>C:\script.ps1 -ExchangeServer srvex.domain.local -InternalFQDN "mail.domain.de" -ExternalFQDN "mail.domain.de"
In C:\script.ps1:97 Zeichen:4
Schließende ")" fehlt in einem Ausdruck.
In C:\script.ps1:99 Zeichen:57
Nach "(" wurde ein Ausdruck erwartet.
In C:\script.ps1:111 Zeichen:1
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In C:\script.ps1:91 Zeichen:1
Unerwartetes Attribut "CmdletBinding".
+ CategoryInfo : ParserError: (
, ParseException
+ FullyQualifiedErrorId : MissingEndParenthesisInExpression
[PS] C:\>
[PS] C:\>C:\script.ps1 -ExchangeServer srvex.domain.local -InternalFQDN "mail.domain.de" -ExternalFQDN "mail.domain.de"
In C:\script.ps1:97 Zeichen:4
Schließende ")" fehlt in einem Ausdruck.
In C:\script.ps1:99 Zeichen:57
Nach "(" wurde ein Ausdruck erwartet.
In C:\script.ps1:111 Zeichen:1
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In C:\script.ps1:91 Zeichen:1
Unerwartetes Attribut "CmdletBinding".
+ CategoryInfo : ParserError: (
+ FullyQualifiedErrorId : MissingEndParenthesisInExpression
[PS] C:\>