Búsqueda de sitios web

Administrar direcciones de correo electrónico usando PowerShell | Oficina 365 | Referencia de comando | Parte 2#13


El artículo actual continúa el artículo anterior en el que revisamos varias tareas de administración relacionadas con la administración de direcciones de correo electrónico mediante PowerShell. En este artículo, revisamos los siguientes tipos de tareas de gestión:

  • Mostrar información sobre direcciones de correo electrónico.
  • Búsqueda de información sobre direcciones de correo electrónico.
  • Eliminar (eliminar) direcciones de correo electrónico mediante PowerShell.

Mostrar información sobre direcciones de correo electrónico

La dirección de correo electrónico “tienda” | Propiedad EmailAddresses

La información sobre la dirección de correo electrónico del destinatario del buzón, como la dirección de correo electrónico principal, la dirección de correo electrónico proxy, la dirección SIP y la dirección x500, se "almacena" en la propiedad del buzón
llamada EmailAddresses. .

La necesidad de “manipular” los datos sobre la dirección de correo electrónico

Técnicamente, la tarea de mostrar o exportar información sobre las direcciones de correo electrónico de un destinatario puede considerarse una tarea sencilla.

Sin embargo, en muchos escenarios, necesitaremos “ajustar” la información que proporciona el comando “estándar” de PowerShell. Por ejemplo,

Problema 1: nuestra capacidad para seleccionar una "información" específica de la "matriz de direcciones de correo electrónico" que se almacena en direcciones de correo electrónico.

De forma predeterminada, PowerShell "escupe" todo el contenido almacenado en las direcciones de correo electrónico. Los cmdlets de Exchange Online PowerShell no incluyen un parámetro integrado que nos permita filtrar la información, como solicitar mostrar solo la dirección de correo electrónico del proxy, etc.

Problema 2: los valores predeterminados de PowerShell mostrarán el contenido de la propiedad EmailAddresses con "información" adicional asociada con la "dirección de correo electrónico de información original", como el SMTP: prefijo.

Comenzaremos con la sintaxis básica de PowerShell que usamos para "obtener" información sobre la dirección de correo electrónico y, en la siguiente sección, revisaremos cómo usar la tabla Hash y las expresiones personalizadas para optimizar y ajustar la información que necesitamos. para obtener la dirección de correo electrónico del destinatario.

Ver información sobre la dirección de correo electrónico

La sintaxis del comando PowerShell "predeterminada" que utilizamos para mostrar información sobre la dirección de correo electrónico de un destinatario es bastante simple.

Necesitamos especificar:

  • El tipo específico de destinatario, como "destinatario del buzón".
  • La identidad del destinatario de Exchange Online, como alias, dirección de correo electrónico, etc.
  • Las propiedades específicas que queremos mostrar, como: DisplayName, PrimarySmtpAddress, EmailAddresses.

Sintaxis del comando PowerShell

Get-Mailbox <Identity> | Select DisplayName,EmailAddresses

Ejemplo de comando de PowerShell

Get-Mailbox Billy | Select DisplayName,EmailAddresses

Mostrar información sobre la dirección de correo electrónico principal

En caso de que necesitemos mostrar información solo sobre la dirección de correo electrónico principal de un destinatario específico de Exchange Online, podemos utilizar la siguiente sintaxis.

Ejemplo de comando de PowerShell:

Get-Mailbox Billy |Select-Object DisplayName,PrimarySmtpAddress

Para mostrar información sobre todas las direcciones de correo electrónico principales de los buzones de Exchange Online, podemos usar la siguiente sintaxis de comandos de PowerShell.

Ejemplo de comando de PowerShell:

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

Expanda la "Propiedad de dirección de correo electrónico"

Con respecto al "problema" de mostrar el "contenido completo" de la propiedad de correo electrónico de destinatarios de múltiples valores, podemos implementar una "solución parcial" para un destinatario específico para el problema de mostrar múltiples direcciones de correo electrónico, pero esta solución no es adecuada. implementado en un escenario en el que necesitamos mostrar información sobre múltiples destinatarios

