Importación masiva de contactos para Exchange Online (Office 365) mediante PowerShell | Parte 1#2
En un entorno basado en Exchange, el término "contactos externos" o simplemente "contactos" describe un objeto de destinatario de Exchange, cuya dirección de correo electrónico es una dirección de correo electrónico externa (dirección de correo electrónico que no pertenece a la organización).
Por ejemplo: proveedores, socios comerciales, clientes, etc.
De forma predeterminada, los "contactos externos" aparecen como parte de la GAL (lista global de direcciones) junto con los destinatarios de la organización "estándar", como los destinatarios de la organización Exchange que tienen un buzón de correo, grupos de distribución, etc.
Importación masiva de contactos para Exchange Online (Office 365) mediante script de PowerShell | Serie de artículos
- Importación masiva de contactos para Exchange Online (Office 365) mediante PowerShell | Parte 1#2 (este artículo)
- Importación masiva de contactos para Exchange Online (Office 365) mediante script de PowerShell | Parte 2#2
Transferir contactos de correo a Exchange Online
En un escenario en el que migramos desde una infraestructura de correo que no es Exchange, uno de los requisitos más comunes es transferir todos los "destinatarios de contacto de correo" a la nueva infraestructura de correo, es decir, Exchange Online.
La opción de "transferir" los contactos de correo a Exchange Online se puede implementar mediante una de las siguientes opciones:
1. Creando cada uno de los contactos de correo en Exchange Online manualmente.
En el caso de que estemos hablando de una cantidad importante de contactos de correo, la opción “manual”, en la que creamos este contacto manualmente en Exchange Online, no es la opción deseada. Esta tarea considerada como un trabajo agotador puede estar expuesta a errores humanos (errores de ortografía, etc.), etc.
2. Usando una herramienta de importación de terceros.
En caso de que utilice una herramienta de terceros para implementar su migración de correo desde la infraestructura de correo existente a Exchange Online, la mayor parte de esta "aplicación de migración de correo" incluye modelos que le ayudarán a importar la lista de contactos existente a Exchange Online GAL.
3. Exchange Online: usando comandos de PowerShell.
El entorno en línea de Exchange nos ofrece una solución integrada para importar objetos de “contactos”.
La primera fase se implementó exportando la información de la infraestructura de correo actual a un archivo CSV.
La segunda fase se realiza mediante un comando de PowerShell que importa información sobre el contacto desde el archivo CSV a nuestro servidor Exchange Online.
El artículo actual y el siguiente están dedicados al "método Exchange Online" en el que implementamos la tarea de importación masiva de contactos mediante PowerShell.
Los desafíos que enfrentamos
1. Actualmente, Exchange Online no incluye una interfaz gráfica que nos permita importar la información de contacto requerida desde el archivo CSV.
La única opción disponible es utilizar un "conjunto de comandos de PowerShell", que implementará la "tarea de importación de contactos". Los comandos de PowerShell que utilizamos para este trabajo pueden considerarse complicados y no tan simples para los nuevos usuarios de PowerShell”.
2. La información de contacto en el archivo CSV debe almacenarse en un formato de estructura de datos particular. Por ejemplo, Exchange Online dicta un requisito obligatorio en el que cada contacto debe tener una dirección de correo electrónico y un "nombre" (otros términos estándar son: Nombre para mostrar, Nombre completo ).
La solución a los desafíos que enfrentamos
1. En el artículo actual, revisaremos:
Cómo utilizar la sintaxis del comando PowerShell requerida para importar la información del archivo CSV de contacto y analizar la lógica y la estructura de este comando PowerShell
En el próximo artículo, revisaremos cómo usar un script de PowerShell que he creado y que puede simplificar la tarea de trabajar con comandos complicados de PowerShell.
2. En el artículo actual, revisaremos la estructura de datos requerida del archivo CSV, que debemos preparar para la "fase de importación".
En el próximo artículo repasaremos algunos trucos para gestionar y manipular los datos del archivo CSV de contacto.
Implementación de la importación masiva de contactos mediante un archivo CSV
La opción de - “Importación masiva”, nos permite migrar de manera rápida y eficiente información sobre cientos o incluso miles de contactos de correo, desde una infraestructura de correo anterior a Exchange Online.
La forma en que exportamos la información de la "infraestructura de correo anterior" depende de la infraestructura de correo adecuada que utilicemos.
Lo importante que debemos saber con respecto a los "datos exportados" es que los datos deben exportarse en formato CSV.
El término CSV significa valor separado por comas. El formato CSV define una estructura de datos similar al concepto de tabla.
En la siguiente captura de pantalla podemos ver un ejemplo de un archivo CSV.
La información incluye "encabezado de columna" (A) y "filas de datos" (B).
Por ejemplo, los siguientes valores son el "encabezado de columna":
Dirección de correo electrónico externo, Nombre, Nombre, Apellido
Los valores que aparecen debajo de la sección "encabezado de columna" son los valores que pueblan las diferentes columnas.
Por ejemplo, la siguiente cadena: darrenp@fabrikam.com, Darren Parker, Darren, Parker, será “traducido” de la siguiente manera:
- ExternalEmailAddress
darrenp@fabrikam.com
- Name
Darren Parker
- FirstName
Darren
- LastName
parker
En la siguiente captura de pantalla, podemos ver el mismo archivo CSV, cuando usamos Excel para editar el archivo.
Es fácil notar que cuando se utiliza Excel para editar un archivo CSV, la información se presenta en un formato más fácil de entender.
Objeto de contacto externo de Exchange Online y campos de datos obligatorios
El "objeto de contacto externo" en un entorno basado en Exchange puede incluir muchas propiedades
como nombre, dirección de correo electrónico, número de teléfono, dirección de la oficina y mucho más.
Lo importante que me gustaría enfatizar es que el "objeto de contacto externo" en el entorno basado en Exchange Online debe tener tres campos de datos obligatorios:
- *Nombre para mostrar:
- *Alias:
- *Dirección de correo electrónico externa:
En la siguiente captura de pantalla, podemos ver estos campos de datos obligatorios con el carácter de asterisco, que “nos indica” que se trata de un campo de datos obligatorio.
El punto es que cuando exportamos los datos de contacto desde la infraestructura de correo existente que utilizamos, debemos asegurarnos de que los datos exportados incluyan estos "campos de datos".
Técnicamente, los datos exportados no necesitan incluir el campo “Alias ”, pero deben incluir el siguientes campos de datos:
- Dirección de correo electrónico externa (en nuestro archivo CSV, este campo aparece usando el encabezado de la columna
nombre - Dirección de correo electrónico externa). - Nombre para mostrar (en nuestro archivo CSV, este campo aparece usando el nombre del encabezado de la columna: Nombre).
En caso de que se pregunte qué pasa con el campo de datos obligatorio adicional, el "Alias", la respuesta es que si los datos exportados (el archivo CSV) no incluyen este campo, el proceso de importación a Exchange Online "lo sabe". cómo generar automáticamente el campo "Alias".
El proceso de importación del archivo CSV tomará el valor que está almacenado en el campo CSV “Nombre” y utilice este valor para el valor “Alias”.
Si queremos ser más precisos, el proceso de importación tomará las dos palabras separadas del campo de nombre (el nombre privado y el apellido), eliminará el espacio que existe entre estas dos palabras y creará un “nuevo valor”: el “Alias“.
En la siguiente captura de pantalla, podemos ver un ejemplo de la "lógica de mapeo" que se implementó entre los datos almacenados en el archivo CSV y el "objeto de contacto externo" de Exchange Online.
Darse cuenta de:
- Los nombres de los campos (encabezado de fila) que aparecen en el archivo CSV son diferentes de los nombres de los campos de contacto externos de Exchange Online.
- El archivo CSV no incluye el campo "Alias". El proceso de importación generará este campo automáticamente si le proporcionamos valor en el campo “Nombre”.
Importe información de contacto externo a Exchange Online usando PowerShell la lógica del proceso
El proceso por el que importamos la información de contacto externo del archivo CSV a Exchange Online, consta de dos fases diferentes:
Fase 1: en esta fase, utilizamos el proceso de importación que se implementa mediante PowerShell para crear el "objeto" de contacto externo requerido en Exchange Online.
En esta fase, el proceso de importación se relaciona únicamente con los campos obligatorios que se mencionaron y con la columna adicional: la columna denominada FirstName<. y Apellido.
En otras palabras, el proceso de importación de PowerShell "ignora" el resto de la información del archivo CSV.
Fase 2: esta es la fase en la que "completamos" los datos faltantes que fueron "ignorados" en el primer paso.
El proceso de importación de PowerShell agrega "datos adicionales", como el número de teléfono, la dirección de la oficina, etc., a los contactos externos de Exchange Online existentes.
En la siguiente captura de pantalla podemos ver un ejemplo de un archivo CSV que incluye la información de los contactos que necesitamos importar.
En la primera fase, utilizamos los “campos de datos obligatorios” + la columna denominada - FirstName y Apellido.
En la segunda fase de importación, el resto del campo de datos (coloreado en naranja) se fusionarán con los contactos de Exchange existentes.
Implementación de la tarea de: Importar información de contacto externo a Exchange Online usando PowerShell
La lista de tareas que debemos completar para implementar la tarea de "Importar información de contacto externo a Exchange Online usando PowerShell", incluye las siguientes tareas:
- Exporte la información de contactos de su infraestructura de correo existente a un archivo CSV.
- Verifique que el archivo CSV incluya la estructura de datos requerida que utilizamos para importar la información a Exchange Online. Por ejemplo, el nombre del encabezado de las columnas y los campos obligatorios.
- Conéctese a Exchange Online PowerShell
- Ejecute los comandos de PowerShell de la “Fase 1”, que importarán la información del archivo CSV y crearán el contacto externo en Exchange Online.
- Ejecute los comandos de PowerShell de la “Fase 2”, que importarán la “información adicional” del archivo CSV, como el número de teléfono, y completarán la información en el contacto externo existente, respectivamente.
1. Conéctese a Exchange Online PowerShell
Para poder ejecutar los comandos de PowerShell especificados en el artículo actual, deberá conectarse a Exchange Online PowerShell.
Inicie Windows PowerShell como administrador y ejecute el cmdlet Connect-ExchangeOnline.
Connect-ExchangeOnline2. Cree el objeto de contactos externos en Exchange Online.
La sintaxis del comando de PowerShell que utilizamos para importar los datos del archivo CSV existente es:
Import-Csv <Path> | ForEach {New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}El script de PowerShell incluye dos partes separadas:
La primera parte se encarga de importar la información del archivo CSV y guardar esta información en un almacenamiento temporal en la RAM del escritorio (Importar-Csv).
La segunda parte del script de PowerShell es responsable de:
- Obtener la información que se recuperó en el paso anterior
- Comience a crear un nuevo objeto de contactos externos en Exchange Online basado en esta información (New-MailContact)
El proceso de importación de PowerShell implementa un “bucle” (ForEach), leyendo cada “fila” del archivo CSV, creando el objeto de contacto requerido en Exchange Online y repitiendo el proceso una y otra vez hasta llegar a la “última fila” en el archivo CSV.
Un concepto adicional que debemos comprender es el "proceso de asignación".
En nuestro escenario, asignamos información del archivo CSV al "contacto externo" en Exchange Online.
- Los parámetros “Rojo” son el nombre de los campos de datos que utiliza Exchange Online.
- Los parámetros “Azul” son los nombres de los encabezados de las columnas que aparecen en el archivo CSV. Técnicamente hablando, el nombre de los encabezados de columna en el archivo CSV es solo un nombre arbitrario que elegimos. No existen convenciones de nomenclatura específicas que debamos utilizar, además de la recomendación de utilizar el nombre del encabezado de la columna sin espacios.
En la siguiente captura de pantalla, podemos ver un ejemplo del comando PowerShell, que ejecutamos en la consola de PowerShell (después de conectarnos a Exchange Online PowerShell).
El comando lee la información del archivo CSV (en nuestro escenario, el archivo se guarda en la carpeta c:\temp y el nombre del archivo es ExternalContacts_01.csv).
En la siguiente captura de pantalla, podemos ver el contacto creado exitosamente en Exchange Online.
3. Agregar información sobre las propiedades de los contactos externos.
En esta fase, “rellenamos” el objeto de contacto externo que se creó en la primera fase, con información de propiedad como: teléfono de la oficina, teléfono de casa, ciudad, etc.
En esta fase, usamos el mismo concepto de "importar información" de archivos CSV, pero ahora usamos el comando de PowerShell: Set-Contact.
El contacto ya está creado y en esta fase necesitamos actualizar (Establecer contacto) el contacto de Exchange Online existente.
PowerShell "sabe" que necesita relacionarse con cada uno de los contactos que existen en el archivo CSV porque le indicamos que ejecute un bucle (ForEach) y busque todos los contactos que aparecen "debajo". ”la columna Nombre (Set-Contact $_.Name).
La sintaxis de PowerShell del comando que utilizamos es:
$Contacts = Import-CSV <path>
$contacts | ForEach {Set-Contact $_.Name -StreetAddress $_.StreetAddress -City $_.City -StateorProvince $_.StateorProvince -PostalCode $_.PostalCode -Phone $_.Phone -MobilePhone $_.MobilePhone -Pager $_.Pager -HomePhone $_.HomePhone -Company $_.Company -Title $_.Title -OtherTelephone $_.OtherTelephone -Department $_.Department -Fax $_.Fax -Initials $_.Initials -Notes $_.Notes -Office $_.Office }En la siguiente captura de pantalla, podemos ver un ejemplo del comando de PowerShell
que ejecutamos en la “fase 2”:
En la siguiente captura de pantalla, podemos ver que la segunda fase también se completó con éxito. La información de contacto agregada al contacto que se crea en la primera fase.
Puede descargar un archivo Excel de muestra llamado: ExternalContacts_01.csv.
En el siguiente artículo, analizaremos la importación masiva de contactos a Exchange Online (Office 365) mediante el script de PowerShell | Parte 2#2.












