Búsqueda de sitios web

Cómo exportar direcciones de correo electrónico con PowerShell


Cada buzón o destinatario puede tener varias direcciones de correo electrónico. Puede buscar y obtener todas las direcciones de correo electrónico de la organización para uno o todos los usuarios. Estas son las direcciones SMTP principales y los alias SMTP secundarios. En este artículo, aprenderá cómo exportar direcciones de correo electrónico con PowerShell a un archivo CSV.

Administrar direcciones de correo electrónico en Exchange Online

Para administrar direcciones de correo electrónico en su organización de Microsoft 365, utilice los siguientes artículos:

  • Agregar direcciones de correo electrónico con PowerShell
  • Eliminar direcciones de correo electrónico con PowerShell
  • Exportar direcciones de correo electrónico con PowerShell (este artículo)

Dirección de correo electrónico principal versus secundaria

Algunos usuarios de su organización tienen varias direcciones de correo electrónico. Puede buscar y encontrar direcciones de correo electrónico específicas tanto para un solo usuario como para todos los usuarios.

Cada usuario debe tener una dirección SMTP principal. La dirección de correo electrónico SMTP secundaria también se conoce como alias. Un alias es otra dirección de correo electrónico que las personas pueden utilizar para enviar correos electrónicos al usuario. También hay direcciones de correo electrónico proxy, que son direcciones adicionales conocidas como direcciones SIP o x500.

La siguiente tabla muestra la diferencia entre las direcciones de correo electrónico SMTP y smtp.

Only one address

Cero, una o varias direcciones

Primary email address

Dirección de correo electrónico secundaria o alias

Written in uppercase letters (SMTP)

Escrito en letras minúsculas (smtp)

Use PrimarySmtpAddress in PowerShell to display only SMTP addresses.

Utilice EmailAddresses en PowerShell para mostrar todas las direcciones de correo electrónico (SMTP, smtp, SIP, direcciones x500)

The recipient can send and accept messages from the SMTP email address.

De forma predeterminada, el destinatario sólo puede aceptar mensajes de correo electrónico enviados a la dirección de correo electrónico SMTP. El destinatario no puede enviar desde una dirección de alias a menos que active el envío desde alias en el inquilino de Microsoft 365.*

*Solo puede enviar desde una dirección de correo electrónico de alias si tiene un buzón de correo de Exchange Online, porque la función no está disponible para los buzones de correo locales de Exchange.

Conéctese a Exchange Online PowerShell

Para ejecutar los comandos de PowerShell especificados en el artículo actual, debe conectarse a Exchange Online PowerShell.

Connect-ExchangeOnline

Obtenga direcciones de correo electrónico de buzón único

Usaremos el cmdlet Get-Mailbox para mostrar información sobre las direcciones de correo electrónico.

Para obtener todas las direcciones de correo electrónico de un buzón de usuario único, ejecute el siguiente comando de PowerShell.

Get-Mailbox "Amanda.Hansen@m365info.com" | Select-Object -ExpandProperty EmailAddresses

La salida de PowerShell muestra el siguiente resultado.

SMTP:Amanda.Hansen@m365info.com
SPO:SPO_a21d1f73-5b3e-47db-bccd-16559e7d5560@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd

Obtener la dirección SMTP principal

Ejecute el siguiente comando de PowerShell para mostrar la dirección SMTP principal de un destinatario de Exchange Online específico.

Get-Mailbox "Amanda.Hansen@m365info.com" | Select-Object DisplayName, PrimarySmtpAddress

La salida de PowerShell muestra el siguiente resultado.

DisplayName   PrimarySmtpAddress
-----------   ------------------
Amanda Hansen Amanda.Hansen@m365info.com

Para mostrar la dirección SMTP principal de todos los buzones de correo de Exchange Online, ejecute el siguiente comando de PowerShell.

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress

Mostrar solo direcciones de correo electrónico smtp

Con el cmdlet Get-Mailbox, no puede especificar un tipo de dirección de correo electrónico, como una dirección de correo electrónico proxy. Por lo tanto, debe agregar la tabla hash, que es una matriz especial en el comando de PowerShell.

La tabla hash se crea en partes:

  1. Utilice el carácter @ para crear la tabla hash seguido de llaves { } y un nombre.
  2. Utilice el carácter = y defina la matriz nombre.
  3. La parte de la expresión es crear una consulta de búsqueda filtrada por PowerShell.
  4. Defina un filtro con la instrucción Where-Object de PowerShell con el operador de comparación -cmatch, que distingue entre mayúsculas y minúsculas solo para obtener direcciones de correo electrónico smtp.