En el siguiente ejemplo, utilizamos un comando de PowerShell que obtiene información sobre las direcciones de correo electrónico de
Angelina.

Ejemplo de comando de PowerShell:

Get-Mailbox Angelina | Select-Object -ExpandProperty EmailAddresses

En el resultado, podemos ver que la propiedad "EmailAddresses" incluye muchas direcciones de correo electrónico.

PS C:\script> Get-Mailbox Angelina | Select-Object -ExpandProperty EmailAddresses
smtp:Angelina@o365pilot.com
smtp:kk@o365info.com
SPO:SPO_5b27dc17-68b0-442e-804b-aee5b4df9847@SPO_e95bcc9e-2927-483d-ad36-7311a7152bdd
smtp:Angelina@o365info.com
SMTP:Angelina-NEW01@o365info.com
smtp:Angelina-Alias03@o365info.com
smtp:Angelina-Alias02@o365info.com

Optimice los resultados mostrados sobre: direcciones de correo electrónico de los destinatarios utilizando la tabla Hash

En esta sección, revisamos cómo usar la tabla hash y las expresiones personalizadas, como una "herramienta" que mejora nuestras capacidades para digerir la información "nativa" que obtenemos de PowerShell sobre el correo electrónico de un destinatario. DIRECCIÓN.

En nuestro escenario específico, utilizamos la tabla Hash de PowerShell para tres propósitos principales:

1. Obtenga información sobre tipos específicos de direcciones de correo electrónico

Como se mencionó, de forma predeterminada, PowerShell muestra todo el contenido de la propiedad EmailAddresses . Al utilizar la opción de tabla Hash y expresiones personalizadas, podemos crear una nueva "propiedad de destinatario" personalizada que nos permite usar un filtro que obtiene información solo sobre una dirección de correo electrónico específica, como una dirección de correo electrónico proxy o una dirección SIP.

2. Optimización de la salida de PowerShell de la dirección de correo electrónico del destinatario | Eliminar "datos innecesarios" de la salida.

De forma predeterminada, PowerShell agrega información sobre el "tipo" de la dirección de correo electrónico al principio de la dirección de correo electrónico agregando un prefijo como SMTP:

Al utilizar la opción de tabla Hash y expresiones personalizadas, podemos definir una "solicitud" que eliminará el prefijo innecesario de la salida del comando de PowerShell.

El carácter adicional de la salida predeterminada del comando de PowerShell está relacionado con un escenario en el que el destinatario tiene varias direcciones de correo electrónico. En este caso, PowerShell mostrará la información sobre las direcciones de correo electrónico marcadas con "llaves".

Al utilizar la opción de tabla Hash y expresiones personalizadas, podemos definir una "solicitud" que eliminará las llaves innecesarias de la salida del comando de PowerShell.

3. Optimización de la salida de PowerShell de la dirección de correo electrónico del destinatario | Añadiendo “carácter de separación

Cuando exportamos información sobre la dirección de correo electrónico del destinatario a un archivo CSV, PowerShell exporta información sobre varias direcciones de correo electrónico a "una fila" y no utiliza un "carácter de separación".

En cambio, PowerShell agrega un "carácter de espacio" entre cada dirección de correo electrónico. En caso de que necesitemos importar información del archivo CSV, necesitamos tener un “carácter de separación” que permitirá que el proceso de importación distinga entre las diferentes direcciones de correo electrónico.

Al usar la opción de Tabla Hash y Expresiones personalizadas, podemos solicitar desde PowerShell que agregue un "carácter de separación" que separará cada dirección de correo electrónico de la dirección de correo electrónico adicional.

Una demostración de la forma en que utilizamos la tabla Hash y las expresiones personalizadas

En este ejemplo específico, utilizamos la tabla Hash de PowerShell y expresiones personalizadas para realizar las siguientes tareas:

  • Muestra información solo sobre la dirección de correo electrónico del proxy (la dirección de correo electrónico del proxy comienza con un prefijo SMTP escrito en minúsculas).
  • Elimine el prefijo SMTP de la salida de PowerShell de la dirección de correo electrónico.
  • Elimine las “llaves” que rodean la matriz de direcciones de correo electrónico.
  • Agregue un carácter separador; en nuestro ejemplo, usamos los caracteres (;)

