Búsqueda de sitios web

Agregar direcciones de correo electrónico mediante PowerShell: modo masivo | Oficina 365 | Parte 4#13


El artículo actual es el contenido del artículo anterior, en el que revisamos la tarea de agregar una dirección de correo electrónico a los destinatarios de Exchange Online mediante PowerShell. El objetivo de este artículo es cómo realizar la tarea de agregar una dirección de correo electrónico adicional en modo masivo.

Agregar direcciones de correo electrónico usando el modo masivo

La ventaja notable de la "operación masiva" es que con un "solo clic" podemos actualizar muchos "objetos", como un destinatario de Exchange Online, al mismo tiempo sin la necesidad de dirigirnos a cada destinatario por separado.

Al mismo tiempo, esta “ventaja notable” puede convertirse muy fácilmente en una “desventaja notable”.

Si la "operación masiva" no se prueba y verifica antes de ejecutarla en nuestro entorno de producción, en caso de que el comando masivo de PowerShell se implemente incorrectamente, ¡puede causar un daño considerable al entorno de nuestra organización!

El problema es que cuando usamos “herramientas pesadas”, como operaciones masivas, se recomienda que comprendamos exactamente qué “hace” el comando Bulk de PowerShell.

Mi recomendación es que antes de ejecutar operaciones masivas, intente probar la "operación masiva" en un entorno de "laboratorio", o utilice para implementar la operación masiva en "usuarios de prueba".

Después de estar seguros de que el comando masivo de PowerShell realiza la operación correctamente y ejecutamos el comando masivo requerido, es importante que verifiquemos los "resultados" verificando si los "objetos" afectados (como Buzones de correo de Exchange Online) y estaban configurados correctamente.

La herramienta útil - Whatif

Una opción de PowerShell muy útil y poderosa que podemos usar cuando trabajamos con el “comando masivo” es la opción (el parámetro) - Whatif.

Usando la opción Whatif, nos permite simular el escenario de “qué hubiera pasado” si ejecutamos el “comando masivo de PowerShell”, sin implementar ningún cambio en nuestro entorno.

Mi recomendación es utilizar tanto como sea posible la opción Whatif, antes de “presionar” la tecla que ejecutaría el comando Bulk PowerShell, que puede afectar a decenas de cientos o incluso miles de buzones de correo al mismo tiempo. al mismo tiempo.

En los siguientes ejemplos, ejecutamos un "comando masivo" que "impacta" todos los buzones de correo de Exchange Online existentes, agregando una dirección de correo electrónico adicional a cada destinatario de Exchange.

Para poder "predecir" lo que "hará" el comando masivo de PowerShell, agregamos el parámetro Whatif de PowerShell.

En nuestro ejemplo, podemos ver que la "operación masiva" se ejecutará correctamente en un buzón de Exchange específico como "Angelina", "Aretha" y "Beyonce". .”

Al mismo tiempo, podemos ver que la operación masiva no pudo actualizar algunos destinatarios de Exchange.

Al observar los resultados de Whatif , podemos ver que la operación masiva no pudo actualizar buzones de correo de Exchange específicos, como el buzón de Adele.

PS C:\> $AllMailboxes = Get-Mailbox -ResultSize Unlimited
Foreach ($Mailbox in $AllMailboxes)
{
$NewAddress = $Mailbox. UserPrincipalName + "@o365pilot.com" # Create a new string that add a NEW E-mail address with the NEW domain suffix
$Mailbox.UserPrincipalName += $NewAddress # “Collect” all existing E-mail addresses + add the NEW E-mail address as an additional E-mail address (existing E-mail address will not be removed).
Set-Mailbox -Identity $Mailbox.Alias -EmailAddresses $Mailbox.EmailAddresses -whatif
}
The operation on mailbox "Adele" failed because it's out of the current user's write scope. The action 'Set-Mailbox', 'EmailAddresses', can't be performed on the object 'Adele' because the object is being
synchronized from your on-premises organization. This action should be performed on the object in your on-premises organization.

+ CategoryInfo : InvalidOperation: (Adele:ADObjectId) [Set-Mailbox], InvalidOperationException

