Búsqueda de sitios web

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


En este artículo, revisamos el tema de: cómo crear una tabla Hash + expresiones personalizadas como una "herramienta" que podemos usar para optimizar y manipular la salida de PowerShell en escenarios de: obtener información sobre las direcciones de correo electrónico del destinatario.

Aprenderemos cómo crear una tabla Hash + Expresiones personalizadas que realiza las siguientes tareas:

  1. Obtenga información sobre tipos específicos de direcciones de correo electrónico, como: dirección de correo electrónico principal, dirección de correo electrónico proxy, dirección de correo electrónico x500 y dirección electrónica SIP.
  2. Elimine el prefijo SMTP predeterminado de los resultados mostrados de direcciones de correo electrónico SMTP.
  3. Separe los valores en un atributo multivalor mediante el uso de una “carta separadora”. "
  4. Filtre los resultados definiendo una consulta de búsqueda. "

Introducción básica al uso de la tabla Hash de PowerShell

¿Cuál es el propósito de utilizar tablas Hash y expresiones personalizadas?

La opción de PowerShell, que se describe como tabla hash, es una opción muy poderosa que nos permite crear una "NUEVA propiedad" que se personaliza según nuestras necesidades específicas.

La propiedad personalizada se puede implementar de varias maneras, como: campo calculado, consulta de búsqueda, etc.

Por ejemplo, el comando de PowerShell Get-Mailbox se puede utilizar para mostrar la información almacenada en la propiedad EmailAddresses.

La propiedad EmailAddresses incluye una lista de todas las direcciones disponibles que tiene el destinatario específico de Exchange.

De forma predeterminada, el comando de PowerShellGet-Mailbox no incluye un parámetro integrado que nos permite "filtrar los resultados de la búsqueda" y solicita obtener información solo de un tipo específico de dirección de correo electrónico. como direcciones de correo electrónico proxy.

La buena noticia es que al utilizar la opción de “Tabla hash” de PowerShell, podemos crear una “NUEVA propiedad de destinatario” que incluirá la información específica que necesitamos.

En nuestro caso, todas las direcciones de correo electrónico proxy de un destinatario. La creación de esta “NUEVA propiedad del destinatario” se implementa mediante la “tabla hash”.

La estructura de la “tabla hash ” (campos de información personalizados)

El concepto de “tabla hash” (propiedad personalizada) se implementa mediante una sintaxis que incluye dos partes:

Parte 1#2 - La parte de la etiqueta

Esta es la primera parte de la tabla Hash, en la que definimos el “Nombre ” de la propiedad personalizada.
El “ Nombre” es solo un nombre arbitrario a quien definimos.

Parte 2#2 - La parte de Expresión.

Es la segunda parte de la tabla Hash, en la que definimos la Expresión. El término Expresión se puede traducir a varios tipos de "oraciones de PowerShell", como: una consulta de búsqueda filtrada, un valor calculado, etc.

“tabla hash ” | Nombrar convección

Hay dos opciones de convicción de nombres que podemos usar para escribir la tabla hash.

Opción 1#2

La convención de nomenclatura que utilizamos para definir la parte de la etiqueta se implementa mediante el uso de la
letra L (Etiqueta).

La convención de nomenclatura que utilizamos para definir la parte de expresión se implementa utilizando la letra E (expresión).

Opción 2#2

La convención de nomenclatura que utilizamos para definir la parte de la etiqueta se implementa utilizando el término Nombre.

La convención de nomenclatura que utilizamos para definir la parte de expresión se implementa utilizando el término Expresión

“Extraer” dirección de correo electrónico proxy usando el ejemplo de “tabla hash”.

Para demostrar la forma en que usamos la tabla Hash (propiedad personalizada), usemos el siguiente ejemplo: queremos mostrar información sobre la dirección de correo electrónico proxy del destinatario.

En el siguiente diagrama podemos ver la estructura del comando de PowerShell que utilizaremos:

Parte A: Este es un comando Get-Mailbox estándar de PowerShell, en el que solicitamos a PowerShell obtener toda la información disponible sobre el buzón del destinatario de Exchange Online.

