Rellenar previamente los contactos de Outlook con Graph API
Ahora que muchas organizaciones permiten a los usuarios trabajar desde cualquier lugar y en cualquier dispositivo, ha surgido un nuevo conjunto de desafíos. Por ejemplo, los nuevos usuarios que trabajan fuera de la oficina se benefician al saber cómo ponerse en contacto con el servicio de asistencia técnica de TI, RR.HH. y otros servicios internos.
Esta información suele estar fácilmente disponible en la Lista global de direcciones (GAL). Se vuelve más difícil encontrar esta información en un dispositivo móvil porque los clientes de correo electrónico generalmente no tienen acceso a la GAL. Por ejemplo, Outlook mobile sincroniza solo los contactos personales con el dispositivo.
Para resolver el problema, creé un script de PowerShell para leer un conjunto de contactos estándar de un archivo CSV y escribirlos como contactos personales en los buzones de correo de los usuarios. Luego, los dispositivos móviles pueden sincronizar estos contactos junto con otros creados por el usuario.
Crear una aplicación registrada
El script usa Graph API para aprovisionar los contactos, por lo que necesitamos una aplicación registrada en Azure AD para mantener los permisos y la autenticación (aquí hay otro ejemplo del uso de Graph con PowerShell). Cree un nuevo registro de aplicación en el portal de Azure AD y agregue el permiso de aplicación Contacts.ReadWrite. Asegúrese de otorgar el consentimiento del administrador para permitir que el script acceda a los contactos de todos los usuarios:
Volviendo a las propiedades de la aplicación, observe el ID de la aplicación (cliente) y el ID del directorio (inquilino) en la página Descripción general:
Finalmente, abra la página Certificados y secretos y cree un nuevo secreto de cliente. Tenga en cuenta el valor del secreto. La combinación de identificador de aplicación, identificador de inquilino y secreto de aplicación permitirá que nuestro script se autentique y utilice el permiso asignado para interactuar con los buzones de correo de los usuarios.
Nota: dado que el secreto se utiliza para autenticar el registro de la aplicación, trate este secreto como una contraseña y tenga cuidado al almacenarlo en texto sin formato.
Prepare el archivo de importación de contactos
El script lee la lista de contactos de un archivo CSV. Hay un archivo de muestra disponible en GitHub y contiene las siguientes columnas:
- Nombre del asistente
- negocioPágina de inicio
- negociosTeléfonos
- nombre de empresa
- departamento
- dirección de correo electrónico
- nombre de pila
- título profesional
- segundo nombre
- apodo
- profesión
- notas personales
- apellido
- título
Cada uno de estos valores se asigna directamente al valor que ve en la página de contacto de Outlook. Todos los valores son opcionales, por lo que si no son necesarios, déjelos en blanco. Ya hay una entrada de muestra en el archivo y se puede reemplazar con su primera entrada. Puede agregar tantas entradas como desee en el CSV. El script agregará cada elemento en el CSV como un contacto personal en un buzón de destino:
Ejecutando el guión
Una vez preparado el archivo de importación, descargue el script de GitHub y guárdelo localmente. El script requiere los siguientes parámetros:
- Buzón: este es el UPN del buzón de destino.
- CSVPath: esta es la ruta completa al CSV de importación.
- ClientID: este es el ID de la aplicación registrada.
- ClientSecret: este es el valor secreto creado anteriormente.
- TenantID: este es el ID de directorio del inquilino.
Con cada parámetro disponible, el script se puede ejecutar para un solo usuario especificando el UPN del buzón de destino:
##Declare Parameters##
$mailbox = adminseanmc@adminseanmc.com
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
.\graph-PopulateContactsFromCSV.ps1 -Mailbox $mailbox -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath
El script muestra los detalles de cada contacto en formato JSON a medida que se aprovisiona:
Alguna lógica adicional permite que el script agregue el conjunto de contactos a todos los buzones. Para hacer esto, conéctese al Shell de administración de Exchange Online y ejecútelo como se muestra a continuación. Esto obtendrá una lista de todos los buzones de correo de los usuarios en el entorno y luego ejecutará el script de importación para cada uno de ellos:
##Declare Parameters##
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
$mailboxes = Get-EXOMailbox -resultsize unlimited -RecipientTypeDetails usermailbox
Foreach($mailbox in $mailboxes){
.\graph-PopulateContactsFromCSV.ps1 -Mailbox $mailbox.UserPrincipalName -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath
}
Una vez que finalice la secuencia de comandos, los contactos estarán en los contactos personales de los usuarios y estarán disponibles para sincronizarse con su dispositivo:
Resumen
Con una pequeña cantidad de trabajo preparatorio, este script hace que sea muy fácil completar contactos para cualquier número de usuarios. Los nuevos contactos se pueden sincronizar con dispositivos móviles y estar disponibles desde cualquier lugar.
Tanto el script como el ejemplo del archivo de importación están disponibles en GitHub.
Nota: Como siempre, asegúrese de revisar y probar cualquier código antes de ejecutarlo en un entorno de producción.