+ FullyQualifiedErrorId : [Server=DB6PR0501MB2069,RequestId=25c4f399-2412-41c2-9a77-41af5911613e,TimeStamp=1/9/2017 11:43:30 AM] [FailureCategory=Cmdlet-InvalidOperationException] 4728449,Microsoft.Ex
change.Management.RecipientTasks.SetMailbox

+ PSComputerName : outlook.office365.com
The operation couldn't be performed because 'Alicia Keys' matches multiple entries.

+ CategoryInfo : NotSpecified: (:) [Set-Mailbox], ManagementObjectAmbiguousException

+ FullyQualifiedErrorId : [Server=DB6PR0501MB2069,RequestId=25c4f399-2412-41c2-9a77-41af5911613e,TimeStamp=1/9/2017 11:43:31 AM] [FailureCategory=Cmdlet-ManagementObjectAmbiguousException] 6E7A870C,Mi
crosoft.Exchange.Management.RecipientTasks.SetMailbox

+ PSComputerName : outlook.office365.com

What if: Setting mailbox "Angelina".
What if: Setting mailbox "Aretha".
What if: Setting mailbox "Beatles".
What if: Setting mailbox "Beyonce".

En nuestro escenario específico, el comando de PowerShell no puede actualizar el buzón de correo de Adele porque la cuenta de usuario de Adele considera una "cuenta de usuario sincronizada" que se sincronizó con la infraestructura de Exchange Online desde On-Premise Active. Directorio.

En este tipo de escenario, necesitaremos ejecutar la "operación masiva" requerida en el entorno local (Active Directory local o Exchange local) en lugar de la infraestructura de Office 365.

Puede leer más información sobre el entorno de sincronización de directorios en el artículo: Agregar direcciones de correo electrónico mediante PowerShell | Oficina 365 | Parte 3#13.

Trabajar con buzones de prueba (buzones de laboratorio)

Cuando implementamos un "proceso masivo", el proceso se ejecuta en un "grupo de objetos", como los buzones de correo de Exchange Online.

En la siguiente sección, me gustaría revisar la importante necesidad de crear “buzones piloto de Exchange Online”, que podemos usar como buzones de prueba” para probar una operación masiva específica.

Para poder probar el impacto del comando masivo, se recomienda crear un "buzón de correo de Exchange Online de prueba", que servirá como la "matriz" que representa los objetos de producción reales.

Técnicamente hablando, existen muchos métodos con los que podemos crear una matriz.

En nuestro ejemplo, "distinguimos" los buzones de Exchange Online específicos que servirán como "buzones de prueba" marcándolos con el carácter especial.

Para distinguir estos buzones de Exchange Online del resto de los buzones, agregamos a cada uno de los "buzones de prueba" un atributo personalizado utilizando el campo denominado CustomAttribute1.

La cadena de texto que utilizamos en nuestro ejemplo es TestMailbox.

Paso 1: crear la matriz

Para crear una matriz que incluya todos los "buzones de correo de Exchange Online de prueba" que tienen el valor específico en su CustomAttribute1, utilizamos la instrucción Dónde, en la que solicitamos ver solo buzones de correo de Exchange Online, que su campo CustomAttribute1 tiene el valor de TestMailbox.

Un ejemplo del comando de PowerShell:

Get-Mailbox | Where {$_.CustomAttribute1 -eq 'TestMailbox'}

Paso 2: defina una variable que "almacene" los miembros de la matriz.

Para poder manipular los "miembros" de la matriz, definimos una variable que sirve como un "contenedor lógico" que almacena los miembros de la matriz.

En nuestro ejemplo, definimos una variable denominada - $AllMailboxes, que almacena los resultados de una consulta de búsqueda de filtro de PowerShell.

Un ejemplo del comando de PowerShell:

$AllMailboxes = Get-Mailbox | Where {$_.CustomAttribute1 -eq 'TestMailbox'}

Más adelante, usaremos un comando masivo de PowerShell, que "accederá" a la información almacenada en la variable que se creó y "hará algo" para cada miembro de la matriz.

Agregar direcciones de correo electrónico de forma masiva utilizando la declaración ForEach