Parte B: En esta parte, utilizamos el parámetro de PowerShell "select" para mostrar solo dos propiedades de los destinatarios: la propiedad estándar DispalyName + NUEVA propiedad personalizada que definimos por usando una tabla Hash.

La sintaxis de la tabla Hash

La sintaxis de la tabla Hash de PowerShell que utilizamos en nuestro caso para extraer información sobre
direcciones de correo electrónico proxy es:

Sintaxis del comando PowerShell

@{Name="Email Addresses";Expression={$_.EmailAddresses | Where-Object {$_ -cmatch "smtp:*"}}}

En el siguiente diagrama podemos ver las diferentes partes de la tabla Hash:

Número 1: utilizamos el carácter @ para "declarar" que creamos una matriz especial (tabla hash) que incluye el nombre de la matriz + expresión de PowerShell, como una consulta de búsqueda filtrada, un valor calculado, etc.

Tabla hash - nombre

Número 2: este es el "nombre" que definimos para la matriz. En nuestro ejemplo, definimos el nombre de la matriz: “Dirección de correo electrónico proxy.”
Y nuevamente, este es solo un nombre arbitrario que elijo para mis necesidades específicas.

Tabla hash - Expresión

Número 3: en nuestro ejemplo, le pedimos a PowerShell que cree una "consulta de búsqueda filtrada", que se implementará de la siguiente manera:

Le indicamos a PowerShell que consulte una propiedad del destinatario denominada EmailAddresses. Un recordatorio rápido: esta es la propiedad del buzón, que almacena información sobre cada dirección de correo electrónico existente y otras direcciones.

Número 4: definimos un filtro que obtendrá información solo sobre las direcciones de correo electrónico proxy.
El filtro se basa en la siguiente estructura:

Usamos la instrucción Where-Object de PowerShell para definir una condición, que usa el operador
lógico cmatch.

Un recordatorio rápido

  • Exchange almacena información sobre la dirección de correo electrónico SMTP utilizando el prefijo smtp:.
  • Las direcciones de correo electrónico proxy están representadas por el prefijo smtp: escrito en minúsculas.
  • Dirección de correo electrónico principal representada por el prefijo SMTP: escrito en letras mayúsculas.

La condición que definimos en realidad se basa en dos condiciones separadas.

Le pedimos a PowerShell que "obtenga" información solo sobre la dirección de correo electrónico que comienza con el prefijo - smtp: y, además, el prefijo smtp debe estar escrito en versales.

Para cumplir con este requisito, utilizamos el operador lógico de PowerShell cmatch. Operador lógico de PowerShell: cmatch se creó para buscar una "coincidencia perfecta" + realizar una coincidencia que distinga entre mayúsculas y minúsculas.

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

En esta sección, revisamos cómo utilizar la tabla hash y las expresiones personalizadas, para dos propósitos principales:

  1. Mejorar nuestra capacidad para crear una nueva propiedad de destinatario personalizada que nos permitirá ver información sobre tipos específicos de direcciones de correo electrónico, como: dirección de correo electrónico proxy, dirección SIP, correo electrónico x500, etc.
  2. Optimización de la salida de PowerShell de la dirección de correo electrónico del destinatario mediante

    • Eliminar "datos innecesarios" de la salida
    • Agregar un "carácter de separación" que nos permitirá trabajar mejor con el atributo de buzón que se define como un atributo multivalor que contiene múltiples direcciones de correo electrónico.

En la sección anterior, revisamos la forma de crear una tabla hash de PowerShell que "filtra" el resultado de la búsqueda mostrando información sobre direcciones de correo electrónico que tienen un carácter específico, como direcciones de correo electrónico proxy.

Para ello utilizamos un comando de PowerShell como por ejemplo:

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

En el siguiente diagrama, podemos ver la "salida" que obtuvimos del comando de PowerShell.

El resultado parece "correcto" porque obtuvimos el significado de la información requerida: las direcciones de correo electrónico proxy
de Christina.

Número 1: Las llaves

Cuando el destinatario de Exchange Online tiene más de una dirección de correo electrónico proxy, PowerShell mostrará la información utilizando una llave. En muchos escenarios en los que necesitamos “trabajar” con la “información de la dirección de correo electrónico”, necesitaremos eliminar los caracteres entre llaves.

Número 2 - Los personajes de la separación

Cuando PowerShell "ve" más de una dirección de correo electrónico, PowerShell utilizará el carácter de coma (,) para separar los valores (direcciones de correo electrónico en nuestro caso).

La “cosa” es que cuando exportamos la información a un archivo como por ejemplo un archivo CSV, PowerShell no usará el carácter coma (,), sino que usará un “espacio” para separar los valores.

En caso de que necesitemos "manipular" los datos almacenados en un CSV, debemos utilizar algún "carácter de separación" que nos permitirá abordar cada valor por separado.

Problema 3: prefijo SMTP

PowerShell muestra cada dirección de correo electrónico mediante un prefijo que define el tipo de dirección de correo electrónico. En nuestro ejemplo, cada dirección de correo electrónico proxy se mostrará con el prefijo smtp: en minúsculas.

En caso de que necesitemos “hacer algo” con la información sobre la “dirección de correo electrónico”, debemos utilizar el “limpio” de la dirección de correo electrónico con el prefijosmtp:.

Optimice la salida de la tabla Hash usando los parámetros: Reemplazar + Unir.

Para poder solucionar los “problemas” mencionados usaremos dos parámetros de PowerShell

  1. Reemplazar
  2. Unirse

En la siguiente sección, agregaremos el parámetro adicional a la tabla Hash de PowerShell, que nos ayudará a mejorar el resultado de la tabla Hash.

En el siguiente diagrama, podemos ver los parámetros adicionales que se agregaron a la “sintaxis original” de la tabla Hash.

Eliminar el prefijo SMTP | Usando el parámetro Reemplazar

Comenzaremos con la misión de eliminar el "prefijo smtp" de la información que se muestra sobre las direcciones de correo electrónico proxy.

En nuestro ejemplo, utilizamos la siguiente sintaxis: reemplazar 'smtp:'.

El propósito del comando de PowerShell reemplazar es, como su nombre lo indica, reemplazar una cadena existente con una "Cadena NUEVA".

En nuestro ejemplo, queremos eliminar una cadena (“prefijo smtp”) y no “reemplazar” el “prefijo smtp”.

El truco que utilizamos es que "le decimos" a PowerShell que reemplace el "prefijo smtp" por "nada". En otras palabras, solicitamos desde el parámetro “reemplazar” de PowerShell, reemplazar el “prefijo smtp” y reemplazar esta cadena de texto por “espacio vacío”.

Para poder cumplir con el requisito de eliminar el "prefijo smtp" de la salida de PowerShell de la dirección de correo electrónico, utilizamos 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:' }) }}

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.

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:' }) }}

DisplayName                  EmailAddresses
-----------                  -------------- 
Christina Aguilera           {Christina-Alias02@o365info.com, Christina@o365pilot.com}

Usando el parámetro Unirse

Nuestro viaje no terminó porque tenemos una tarea adicional: eliminar la "corchete" que rodea la "matriz" de direcciones de correo electrónico.

Además, queremos agregar un "carácter separador" que separará cada "valor de dirección de correo electrónico" cuando exportemos los datos a un archivo como un archivo CSV.

Para agregar el carácter de separación a la salida, usaremos el parámetro de PowerShell - Unirse y proporcionaremos el “carácter de separación”. En nuestro ejemplo, usamos el carácter - (;)

Para poder cumplir con los requisitos de:

  • Eliminar el prefijo smtp de la salida de PowerShell de la dirección de correo electrónico.
  • Eliminando 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 utilizamos 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 usando 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:" usando letras mayúsculas.

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:*"}}}

Crear una tabla Hash de PowerShell más "avanzada"

En esta sección, me gustaría demostrar una sintaxis más "avanzada" que se utiliza para una tabla Hash de PowerShell.

En nuestro escenario, solicitamos a PowerShell que muestre información sobre cada tipo de dirección de correo electrónico, como: dirección de correo electrónico principal, dirección de correo electrónico de alias, dirección SIP, etc.

Además, agrego un nuevo ejemplo de “campos de resultado personalizados” (propiedad NUEVA) que realizan un cálculo, en el que contamos la cantidad de direcciones de correo electrónico Proxy que tiene cada destinatario de Exchange.

La sintaxis de PowerShell del comando es la siguiente:

@{Name="Number of Proxy Email";Expression={($_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}).count}}

La sintaxis “completa” del comando PowerShell que utiliza es:

Get-Mailbox | Select-Object DisplayName,@{Name="Primary Email Addresses";Expression={$_.EmailAddresses |Where-Object {$_ -cmatch "SMTP:*"}}} ,@{Name="Proxy Email Addresseses";Expression={$_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}}} , @{Name=2Number of Proxy Email";Expression={($_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}).count}} ,@{Name="SIP Email Addresseses";Expression={$_.EmailAddresses |Where-Object {$_ -LIKE "sip:*"}}} ,@{Name="X500 EmailAddresseses";Expression={$_.EmailAddresses |Where-Object {$_ -LIKE "x500:*"}}}

Ejemplo de salida de la consola PowerShell:

PS C:\script> Get-Mailbox | Select-Object DisplayName,@{Name="Primary Email Addresses";Expression={$_.EmailAddresses |Where-Object {$_ -cmatch "SMTP:*"}}} ,@{Name="Proxy Email Addresseses";Expression={$_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}}} , @{Name=2Number of Proxy Email";Expression={($_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}).count}} ,@{Name="SIP Email Addresseses";Expression={$_.EmailAddresses |Where-Object {$_ -LIKE "sip:*"}}} ,@{Name="X500 EmailAddresseses";Expression={$_.EmailAddresses |Where-Object {$_ -LIKE "x500:*"}}}

DisplayName : admin
Primary Email Addresses : SMTP:admin@o365info.com
Proxy Email Addresseses : smtp:admin1948@o365info2.onmicrosoft.com
Number of Proxy Email : 1
SIP Email Addresseses : SIP:admin@o365info.com
X500 EmailAddresseses :

DisplayName : Alice Good
Primary Email Addresses : SMTP:Ayelet@o365info.com
Proxy Email Addresseses : smtp:Ayelet@o365info2.onmicrosoft.com
Number of Proxy Email : 1
SIP Email Addresseses : SIP:Ayelet@o365info.com
X500 EmailAddresseses :

DisplayName : Angelina Jolie
Primary Email Addresses : SMTP:Angelina-NEW01@o365info.com
Proxy Email Addresseses : {smtp:Angelina@o365pilot.com, smtp:kk@o365info.com, smtp:Angelina@o365info.com, smtp:Angelina-Alias03@o365info.com...}
Number of Proxy Email : 5
SIP Email Addresseses :
X500 EmailAddresseses :

Separe los valores en un atributo multivalor "EmailAddresses"

En esta sección, me gustaría revisar el "método PowerShell" adicional, en el que "separamos" los valores que aparecen en un atributo multivalor.

Como se mencionó, los atributos del buzón de Exchange Online "Dirección de correo electrónico" se consideran un atributo multivalor, porque almacena un par de valores, es decir, un par de (múltiples) direcciones de correo electrónico.

Nuestra misión es crear una salida personalizada que muestre cada una de las direcciones de correo electrónico del destinatario de Exchange en una "columna dedicada".

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

Get-Mailbox Angelina | Select-Object DisplayName -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 DisplayName -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

Podemos relacionarnos con la propiedad “EmailAddresses” como una “Matriz” y con cada dirección de correo electrónico
como “Miembro de la matriz”.

Cada valor (miembro) que se incluye en la matriz (miembro de la matriz) está representado por un número de índice que comienza con "0" y así sucesivamente.

Para poder dirigirnos a un miembro específico de la matriz (dirección de correo electrónico específica almacenada en el atributo multivalor “EmailAddresses”), podemos definir el número de índice específico que representa al miembro.

El número de índice específico se escribe utilizando la siguiente convención de nomenclatura:

  • [0] para abordar el "primer miembro" en la matriz.
  • [1] para dirigirse al "segundo miembro" del Array.

Etcétera.

En nuestro escenario, queremos crear una pantalla que "busque" los miembros de la matriz y muestre cada miembro por separado.

En nuestro caso, busque cada "dirección de correo electrónico" almacenada en el atributo multivalor "EmailAddresses" y muestre la información sobre la dirección de correo electrónico en una columna dedicada.

Para implementar este requisito, definimos un campo de información personalizado (tabla hash), que incluye una "columna dedicada" para cada dirección de correo electrónico.

La sintaxis del campo de información personalizado (tabla hash) se escribe utilizando la siguiente sintaxis de PowerShell:

@{Name= "E-mail address 01"; E={$_.EmailAddresses[0]}}
  • En la primera parte (parte de la etiqueta) definimos el nombre del encabezado de la columna. En nuestro ejemplo, definimos el nombre: dirección de correo electrónico 01.
  • En la segunda parte (parte de Expresión), le pedimos a PowerShell que nos busque el primer valor en el atributo multivalor "EmailAddresses". El primer valor está representado por el número de índice [0].

Agregamos esta sintaxis un par de veces, por cada valor adicional que se incluye en el Array.

Para "buscar" la segunda dirección de correo electrónico en la matriz utilizamos la sintaxis de fowling:

@{Name= "E-mail address 02"; E={$_.EmailAddresses[1]}}

Tenga en cuenta que no sabemos cuál es el número de "valores" en el atributo "EmailAddresses".

Todo lo que podemos hacer es simplemente "especular" y definir un campo de información personalizado dedicado (tabla hash) para cada valor (dirección de correo electrónico).

En el siguiente ejemplo, he creado cinco campos de información personalizados (tablas hash) asumiendo que el número máximo del destinatario promedio no es más de “cinco direcciones de correo electrónico”. "

Get-Mailbox | Select-Object DisplayName, @{Name= "E-mail address 01"; E={$_.EmailAddresses[0]}} , @{Name= "E-mail address 02"; E={$_.EmailAddresses[1]}} , @{Name= "E-mail address 03"; E={$_.EmailAddresses[2]}} , @{Name= "E-mail address 04"; E={$_.EmailAddresses[3]}} , @{Name= "E-mail address 05"; E={$_.EmailAddresses[4]}}

Ejemplo de salida de la consola PowerShell

PS C:\script> Get-Mailbox | Select-Object DisplayName, @{Name= "E-mail address 01"; E={$_.EmailAddresses[0]}} , @{Name= "E-mail address 02"; E={$_.EmailAddresses[1]}} , @{Name= "E-mail address 03"; E={$_.EmailAddresses[2]}} , @{Name= "E-mail address 04"; E={$_.EmailAddresses[3]}} , @{Name= "E-mail address 05"; E={$_.EmailAddresses[4]}}

DisplayName : admin
E-mail address 01 : SIP:admin@o365info.com
E-mail address 02 : SMTP:admin@o365info.com
E-mail address 03 : smtp:admin1948@o365info2.onmicrosoft.com
E-mail address 04 :
E-mail address 05 :

DisplayName : Alice Good
E-mail address 01 : SIP:Ayelet@o365info.com
E-mail address 02 : SMTP:Ayelet@o365info.com
E-mail address 03 : smtp:Ayelet@o365info2.onmicrosoft.com
E-mail address 04 :
E-mail address 05 :

DisplayName : Angelina Jolie
E-mail address 01 : smtp:Angelina@o365pilot.com
E-mail address 02 : smtp:kk@o365info.com
E-mail address 03 : SPO:SPO_5b27dc17-68b0-442e-804b-aee5b4df9847@SPO_e95bcc9e-2927-483d-ad36-7311a7152bdd
E-mail address 04 : smtp:Angelina@o365info.com
E-mail address 05 : SMTP:Angelina-NEW01@o365info.com

Obtenga información sobre destinatarios cuya dirección de correo electrónico principal incluye un sufijo de nombre de dominio específico

En la siguiente sección, me gustaría revisar más ejemplos de escenarios en los que se utiliza la tabla hash de PowerShell y "expresiones personalizadas" con una combinación de la declaración Where de PowerShell.
En este escenario, necesitamos implementar una consulta de búsqueda de PowerShell. , que muestra información sobre la dirección de correo electrónico del destinatario de Exchange que responde a la siguiente condición:
Queremos obtener información solo sobre los destinatarios cuya dirección de correo electrónico principal incluye un sufijo de nombre de dominio específico.
En nuestro ejemplo, el sufijo del nombre de dominio que buscamos es - o365pilot.com.
La información sobre este destinatario de Exchange incluirá el nombre para mostrar del destinatario, la dirección de correo electrónico principal y sus direcciones de correo electrónico proxy.
La sintaxis de PowerShell que usamos es

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

Ejemplo de salida de la consola PowerShell

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

Creating a new session for implicit remoting of "Get-Mailbox" command...

DisplayName              PrimarySmtpAddress                         Proxy Email Addresses 
-----------              ------------------                         --------------------- 
Beatles the              Beatles@o365pilot.com                      smtp:Beatles@o365info2.onmicrosoft.com 
Britney spears           Britney@o365pilot.com                      {smtp:Britney@o365info.com, smtp:Britney@o365info2.onmicrosoft.com}
Craig David              Craig@o365pilot.com                        smtp:Craig@o365info2.onmicrosoft.com 
Depeche Mode             Depeche@o365pilot.com 
Elvis Preslay            Elvis@o365pilot.com 
E-mail attachments       Mailbox E-mail-attachments@o365pilot.com   smtp:E-mail-attachments@o365info.com 
Justin timberlake        Justin@o365pilot.com                       smtp:Justin@o365info2.onmicrosoft.com 
Spoof E-mails MailBox    Spoof-E-mail-Mailbox@o365pilot.com         smtp:Spoof-E-mail-Mailbox@o365info2.onmicrosoft.com

Una variación adicional de este caso es un escenario en el que queremos obtener información sobre los destinatarios de Exchange Online cuya dirección de correo electrónico principal incluye un sufijo de nombre de dominio específico U “otro” sufijo de nombre de dominio.

En nuestro ejemplo, el sufijo del nombre de dominio que buscamos para el destinatario cuya dirección de correo electrónico principal incluye el sufijo del nombre de dominio: o365pilot.com u o365info.com.

Ejemplo de comando de PowerShell_

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

Ver información sobre la dirección de correo electrónico proxy (Alias) que incluye un sufijo de nombre de dominio específico

En este escenario, deseamos obtener información sobre la dirección de correo electrónico que responde a las siguientes condiciones:

  • Condición 1#2 - Sólo dirección de correo electrónico de alias (proxy)
  • Condición 2#2: Solo dirección de correo electrónico de alias (proxy) que utiliza un sufijo de nombre de dominio específico

La sintaxis de PowerShell que utilizamos es

$Array1 = DisplayName,@{Name="Primary Email Addresses";Expression={$_.EmailAddresses | Where-Object {$_ -cmatch "SMTP:*"}}}, @{Name="Proxy E-mail addresses";Expression={$_.EmailAddresses | Where-Object {$_ -cmatch "smtp:*"}}}, @{Name="Proxy Email addresses number";Expression={($_.EmailAddresses |Where-Object {$_ -cmatch "smtp:*"}).count}}

Get-Mailbox -ResultSize Unlimited | Where-Object {$_.emailaddresses -cmatch "smtp:*" -and $_.emailaddresses -like "smtp:*@o365pilot"} |select $Array1

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

Introducción a los distintos tipos de destinatarios de Exchange Online | Cmdlets de PowerShell | Oficina 365 | Parte 8#13

Artículos relacionados