Usamos la siguiente sintaxis de comando de PowerShell:

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

En el siguiente cuadro, podemos ver el resultado de la salida de PowerShell.
Observe que ahora

  • Cada dirección de correo electrónico aparece sin el prefijo SMTP.
  • Se eliminó la “corchete” que rodeaba la matriz de direcciones de correo electrónico.
  • Cada dirección de correo electrónico está separada por los caracteres - (;).

Ejemplo de salida de la consola PowerShell:

PS C:\script> Get-Mailbox Christina | Select-Object DisplayName,@{Name="EmailAddresses";Expression={ ($_.EmailAddresses | Where-Object {$_ -cmatch "smtp:*"} | ForEach-Object {$_ -replace 'smtp:' }) -join ';' }}

DisplayName               EmailAddresses
-----------               --------------
Christina Aguilera        Christina-Alias02@o365info.com;Christina@o365pilot.com

Uso de la tabla Hash para mostrar información sobre la dirección de correo electrónico del destinatario

En la siguiente sección, me gustaría revisar un par de ejemplos de un escenario en el que usamos la tabla hash de PowerShell para obtener información sobre direcciones de correo electrónico de destinatarios de Exchange específicos.

Mostrar solo la dirección de correo electrónico principal

El comando de PowerShell Get-Mailbox, incluye un parámetro dedicado que nos permite mostrar información sobre una dirección de correo electrónico específica que se define como dirección de correo electrónico principal.

En otras palabras, no necesitamos implementar ninguna sintaxis de comando sofisticada de PowerShell, como usar la tabla Hash para mostrar una dirección de correo electrónico principal.

Para poder ver solo la dirección de correo electrónico principal, podemos utilizar la siguiente sintaxis de PowerShell:

Get-Mailbox Billy | Select Alias,PrimarySmtpAddress

Aunque no necesitamos usar una configuración de comando especial, me gustaría brindar un ejemplo de la sintaxis de la tabla Hash, que usamos para mostrar el correo electrónico definido como una dirección de correo electrónico principal.

En este ejemplo, definimos una condición utilizando el operador lógico "cmatch", que "obtiene" información sobre la dirección de correo electrónico solo si el prefijo de la dirección de correo electrónico incluye la cadena "SMTP:". utilizando letras mayúsculas.

Ejemplo de comando de PowerShell

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

Mostrar solo la dirección SIP

En el escenario actual, queremos ver información solo sobre la dirección del destinatario, que se describe como "dirección SIP" (direcciones que utiliza Skype para usuarios comerciales).

La dirección SIP comienza con el prefijo sip:

Para poder "obtener" información solo sobre direcciones SIP, definimos la siguiente expresión de tabla Hash:

Ejemplo de comando de PowerShell:

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

Mostrar solo dirección electrónica x500

En el escenario actual, queremos ver información solo sobre la dirección de correo electrónico, que se describe como "dirección de correo electrónico x500".

La dirección de correo electrónico X500 comienza con el prefijo x500:

Para poder "obtener" información solo sobre direcciones x500, definimos la siguiente expresión de tabla hash.

Ejemplo de comando de PowerShell:

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

Puede encontrar información más detallada sobre el tema - Tabla hash y expresiones personalizadas en el artículo - Mostrar información sobre direcciones de correo electrónico usando PowerShell | Personalizar la salida usando tabla hash y expresiones personalizadas | Oficina 365 | Parte 7#13

Búsqueda de información sobre direcciones de correo electrónico

En la siguiente sección, demostraremos cómo utilizar la instrucción Dónde de PowerShell para crear una consulta de búsqueda personalizada, que buscará:

  • Un sufijo de nombre de dominio específico.
  • Una dirección de correo electrónico específica.

En un escenario en el que necesitamos "dirigirnos" a cada uno de los diferentes tipos de destinatarios de Exchange Online, buscando una dirección de correo electrónico específica, necesitamos saber cuáles son los cmdlets "mágicos" de PowerShell que nos permitirán realizar esto. tarea.

