Hoe u alle SMTP-e-mailadressen kunt ophalen met PowerShell in Exchange

Wil je al die SMTP-adressen exporteren vanuit Exchange of Office 365? Jazeker, dat is handig voor audits, migraties of gewoon om te zien wie welk e-mailalias heeft. Soms is die enorme lijst met SMTP-adressen die aan gebruikers, contactpersonen of groepen zijn gekoppeld, je enige aanknopingspunt om op te schonen of problemen op te lossen. Al die informatie in een CSV-bestand krijgen? Dat kan met PowerShell, maar het kan in het begin wat verwarrend zijn, vooral als je werkt met een on-premises Exchange-omgeving of Azure AD-objecten combineert. Deze handleiding laat je zien hoe je dat doet met een paar simpele opdrachten en tips, zodat je niet hoeft te staren naar een zee van e-mailadressen. Je ziet onder andere primaire adressen, aliassen en hoe je alles overzichtelijk kunt exporteren voor toekomstig gebruik. En ja, het werkt zowel in Exchange Server- als Microsoft 365-omgevingen, want je moet natuurlijk wel schakelen afhankelijk van waar je je bevindt.

Hoe exporteer je SMTP-adressen vanuit Exchange of Microsoft 365?

Maak verbinding met uw Exchange-omgeving.

  • Voor on-premises Exchange kunt u de Exchange Management Shell (EMS) gebruiken. Deze vindt u meestal in het Startmenu onder Exchange Management Shell.
  • Of, voor cloudomgevingen, kunt u verbinding maken via PowerShell met behulp van de Exchange Online-module.

Bij nieuwere configuraties moet u waarschijnlijk de nieuwste Exchange Online PowerShell-module installeren. Hier is een snelle manier om verbinding te maken met uw tenant:

Connect-ExchangeOnline -UserPrincipalName [email protected]

Tip: Afhankelijk van je omgeving moet je PowerShell mogelijk als beheerder uitvoeren of je uitvoeringsbeleid instellen met ` Set-ExecutionPolicy RemoteSigned.`.Als je verbindingsproblemen ondervindt, kan een snelle herstart van PowerShell of een nieuwe authenticatie soms helpen.

E-mailadressen voor één mailbox bekijken

Met dit commando worden alle primaire en secundaire SMTP-adressen voor een specifieke gebruiker opgehaald:

Get-Mailbox testmax | Select-Object DisplayName, PrimarySmtpAddress, EmailAddresses | Format-List

Dit helpt je te controleren wat er is. Hoofdletters SMTPgeven het primaire adres aan, kleine letters smtpzijn aliassen of extra adressen. Soms zie je ook andere adressoorten, zoals X400-adressen of aangepaste adressen, dus deze opdracht geeft een goede eerste indicatie van wat er is toegewezen.

Extraheer alle SMTP-adressen, inclusief aliassen.

Omdat een mailbox meerdere SMTP-adressen kan bevatten EmailAddresses, worden deze adressen met dit commando expliciet gefilterd:

Get-Mailbox testmax | Select-Object DisplayName, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } }

Op die manier krijg je een lijst met alle SMTP-aliassen, gescheiden door komma’s. Als je dit voor alle gebruikersmailboxen wilt doen en als CSV wilt opslaan, zie hier hoe je dat doet:

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } } | Export-Csv "C:\\PS\\List-All-SMTP-Addresses.csv" -NoTypeInformation -Encoding UTF8

Dit geeft een schone lijst weer met alle mailboxen van gebruikers. Het pad kan naar wens worden aangepast. Zelfs bij sommige configuraties kan het uitvoeren van deze opdracht eenmalig fouten of onvolledige gegevens opleveren. Soms helpt een snelle herstart of herverbinding, dus geef niet op als het de eerste keer niet werkt.

Het ophalen van SMTP-adressen van alle objecten in Active Directory of Azure AD.

Als u meer nodig hebt dan alleen gebruikersaccounts, zoals contactpersonen, groepen of objecten met e-mailfunctionaliteit, kunt u Get-Recipient gebruiken. Deze functie omvat alle objecttypen in uw Exchange-tenant:

Get-Recipient -ResultSize Unlimited | Select-Object DisplayName, RecipientType, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } }

Wil je bijvoorbeeld alleen distributiegroepen? Voeg dan de -RecipientTypeparameter als volgt toe:

Get-Recipient -ResultSize Unlimited -RecipientType DistributionGroup |...

Op deze manier kunt u de overbodige informatie filteren en u concentreren op specifieke objecttypen. Dit is handig als u e-mailadressen in uw gehele Microsoft-omgeving wilt opschonen of controleren.

Dubbele SMTP-adressen vinden

Als u vreest dat meerdere objecten hetzelfde e-mailadres delen, geeft deze opdracht een lijst van alle SMTP-adressen van elke ontvanger. Dit is erg handig voor het oplossen van adresconflicten of dubbele adressen:

Get-Recipient -ResultSize Unlimited | Where-Object { $_. EmailAddresses -like "*[email protected]*" }

Niet ideaal voor grote huurders, maar goed genoeg voor snelle controles. Als je een onbewerkte lijst van alle SMTP-servers wilt, geeft deze tool de adressen in een platte vorm weer – geen duplicaten, alleen de adressen:

Get-Recipient | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" } | Sort-Object -Unique

Ideaal om snel een overzicht te krijgen van alle unieke SMTP-servers die binnen uw organisatie in gebruik zijn. Soms is de kennis van de reeds gebruikte servers al voldoende om e-mailconflicten op te lossen of een migratie voor te bereiden.

Samenvatting

  • Gebruik PowerShell-opdrachten zoals Get-Mailboxen Get-Recipientom e-mailadressen weer te geven.
  • Filter en ruim de e-mailadressen op, zodat je primaire adressen en aliassen duidelijk kunt zien.
  • Exporteer alles naar CSV voor eenvoudiger beheer of controles.
  • Zorg ervoor dat u verbinding maakt met de juiste omgeving – lokaal of in de cloud – voordat u opdrachten uitvoert.
  • Heb geduld: soms zijn er een paar pogingen nodig of een snelle herstart van de sessie om de volledige lijst weer te geven.

Samenvatting

Het ophalen van al die SMTP-adressen uit Exchange of Microsoft 365 is geen hogere wiskunde als je PowerShell eenmaal onder de knie hebt. Het vergt wel wat oefening, vooral bij het werken met verschillende objecttypen en omgevingen, maar de commando’s zijn vrij eenvoudig. Wat echt helpt, is weten welke cmdlets je moet gebruiken en hoe je de resultaten kunt filteren voor meer overzicht. Hiermee zou je zonder al te veel moeite alle e-mailadressen die aan gebruikers, contactpersonen en groepen zijn gekoppeld, moeten kunnen ophalen, bekijken en exporteren. Hopelijk scheelt dit een paar uur voor iemand die bezig is met opruimen of zich voorbereidt op een migratie. Succes, en vergeet niet om te testen in een niet-productieomgeving als je op grote schaal scripts gebruikt. Voorkomen is beter dan genezen.