Ejecute el comando PowerShell para enumerar solo las direcciones de correo electrónico SMTP de un único buzón.

Get-Mailbox "Brenda.Smith@m365info.com" | Select-Object DisplayName, @{Name = "EmailAddresses"; Expression = { ($_.EmailAddresses | Where-Object { $_ -cmatch "smtp:*" } | ForEach-Object { $_ -replace 'smtp:' }) -join ';' } }

La salida de PowerShell muestra el siguiente resultado.

DisplayName  EmailAddresses
-----------  --------------
Brenda Smith brenda.alias2@m365info.com;brenda.alias@m365info.com;Brenda.Smith@ms365info.onmicrosoft.com

Para mostrar las direcciones de correo electrónico SMTP de todos los buzones de correo de Exchange Online, ejecute el siguiente comando de PowerShell.

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, @{Name = "EmailAddresses"; Expression = { ($_.EmailAddresses | Where-Object { $_ -cmatch "smtp:*" } | ForEach-Object { $_ -replace 'smtp:' }) -join ';' } }

Mostrar solo direcciones SIP

Para mostrar solo las direcciones SIP de todos los buzones de correo, debe utilizar el objeto Where con el operador de comparación -like de PowerShell.

Ejecute el siguiente comando de PowerShell para mostrar todas las direcciones SIP para todos los usuarios.

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, @{Name = "SIP Email Address"; Expression = { $_.EmailAddresses | Where-Object { $_ -like "sip:*" } } }

La salida de PowerShell muestra el siguiente resultado.

DisplayName              SIP Email Address
-----------              -----------------
Adam Mackay              SIP:adam.mackay@m365info.com
Amanda Hansen
Amanda Morgan            SIP:amanda.morgan@m365info.com
Andrea Baker             SIP:andrea.baker@m365info.com
Anna Bell
Blake Martin             SIP:blake.martin@m365info.com
Brenda Smith             SIP:brenda.smith@m365info.com
Brian Mill               SIP:brian.mill@m365info.com
Carl Hawk                SIP:carl.hawk@m365info.com

Mostrar solo direcciones x500

Para ver solo las direcciones de correo electrónico x500 de todos los buzones de correo, debe utilizar el Objeto Where con el operador de comparación -cmatch de PowerShell.

Ejecute el siguiente comando de PowerShell para obtener una lista de todas las direcciones x500 de todos los buzones.

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, @{Name = "x500 Email Address"; Expression = { $_.EmailAddresses | Where-Object { $_ -cmatch "x500:*" } } }

Busque todas las direcciones de correo electrónico con un sufijo de nombre de dominio específico

Para buscar direcciones de correo electrónico específicas, puede utilizar el objeto Where en PowerShell. Para filtrar el resultado, usaremos los operadores de comparación -eq o -like de PowerShell.

La sintaxis de PowerShell se parecerá al ejemplo siguiente usando -eq.

Where-Object { $_.EmailAddresses -eq "smtp:Amanda.Hansen@m365info.com" }

Otro ejemplo de sintaxis de PowerShell que utiliza -like.

Where-Object { $_.EmailAddresses -like "*@m365info.com" }

En nuestro ejemplo, queremos obtener todas las direcciones de correo electrónico con el sufijo de nombre de dominio m365info.com.

Ejecute el siguiente comando de PowerShell para obtener todos los SMTP principales con un sufijo de nombre de dominio específico para todos los buzones de correo.

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySMTPAddress, @{Name = "Proxy Email Addresses"; Expression = { $_.EmailAddresses -cmatch "smtp" } } | Where-Object { ($_.PrimarySMTPAddress -like "*m365info.com*") }

La salida de PowerShell muestra una lista de todas las direcciones de correo electrónico del usuario.

