Exchange 2016: Determine DNS names for certificates (Quick & Dirty)

The DNS names of the configured URLs of the virtual Exchange directories are relevant for the SSL certificate. The corresponding DNS names must be available on the certificate as SAN (Subject Alternate Name).

This small script lists all configured DNS names of the Exchange 2016 servers. This allows the certificate to be requested and issued accordingly.

$AllExchangeServers = Get-ExchangeServer
foreach ($ExchangeServer in $AllExchangeServers)
{
[array]$CertNames += (Get-ClientAccessService -Identity $ExchangeServer.Name).AutoDiscoverServiceInternalUri.Host
[array]$CertNames += (Get-OutlookAnywhere -Server $ExchangeServer).Internalhostname.Hostnamestring
[array]$CertNames += (Get-OutlookAnywhere -Server $ExchangeServer).ExternalHostname.Hostnamestring
[array]$CertNames += (Get-MapiVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-MapiVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
[array]$CertNames += (Get-OabVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-OabVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
[array]$CertNames += (Get-ActiveSyncVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-ActiveSyncVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
[array]$CertNames += (Get-WebServicesVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-WebServicesVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
[array]$CertNames += (Get-EcpVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-EcpVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
[array]$CertNames += (Get-OwaVirtualDirectory -Server $ExchangeServer).Internalurl.Host
[array]$CertNames += (Get-OwaVirtualDirectory -Server $ExchangeServer).ExternalUrl.Host
}
$CertNames | select -Unique

With minor adjustments, the script can also be used to detect deviations in the configured host names.

DNS names

The variable $CertNames contains all configured host names of the Exchange servers. These DNS names can then be used for the certificate.

image-44

6 thoughts on “Exchange 2016: DNS-Namen für Zertifikate ermitteln (Quick & Dirty)”

  1. Hallo, ich bekomme beim Versuch, das Script auszuführen immer folgende Fehlermeldung zurück:
    Get-ExchangeServer : Die Benennung „Get-ExchangeServer“ wurd nicht als Name eines Cmdlet, einer Funktion, einer Scriptdatei oder eines ausführbaren Programms erkannt.
    Mache ich einen Denkfehler?
    Vielen Dank für Eure Hilfe
    Gruß
    Stefan

    Reply
  2. Hallo Frank,
    du filterst das Array ab Zeile 4 nicht mehr auf den Namen, ich glaube das ist so nicht beabsichtigt oder?
    (Get-OutlookAnywhere -Server $ExchangeServer).
    müsste doch
    (Get-OutlookAnywhere -Server $ExchangeServer.Name).
    heißen oder?
    (Respektive alle restlichen Zeilen…)

    Gruß
    Christoph

    Reply
  3. Hinter der Klammer-zu sollten diese Zeichen „>>“eigentlich nicht mehr kommen?
    Dann kann er mit dem Edge-server nicht umgehen. Wie kann ich diesen in der Abfrage ausklammern?
    Der Vorgang konnte nicht ausgeführt werden, weil das Objekt ‚Edge-Server‘ nicht auf ‚DC.Domain.internal‘ gefunden wurde.
    + CategoryInfo : NotSpecified: (:) [Get-ClientAccessService], ManagementObjectNotFoundException

    Auf ‚Edge-Server‘ ist nicht die richtige Version oder Serverrolle von Exchange Server installiert, die zur Unterstützung dieses Vorgangs erforderlich ist.
    + CategoryInfo : InvalidOperation: (Edge-Server:ServerIdParameter) [Get-OutlookAnywhere], ServerRoleOperationException
    #LG und Danke

    Reply
    • Hi,

      Edge Server kannst du wie folgt ausklammern:

      $AllExchangeServers = Get-ExchangeServer | where {$_.serverrole -notmatch „Edge“}

      Gruß, Frank

      Reply
  4. Bei Exchange 2013 erkennt er das CMDlet in Zeile 4 „Get-ClientAccessService“ nicht. Ersetzt man es durch „Get-ClientAccessServer“ läuft alles perfekt :).

    Gruss Martin

    Reply

Leave a Comment