En las siguientes secciones, revisamos el proceso de agregar una NUEVA dirección de correo electrónico en modo masivo a los destinatarios existentes de Exchange Online, utilizando un script de PowerShell.

El "proceso masivo" se implementa mediante la participación de un par de "componentes de PowerShell", tales como: usar la declaración ForEach y Where de PowerShell, crear algunas variables que almacenarán el miembro de la matriz y cada uno de los miembros, cmdlets de PowerShell que importan información de un archivo CSV, crean variables, etc.

En la siguiente sección, proporciono una explicación básica sobre la sintaxis de comandos de PowerShell que utilizamos.

En caso de que desee obtener información más detallada sobre el tema del proceso ForEachstatement Loop y el uso de “variables” en el entorno PowerShell, puede leer los siguientes artículos:

  • Crear un bucle a través de una matriz usando el comando de PowerShell “ForEach” | Introducción básica | Parte 1#2
  • Crear un bucle a través de una matriz usando la declaración y las variables “ForEach” | Entorno PowerShell| Parte 2#2

En caso de que desee leer más información sobre cómo utilizar el filtro Dónde de PowerShell, para crear una consulta de búsqueda filtrada, puede leer los siguientes artículos:

  • Utilice PowerShell para ver objetos de Exchange Online | Parte 3#3
  • Utilice PowerShell para ver objetos de Office 365 | Parte 2#3

Agregue una dirección de correo electrónico adicional (Alias) utilizando un NUEVO sufijo de nombre de dominio a todos los destinatarios del buzón | Modo masivo

En la siguiente sección, revisamos el proceso de uso del script masivo de PowerShell, que realizará la tarea de agregar una NUEVA dirección de correo electrónico de alias que utiliza el NUEVO sufijo de nombre de dominio, para cada uno de nuestros destinatarios de Exchange Online.

  • Nuestra empresa utiliza el nombre de dominio público: o365info.com
  • Nuestra empresa compró un nombre de dominio adicional: o365pilot.com

En la actualidad, todos los usuarios de la empresa tienen una dirección de correo electrónico que utiliza el sufijo de nombre de dominio
- “o365info.com .

Se nos pidió que implementáramos las siguientes tareas:

  • Agregue a todos los usuarios de la empresa (destinatarios de Exchange Online) una dirección de correo electrónico adicional (dirección de correo electrónico proxy) que incluya el sufijo “NUEVO nombre de dominio” - “o365pilot.com“.
  • La "parte Alias" (la parte izquierda) de las NUEVAS direcciones de correo electrónico debe ser idéntica al Alias existente que utiliza cada uno de los destinatarios de Exchange Online para la dirección de correo electrónico principal.
  • La NUEVA dirección de correo electrónico no reemplazará la dirección de correo electrónico principal existente, sino que se agregará como una dirección de correo electrónico adicional (Alias, dirección de correo electrónico proxy).
  • Todas las direcciones de correo electrónico de alias existentes y otras direcciones, como la dirección SIP, de los destinatarios de Exchange Online, se conservarán.

En el siguiente diagrama podemos ver la estructura de la dirección de correo electrónico de la organización y los resultados requeridos:

Por ejemplo,

  • La dirección de correo electrónico principal actual del usuario llamado John es: John@o365info.com
  • Queremos agregar una dirección de correo electrónico adicional (dirección de correo electrónico proxy) al destinatario
    llamado John.
  • La dirección de correo electrónico adicional será la siguiente dirección de correo electrónico: “John@o365pilot.com ”.

En el siguiente diagrama, podemos ver un ejemplo del resultado solicitado, para un destinatario específico de Exchange Online llamado John.

La estructura de comandos de PowerShell

Para poder ejecutar la actualización requerida para todos los destinatarios de Exchange Online, usaremos una instrucción ForEach de PowerShell (con una combinación de variables), que recorrerá todos los buzones de correo de Exchange Online existentes y ejecutará la actualización requerida. tarea requerida de: agregar un nuevo alias de correo electrónico para cada uno de los buzones de correo de Exchange Online.

Paso 1: Usamos la variable denominada $AllMailboxes para almacenar información sobre todos los buzones de correo de Exchange Online existentes.