DisplayName        PrimarySmtpAddress              Proxy Email Addresses
-----------        ------------------              ---------------------
Adam Mackay        Adam.Mackay@m365info.com        {smtp:Adam.Mackay1@m365info.com, smtp:Adam.Mackay@ms365info.onmicrosoft.com}
Amanda Hansen      Amanda.Hansen@m365info.com
Andrea Baker       Andrea.Baker@m365info.com
Anna Bell          Anna.Bell@m365info.com          smtp:Anna.Bell@ms365info.onmicrosoft.com
Blake Martin       Blake.Martin@m365info.com
Brenda Smith       Brenda.Smith@m365info.com       {smtp:brenda.alias2@m365info.com, smtp:brenda.alias@m365info.com, smtp:Brenda.Smith@ms365info.onmicrosoft.com}
Brian Mill         Brian.Mill@m365info.com
Carl Hawk          Carl.Hawk@m365info.com          smtp:Carl.Hawk@ms365info.onmicrosoft.com
Carol Piper        Carol.Piper@m365info.com        {smtp:carol-p@m365info.com, smtp:Carol@m365info.com}
Catch All          Catch.All@m365info.com          smtp:Catch.All@ms365info.onmicrosoft.com
Chris Lucas        Chris.Lucas@m365info.com        smtp:Chris.Lucas@ms365info.onmicrosoft.com
Test SharedMailbox test.sharedmailbox@m365info.com smtp:test.sharedmailbox@ms365info.onmicrosoft.com

Para buscar todas las direcciones de correo electrónico, utilizaremos Get-Recipient para revisar todos los objetos habilitados para correo. Agregaremos el parámetro -Filter con un sufijo de dominio específico.

Ejecute el ejemplo del comando PowerShell para obtener todas las direcciones de correo electrónico de todos los destinatarios.

Get-Recipient -ResultSize Unlimited -Filter { EmailAddresses -like "*@m365info.com" } | Format-Table DisplayName, EmailAddresses

Los resultados de salida de PowerShell.

DisplayName              EmailAddresses
-----------              --------------
Amanda Hansen            {SMTP:Amanda.Hansen@m365info.com, SPO:SPO_a21d1f73-5b3e-47db-bccd-16559e7d5560@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd}
Chris Lucas              {SIP:chris.lucas@m365info.com, smtp:Chris.Lucas@ms365info.onmicrosoft.com, SMTP:Chris.Lucas@m365info.com}
Diana Baker              {SIP:diana.baker@m365info.com, SMTP:Diana.Baker@m365info.com, SPO:SPO_13fee752-5966-4b62-98e2-f27fe9e5f66d@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd}
Info Box                 {SIP:479a0514b10f491aab2aec92c9673a35infobox@m365info.com, SMTP:InfoBox@m365info.com}
Projector 8              {SIP:3c06bdad32244b93ac4efb7dcd23e0ceprojector8@m365info.com, SMTP:Projector8@m365info.com}

Para buscar direcciones de correo electrónico de buzones de correo eliminados temporalmente en Exchange Online, ejecute el siguiente comando de PowerShell.

Get-Mailbox -ResultSize Unlimited -SoftDeletedMailbox -Filter { EmailAddresses -like "*@m365info.com" } | Format-Table DisplayName, EmailAddresses

El resultado de la salida de PowerShell se muestra a continuación.

DisplayName        EmailAddresses
-----------        --------------
Test SharedMailbox {DLTDNETID:10032003642DB69B, SMTP:test.sharedmailbox33@m365info.com, smtp:test.sharedmailbox1@m365info.com}

Ejecute el siguiente comando de PowerShell para obtener una lista de todas las direcciones de correo electrónico del grupo de distribución.

Get-DistributionGroup -ResultSize Unlimited -Filter { EmailAddresses -like "*@m365info.com" } | Format-Table DisplayName, EmailAddresses

Vea los siguientes resultados de salida de PowerShell.

DisplayName          EmailAddresses
-----------          --------------
Finance UK mail list {smtp:FinanceUK@ms365info.onmicrosoft.com, SMTP:FinanceUK@m365info.com}
RoomGroup            {SMTP:RoomGroup@m365info.com}
Sales Spain          {smtp:SalesSpain@ms365info.onmicrosoft.com, SMTP:SalesSpain@m365info.com}
Sales Spain          {smtp:SalesSpain1@ms365info.onmicrosoft.com, SMTP:SalesSpain1@m365info.com}
Sales USA            {smtp:SalesUSA@ms365info.onmicrosoft.com, SMTP:SalesUSA@m365info.com}
SalesUK              {smtp:SalesUK@ms365info.onmicrosoft.com, SMTP:SalesUK@m365info.com}

Ejecute el siguiente comando de PowerShell para obtener todas las direcciones de correo electrónico del Dynamic Distribution Group.

Get-DynamicDistributionGroup -ResultSize Unlimited -Filter { EmailAddresses -like "*@m365info.com" } | Format-Table DisplayName, EmailAddresses

Vea el resultado de salida de PowerShell a continuación.