En realidad, no existe tal "comando mágico de PowerShell", sino que podemos usar una combinación de tres cmdlets de PowerShell diferentes, que nos permitirán cumplir con el requisito de "abordar" cada uno de los comandos existentes. Destinatarios de Exchange Online.

En un escenario en el que necesitamos realizar una búsqueda que "dirija" los tipos de destinatarios de Exchange Online disponibles, buscando direcciones de correo electrónico con un sufijo de nombre de dominio específico, debemos usar una combinación de los siguientes tres comandos de PowerShell:

  • Obtener destinatario
  • Obtener-buzón -SoftDeletedMailbox
  • Obtener-Grupo Unificado

Puede encontrar información más detallada sobre la forma en que realizamos una búsqueda de una dirección de correo electrónico específica o UPN de Office 365 en el artículo: Búsqueda de direcciones de correo electrónico con un sufijo de nombre de dominio específico usando PowerShell | Oficina 365 | Parte 10#13

Uso de un script de PowerShell para realizar una búsqueda de: dirección de correo electrónico, con un sufijo de nombre de dominio específico

La descripción de la tarea

  • Necesitamos realizar una búsqueda que ubique a todos los destinatarios de Exchange Online que tengan una dirección de correo electrónico con un sufijo de nombre de dominio específico.
  • Queremos que los “resultados” de PowerShell se guarden en un archivo CSV.

Los personajes y la lógica del script de PowerShell

1. El sufijo del nombre de dominio que buscamos.
El script de PowerShell nos "preguntará" sobre el sufijo del nombre de dominio específico que buscamos. La información se almacenará en una variable denominada $DomainSuffix.

2. Ubicación del archivo exportado
En nuestra demostración específica, solicitamos a PowerShell que cree para nosotros una NUEVA carpeta usando la siguiente ruta: C:\INFO\Dirección de correo electrónico\Exchange Online\Dirección de correo electrónico con sufijo de dominio - $SufijoDeDominio

3. Archivos exportados
Como se mencionó, para poder obtener una "vista" de todos los destinatarios de Exchange Online existentes, necesitamos usar tres cmdlets de PowerShell diferentes:

Get-Recipient, Get-Mailbox -SoftDeletedMailbox y Get-UnifiedGroup. El resultado de cada comando se almacenará en un archivo CSV separado.

$DomainSuffix = Read-Host "Type the domain name suffix that you look for"
# Creating folder structure and file names for the exported CSV files
$A20 = "C:\INFO\E-mail address\Exchange Online\E-mail address with Domain suffix - $Domainsuffix"

if (!(Test-Path -path $A20))
{New-Item $A20 -type directory}

# Exchange Online infrastructure
# Define the variable for the different type of Exchange Online recipients

$AllRecipients = Get-Recipient -ResultSize unlimited| Where {$_.EmailAddresses -like "*@$DomainSuffix"}
$SoftDeleted = Get-Mailbox -SoftDeletedMailbox | Where {$_.EmailAddresses -like "*@$DomainSuffix"}
$UnifiedGroups = Get-UnifiedGroup | Where {$_.EmailAddresses -like "*@$DomainSuffix"}
if ($SoftDeleted -eq $null)
{
write-host "There are no Soft Deleted Exchange Online mailboxes that have an E-mail address with the domain name suffix - $DomainSuffix"
}
else
{
$SoftDeleted | Select DisplayName,EmailAddresses,RecipientType,RecipientTypeDetails | Export-CSV $A20\"Exchange Online Soft Deleted mailboxes that their E-mail address include the domain name suffix $DomainSuffix.CSV" -NoTypeInformation -Encoding utf8
}
if ($UnifiedGroups -eq $null)
{
write-host "There are no Exchange Online unified groups that have an E-mail address with the domain name suffix - $DomainSuffix"
}
Else
{
$UnifiedGroups | Select DisplayName,EmailAddresses,RecipientType,RecipientTypeDetails | Export-CSV $A20\"Exchange Online unified groups that their E-mail address include the domain name suffix $DomainSuffix.CSV" -NoTypeInformation -Encoding utf8
}
if ($AllRecipients -eq $null)
{
write-host "There are no Exchange Online Recipients that have an E-mail address with the domain name suffix - $DomainSuffix"
}
Else
{
$AllRecipients | Select DisplayName,EmailAddresses,RecipientType,RecipientTypeDetails | Export-CSV $A20\"Exchange Online recipients that their E-mail address include the domain name suffix $DomainSuffix.CSV" -NoTypeInformation -Encoding utf8
}