Paso 2: Definimos una variable llamada $NewAddress, que se crea para almacenar la NUEVA dirección de correo electrónico. La NUEVA dirección de correo electrónico se crea utilizando una combinación del alias del destinatario de Exchange existente ($Mailbox.Alias) + la cadena con el “NUEVO sufijo de nombre de dominio @o365pilot.com”.

Paso 3: Creamos una “matriz” que almacenará todas las direcciones de correo electrónico existentes del destinatario + la nueva dirección de correo electrónico de la siguiente manera: $Mailbox.EmailAddresses += $NewAddress
Usamos este paso para evitar un escenario en el que la dirección de correo electrónico existente se elimine y se reemplace por la NUEVA dirección de correo electrónico.

Paso 4: Solicitamos desde PowerShell que “establezcamos” una NUEVA dirección de correo electrónico (Alias dirección de correo electrónico) para cada destinatario, agregando la Nueva dirección de correo electrónico (la NUEVA dirección de correo electrónico dirección con el sufijo de nombre de dominio o365pilot.com) al conjunto existente de direcciones de correo electrónico.

$Domainsuffix = Read-Host "Type the name of the Domain name suffix"
$AllMailboxes = Get-Mailbox -ResultSize Unlimited
Foreach ($Mailbox in $AllMailboxes)
{
# Creating NEW E-mail address that contracted in the following way: Take the existing recipient Alias name + use the NEW Domain name as a domain suffix + “Bind” the Alias name + the NEW Domain name suffix.
$NewAddress = $Mailbox.Alias + "@$Domainsuffix"
# “Store” all existing E-mail addresses + add the NEW E-mail address as an additional E-mail address.
$Mailbox.EmailAddresses += $NewAddress
# Assign the NEW E-mail address to the existing Exchange Online recipient
Set-Mailbox -Identity $Mailbox.Alias -EmailAddresses $Mailbox.EmailAddresses #-whatif
}

Jugando con la variable que define los destinatarios “Array”

La variable que define el “recipients Array” de Exchange Online $AllMailboxes es muy “flexible”

Podemos definir muchos tipos diferentes de destinatarios de Exchange Online como miembro o "matriz".

Opción 1

Defina un escenario en el que queremos que el comando masivo agregue una dirección de correo electrónico adicional a todos los “buzones de correo de Exchange Online”. "

En este caso, el comando Masivo agrega la dirección de correo electrónico adicional a los distintos tipos de destinatarios del buzón de correo de Exchange Online, como: buzón de sala, buzón compartido y buzón de usuario.

$AllMailboxes = Get-Mailbox -ResultSize Unlimited

Opción 2

Defina un escenario en el que queremos que el comando masivo agregue direcciones de correo electrónico adicionales solo a los “buzones de correo de usuarios de Exchange Online”. "

$AllMailboxes = Get-MailBox -Filter '(RecipientTypeDetails -eq "UserMailbox")'

Opción 3

Defina un escenario en el que queremos que el comando masivo agregue una dirección de correo electrónico adicional solo a todos los destinatarios de Exchange Online existentes.

En este escenario, el comando masivo agrega una dirección de correo electrónico adicional a varios tipos de destinatarios de Exchange Online, como grupos, contactos de correo, destinatario del buzón, etc.

$AllMailboxes = Get-recipient -ResultSize Unlimited

Opción 4

Defina un escenario en el que queremos que el comando masivo agregue una dirección de correo electrónico adicional a los destinatarios de Exchange Online, además de los destinatarios que están sincronizados desde el entorno local de Exchange.

$AllMailboxes = Get-recipient -ResultSize Unlimited | Where {$_.Capabilities -nq "MasteredOnPremise"}

Opción 5

Defina un escenario en el que queremos que el comando masivo agregue una dirección de correo electrónico adicional a los buzones de correo de Exchange Online de los destinatarios de Exchange Online definidos como “buzón de prueba”. "

En este caso, el comando masivo actualizará solo los buzones de Exchange Online cuyo valor de atributo personalizado1 sea “TestMailbox. "

$AllMailboxes = Get-Mailbox | Where {$_.CustomAttribute1 -eq 'TestMailbox'}

Reemplace el sufijo del nombre de dominio de la dirección de correo electrónico principal con un NUEVO sufijo de nombre de dominio | modo masivo

En la siguiente sección, revisamos el proceso de uso de un script masivo de PowerShell, que realizará la tarea de reemplazar la dirección de correo electrónico principal existente con una NUEVA dirección de correo electrónico principal que utiliza un sufijo de nombre de dominio diferente.

  • Nuestra empresa utiliza el nombre de dominio público: o365info.com
  • Nuestra empresa compró un nombre de dominio adicional: o365pilot.com

En la actualidad, todos los usuarios de la empresa tienen una dirección de correo electrónico que utiliza el
sufijo de nombre de dominio: o365info.com.

Se nos pidió que implementáramos las siguientes tareas:

  • Reemplace la dirección de correo electrónico principal actual que usa el nombre de dominio com con una NUEVA dirección de correo electrónico principal, que usa el sufijo del nombre de dominio: o365pilot.com
  • El nombre de alias del destinatario de Exchange (la parte derecha de la dirección de correo electrónico) seguirá siendo el mismo. En otras palabras, nos gustaría mantener el nombre de alias existente de la dirección de correo electrónico principal actual y reemplazar la "parte izquierda" (sufijo del nombre de dominio) con un NUEVO sufijo de nombre de dominio.
  • La dirección de correo electrónico principal anterior no se eliminará sino, en su lugar, se guardará como una dirección de correo electrónico de alias
    (dirección de correo electrónico adicional).
  • Se conservarán todas las direcciones de correo electrónico de alias existentes y otras direcciones, como la dirección SIP, de los destinatarios.

En el siguiente diagrama podemos ver la estructura de la dirección de correo electrónico de la organización y los resultados requeridos:

En el siguiente diagrama, podemos ver un ejemplo del resultado solicitado para un destinatario específico de Exchange Online llamado John.

La estructura de comandos de PowerShell

El comando de PowerShell que usamos en este escenario es como el comando de PowerShell que usamos en el escenario anterior.

La principal diferencia es que, en este caso, agregamos un comando adicional de PowerShell, que configura
la dirección de correo electrónico principal de cada destinatario para usar la NUEVA dirección de correo electrónico.

En nuestro ejemplo, deseamos reemplazar la dirección de correo electrónico principal existente
usando el sufijo de dominio “o365pilot.com ”.

Establecer dirección de correo electrónico principal

Para configurar la dirección de correo electrónico principal, utilizamos el parámetro de PowerShell WindowsEmailAddres

La sintaxis de PowerShell que utilizamos en nuestro escenario es:

Set-Mailbox -Identity $Mailbox.Alias -WindowsEmailAddress $NewAddress

Crear la estructura “NUEVA dirección de correo electrónico”

Para crear la convención de nomenclatura requerida para la nueva dirección de correo electrónico, utilizamos el mismo "truco
que se utilizó en el escenario anterior.

Creamos una variable que crea una NUEVA dirección de correo electrónico.
La “parte izquierda” de la dirección de correo electrónico (el “Alias”) se toma del Alias existente que tiene cada destinatario de Exchange.

PowerShell “vinculará” el Alias existente al NUEVO sufijo del nombre de dominio (la parte derecha de la dirección de correo electrónico).

La sintaxis que utilizamos es - $NewAddress=$Mailbox.Alias + “@o365pilot.com”

La sintaxis del script de PowerShell que utilizamos es:

$AllMailboxes = Get-Mailbox -ResultSize Unlimited
Foreach ($Mailbox in $AllMailboxes)
{
# Creating NEW E-mail address that contracted in the following way: Take the existing recipient Alias name + use the NEW Domain name as a domain suffix + “Bind” the Alias name + the NEW Domain name suffix.
$NewAddress = $Mailbox.Alias + "@o365pilot.com"
Set-Mailbox -Identity $Mailbox.Alias -WindowsEmailAddress $NewAddress #-whatif
}

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

Agregar direcciones de correo electrónico mediante PowerShell: importar desde un archivo CSV | Modo masivo | Oficina 365 | Parte 5#13

Artículos relacionados