DisplayName    EmailAddresses
-----------    --------------
Dynamic        {SMTP:Dynamic@m365info.com}
Dynamic test 2 {SMTP:Dynamic2@m365info.com}

Ejecute el siguiente comando de PowerShell para obtener todas las direcciones de correo electrónico de Unified Group.

Get-UnifiedGroup -ResultSize Unlimited -Filter { EmailAddresses -like "*@m365info.com" } | Format-Table DisplayName, EmailAddresses

El resultado de la salida de PowerShell se muestra a continuación.

DisplayName        EmailAddresses
-----------        --------------
Sales Team         {SPO:SPO_079142cc-bb67-440e-b99a-0be94049c99a@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:SalesTeam@ms365info.onmicrosoft.com, SMTP:SalesTeam@m365info.com}
Management Team    {SPO:SPO_05de02ce-e6eb-48dc-8020-2121678d9382@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:ManagementTeamc7f@ms365info.onmicrosoft.com, smtp:ManagementT1@m365info.com}
IT                 {SPO:SPO_5c3acbd0-31e8-4788-b6be-d2cb0f7e3029@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:IT@ms365info.onmicrosoft.com, SMTP:IT@m365info.com}
M365 Dynamic Group {SPO:SPO_839a2af8-6518-4712-ae12-8e9025c9bf2c@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:M365Dyn@ms365info.onmicrosoft.com, SMTP:M365Dyn@m365info.com}
ZZgroup            {SPO:SPO_e82d151f-a843-4e9e-8474-c5b3304c0b41@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:ZZgroup@ms365info.onmicrosoft.com, SMTP:ZZgroup@m365info.com}
Sales              {SPO:SPO_336a3658-0414-4c8c-8d9c-fa2b7b71d071@SPO_a2ff010e-0e03-4c56-8863-2ae7f07876dd, smtp:Sales@ms365info.onmicrosoft.com, SMTP:Sales@m365info.com}

Exportar todas las direcciones de correo electrónico a un archivo CSV

Para exportar todas las direcciones de correo electrónico a un archivo CSV, debe crear una carpeta temp en la unidad (C:).

  1. Especifique la ruta del archivo CSV en la línea 2
  2. Ejecute el script de PowerShell para exportar todas las direcciones de correo electrónico a un archivo Out-GridView y CSV.
# CSV export file path
$CsvPath = "C:\temp\AllEmailAddresses.csv"

# Initialize an empty array to store recipient information
$recipientInfo = @()

# Retrieve recipient information
$recipients = Get-recipient -ResultSize Unlimited

# Iterate through each recipient
foreach ($recipient in $recipients) {
    $recipientData = [PSCustomObject]@{
        DisplayName               = $recipient.DisplayName
        'Primary Email Addresses' = ($recipient.EmailAddresses | Where-Object { $_ -cmatch "SMTP:" } | ForEach-Object { $_ -replace "SMTP:", "" }) -join ";"
        'Proxy Email Addresses'   = ($recipient.EmailAddresses | Where-Object { $_ -cmatch "smtp:" } | ForEach-Object { $_ -replace "smtp:", "" }) -join ";"
        'SIP Email Addresses'     = ($recipient.EmailAddresses | Where-Object { $_ -like "sip:*" } | ForEach-Object { $_ -replace "sip:", "" }) -join ";"
        'X500 Email Addresses'    = ($recipient.EmailAddresses | Where-Object { $_ -like "x500:*" } | ForEach-Object { $_ -replace "x500:", "" }) -join ";"
    }
    $recipientInfo += $recipientData
}

# Output the recipient information to Out-GridView
$recipientInfo | Out-GridView -Title "Microsoft 365 email addresses"

# Export the recipient information to a CSV file
$recipientInfo | Export-Csv $CsvPath -NoTypeInformation -Encoding utf8
  1. Aparecen los resultados de Out-GridView

  1. Abra el archivo CSV con Microsoft Excel para ver los resultados.

¡Eso es todo!

Leer más: Cómo exportar el permiso del buzón de acceso completo »

Conclusión

Aprendiste a buscar y exportar direcciones de correo electrónico con PowerShell. Hay diferentes consultas que se pueden usar en el comando de PowerShell para recuperar los resultados que desea. Otra forma es exportar todas las direcciones de correo electrónico y filtrarlas en Microsoft Excel.

Disfrutaste este artículo? También te puede interesar Cómo utilizar operadores lógicos en PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados