Exchange 2016: DNS-Namen für Zertifikate ermitteln (Quick & Dirty)

Die DNS-Namen der konfigurierten URLs der virtuellen Exchange Verzeichnisse sind für das SSL-Zertifikat relevant. Die entsprechenden DNS-Namen müssen auf dem Zertifikat als SAN (Subject Alternate Name) vorhanden sein.

Dieses kleine Script listet alle konfigurierten DNS-Namen der Exchange 2016 Server auf. Somit lässt sich das Zertifikat entsprechend beantragen und ausstellen.

$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

Mit kleinen Anpassungen kann das Script auch verwendet werden, um Abweichungen der konfigurierten Hostnamen zu ermitteln.

DNS-Namen

Die Variable $CertNames enthält alle konfigurierten Hostnamen der Exchange Server. Diese DNS-Namen können dann für das Zertifikat verwendet werden.

image-44

6 Gedanken zu „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

    Antworten
  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

    Antworten
  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

    Antworten
  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

    Antworten

Schreibe einen Kommentar