Búsqueda de direcciones de correo electrónico "ocultas" mediante PowerShell

Buscando una dirección de correo electrónico específica | alcance de búsqueda=Exchange Online

La búsqueda se dirige a todos los destinatarios existentes de Exchange Online y busca una dirección de correo electrónico específica.

$Alias = Read-Host "Type the name of the E-mail address that you are looking for "

# Exchange Online infrastructure

$SoftDeleted = Get-Mailbox -SoftDeletedMailbox | Where {$_.EmailAddresses -like "*$Alias"}
$UnifiedGroups = Get-UnifiedGroup | Where {$_.EmailAddresses -like "*$Alias"}
$AllRecipients = Get-Recipient -ResultSize unlimited| Where {$_.EmailAddresses -like "*$Alias"}
if ($SoftDeleted -eq $null)
{
write-host "The E-mail address $Alias, is not a Soft Deleted Exchange Online mailbox"
}
Else
{
write-host --------------------------------------------------------
write-host "The E-mail address $Alias, belong to Unified Group"
write-host Recipient display name is- $AllRecipients.DisplayName
write-host Recipient E-mail addresses are - $AllRecipients.EmailAddresses
write-host Recipient Type is - $AllRecipients.RecipientType
write-host -------------------------------------------------------
}
if ($UnifiedGroups -eq $null)
{
write-host "The E-mail address $Alias, is not a Unified Group"
}
Else
{
belong to Soft Deleted Exchange Online mailbox
}
if ($AllRecipients -eq $null)
{
write-host "The E-mail address $Alias, is not Exchange Online recipient "
}
Else
{
write-host --------------------------------------------------------
write-host "The E-mail address $Alias, belong to Exchange Online Recipient"
write-host Recipient display name is- $AllRecipients.DisplayName
write-host Recipient E-mail addresses are - $AllRecipients.EmailAddresses
write-host Recipient Type is - $AllRecipients.RecipientType
write-host -------------------------------------------------------
}

Puede encontrar información más detallada sobre el tema de la búsqueda de una dirección de correo electrónico específica en el artículo - Búsqueda de direcciones de correo electrónico “ocultas” mediante PowerShell | Oficina 365 | Parte 11#13

Eliminar (eliminar) la dirección de correo electrónico mediante PowerShell

Para poder eliminar (eliminar) el correo electrónico existente del destinatario de Exchange, debemos utilizar el método PowerShell -@{remove.

Cuando usamos el parámetro de PowerShell @{remove, "le decimos" a PowerShell cuál es la dirección de correo electrónico exacta que queremos eliminar (eliminar).

Para eliminar un correo electrónico específico usando el parámetro de PowerShell @{remove, necesitamos usar la siguiente sintaxis de comando de PowerShell.

Sintaxis del comando PowerShell

Set-Mailbox <identity> -EmailAddresses @{remove="<E-mail address>"}

Ejemplo de comando de PowerShell

Set-Mailbox Christina -EmailAddresses @{remove="Christina-Alias02@o365info.com"}

Consejo rápido

Otra opción de sintaxis que podemos utilizar para eliminar direcciones de correo electrónico se implementa utilizando los caracteres "menos" (-) en lugar del término "eliminar".

Tendremos que utilizar para encerrar el carácter menos entre comillas. Por ejemplo:

Set-Mailbox Christina -EmailAddresses @{"-"="Christina-Alias01@o365info.com" }

Eliminar todas las direcciones de correo electrónico que tengan un nombre de dominio específico | modo masivo

En esta sección, me gustaría revisar un escenario en el que necesitamos eliminar (eliminar) una dirección de correo electrónico que tiene algunos caracteres específicos, como: Sufijo de nombre de dominio.

Esta operación en la que abordamos muchos "objetos" (destinatarios de Exchange Online) al mismo tiempo y realizamos una actualización específica, como por ejemplo, eliminar la dirección de correo electrónico, se describe como "masiva".

Antes de continuar con la sintaxis exacta de PowerShell, es muy importante para mí "advertirle" porque al usar la opción "Masiva" y especialmente cuando se relaciona con la tarea de eliminar direcciones de correo electrónico, debemos planificar cuidadosamente nuestros pasos. Pruebe el resultado del comando masivo de PowerShell, use la opción "Whatif", etc.

Puede leer más información sobre la opción "Whatif" en el artículo - Agregar direcciones de correo electrónico usando PowerShell - Modo masivo | Oficina 365 | Parte 4#13

Descripción del escenario

Nuestra empresa posee dos nombres de dominio públicos: o365info.com y o365pilot.com.
Tras un problema legal, necesitaremos eliminar el nombre de dominio - o365pilot.com y eliminó cada una de las direcciones de correo electrónico cuyo sufijo incluye el nombre de dominio - o365pilot.com

Las características de la infraestructura de direcciones de correo electrónico de nuestra organización son:

  • Cada uno de los destinatarios de la organización tiene una dirección de correo electrónico principal que utiliza una dirección de correo electrónico basada en el nombre de dominio o365info.com.
  • Cada uno de los destinatarios de la organización tiene una dirección de correo electrónico de alias adicional que tiene el nombre de dominio de la empresa "otra", como por ejemplo -o365pilot.com.

Necesitamos "escribir" un comando masivo de PowerShell que realice las siguientes tareas:

  1. Ejecute un proceso de bucle en el destinatario de Exchange Online existente.
  2. Busque y encuentre un correo electrónico con un sufijo de nombre de dominio específico.
  3. Eliminar esta dirección de correo electrónico.

Usemos el siguiente escenario:

El nombre del dominio que queremos eliminar se configura mediante la variable $RemoveDomain.

La información sobre todos los buzones de correo de Exchange Online existentes se guardará en la variable denominada $AllMailboxes.

El contenido de la variable $AllMailboxes se crea mediante una consulta de PowerShell que busca todos los destinatarios que tienen una dirección de correo electrónico que incluye el nombre de dominio o365pilot.com.

Luego ejecutamos una instrucción ForEach de PowerShell que se repetirá a través de la matriz de buzones de Exchange Online y ejecutará las siguientes tareas en cada uno de los buzones de Exchange Online que aparecen en la matriz:

  • Verifique si los buzones de correo de Exchange Online tienen una dirección de correo electrónico con el sufijo de nombre de dominio: o365pilot.com.
  • Si la respuesta es "Sí", elimine cada una de las direcciones de correo electrónico que incluyan el nombre de dominio: o365pilot.com.
  • “Saltar” al siguiente buzón de la lista.
$RemoveDomain = Read-Host "Type the domain name suffix that you look for"
$AllMailboxes = $AllMailboxes = Get-mailbox | Where {$_.emailaddresses -like "smtp:*@$RemoveDomain"}
ForEach ($Mailbox in $AllMailboxes)
{
write-host -ForegroundColor green "Removing the Alias That include the domain name $RemoveDomain :" $Mailbox.EmailAddresses "for" $Mailbox.DisplayName
Set-Mailbox $Mailbox.DisplayName -EmailAddresses @{Remove=$Mailbox.EmailAddresses} -WhatIf
}

Puede encontrar información más detallada sobre el tema de la eliminación de una dirección de correo electrónico en el artículo: Eliminar direcciones de correo electrónico mediante PowerShell | Oficina 365 | Parte 12#13

El próximo artículo de la serie de artículos actual.

Agregar direcciones de correo electrónico usando PowerShell | Oficina 365 | Parte 3#13

Artículos relacionados