การเติมข้อมูลผู้ติดต่อ Outlook ล่วงหน้าด้วย Graph API
ขณะนี้หลายองค์กรอนุญาตให้ผู้ใช้ทำงานได้จากทุกที่และทุกอุปกรณ์ ความท้าทายชุดใหม่ได้เกิดขึ้นแล้ว ตัวอย่างเช่น ผู้ใช้ใหม่ที่ทำงานจากนอกสำนักงานจะได้รับประโยชน์จากการรู้วิธีติดต่อฝ่ายบริการไอที ฝ่ายทรัพยากรบุคคล และบริการภายในอื่นๆ
ข้อมูลนี้มักจะหาได้ง่ายใน Global Address List (GAL) การค้นหาข้อมูลนี้บนอุปกรณ์เคลื่อนที่กลายเป็นเรื่องที่ท้าทายมากขึ้น เนื่องจากไคลเอ็นต์อีเมลมักไม่สามารถเข้าถึง GAL ตัวอย่างเช่น Outlook Mobile จะซิงโครไนซ์เฉพาะผู้ติดต่อส่วนบุคคลกับอุปกรณ์เท่านั้น
เพื่อแก้ไขปัญหา ฉันได้สร้างสคริปต์ PowerShell เพื่ออ่านชุดผู้ติดต่อมาตรฐานจากไฟล์ CSV และเขียนเป็นผู้ติดต่อส่วนตัวไปยังกล่องจดหมายของผู้ใช้ อุปกรณ์เคลื่อนที่สามารถซิงโครไนซ์รายชื่อติดต่อเหล่านี้กับรายชื่ออื่นๆ ที่สร้างโดยผู้ใช้ได้
การสร้างแอปที่ลงทะเบียน
สคริปต์ใช้ Graph API เพื่อจัดเตรียมผู้ติดต่อ ดังนั้นเราจึงต้องมีแอปที่ลงทะเบียนใน Azure AD เพื่อเก็บสิทธิ์และการรับรองความถูกต้อง (นี่คืออีกตัวอย่างหนึ่งของการใช้กราฟกับ PowerShell) สร้างการลงทะเบียนแอปใหม่ในพอร์ทัล Azure AD และเพิ่มสิทธิ์แอปพลิเคชัน Contacts.ReadWrite ตรวจสอบให้แน่ใจว่าได้ให้ความยินยอมแก่ผู้ดูแลระบบสำหรับการอนุญาตเพื่ออนุญาตให้สคริปต์เข้าถึงผู้ติดต่อสำหรับผู้ใช้ทั้งหมด:
เมื่อย้อนกลับไปที่คุณสมบัติของแอป ให้สังเกต รหัสแอปพลิเคชัน (ไคลเอนต์) และ รหัสไดเรกทอรี (ผู้เช่า) จากหน้าภาพรวม:
สุดท้าย เปิดหน้า ใบรับรองและความลับ และสร้างรหัสลับไคลเอ็นต์ใหม่ สังเกตคุณค่าของความลับ การรวมกันของตัวระบุแอป ตัวระบุผู้เช่า และความลับของแอปจะทำให้สคริปต์ของเราสามารถตรวจสอบสิทธิ์และใช้สิทธิ์ที่ได้รับมอบหมายเพื่อโต้ตอบกับกล่องจดหมายของผู้ใช้
หมายเหตุ: เนื่องจากข้อมูลลับถูกใช้ในการตรวจสอบสิทธิ์การลงทะเบียนแอป ดังนั้นให้ถือว่าความลับนี้เหมือนกับรหัสผ่าน และควรระมัดระวังเมื่อจัดเก็บเป็นข้อความธรรมดา
เตรียมไฟล์นำเข้าผู้ติดต่อ
สคริปต์อ่านรายชื่อผู้ติดต่อจากไฟล์ CSV ไฟล์ตัวอย่างมีอยู่ใน GitHub และมีคอลัมน์ต่อไปนี้:
- ชื่อผู้ช่วย
- ธุรกิจหน้าแรก
- โทรศัพท์ธุรกิจ
- ชื่อบริษัท
- แผนก
- ที่อยู่อีเมล
- ชื่อที่กำหนด
- ตำแหน่งงาน
- ชื่อกลาง
- ชื่อเล่น
- วิชาชีพ
- บันทึกส่วนตัว
- นามสกุล
- ชื่อ
ค่าแต่ละค่าเหล่านี้จะจับคู่กับค่าที่คุณเห็นในหน้าติดต่อของ Outlook โดยตรง ค่าทั้งหมดเป็นทางเลือก ดังนั้นหากไม่จำเป็น ให้ปล่อยว่างไว้ รายการตัวอย่างถูกเติมไว้ในไฟล์แล้ว และสามารถแทนที่ด้วยรายการแรกของคุณได้ คุณสามารถเพิ่มรายการลงใน CSV ได้มากเท่าที่คุณต้องการ สคริปต์จะเพิ่มแต่ละรายการใน CSV เป็นผู้ติดต่อส่วนตัวในกล่องจดหมายเป้าหมาย:
กำลังเรียกใช้สคริปต์
เมื่อเตรียมไฟล์นำเข้าแล้ว ให้ดาวน์โหลดสคริปต์จาก GitHub และบันทึกไว้ในเครื่อง สคริปต์ต้องการพารามิเตอร์ต่อไปนี้:
- กล่องจดหมาย - นี่คือ UPN ของกล่องจดหมายเป้าหมาย
- CSVPath - นี่คือเส้นทางแบบเต็มไปยัง CSV นำเข้า
- ClientID - นี่คือรหัสแอปพลิเคชันสำหรับแอปที่ลงทะเบียน
- ClientSecret - นี่คือค่าความลับที่สร้างขึ้นก่อนหน้านี้
- TenantID - นี่คือรหัสไดเรกทอรีของผู้เช่า
เมื่อมีพารามิเตอร์แต่ละตัวอยู่ในมือ สคริปต์สามารถรันสำหรับผู้ใช้รายเดียวโดยการระบุ UPN ของกล่องจดหมายเป้าหมาย:
##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
สคริปต์จะแสดงรายละเอียดของผู้ติดต่อแต่ละรายในรูปแบบ JSON เมื่อมีการจัดเตรียม:
ตรรกะเพิ่มเติมบางอย่างอนุญาตให้สคริปต์เพิ่มชุดผู้ติดต่อลงในกล่องจดหมายทั้งหมด เมื่อต้องการทำเช่นนี้ ให้เชื่อมต่อกับ Exchange Online Management Shell และเรียกใช้ดังนี้ นี่จะได้รับรายการกล่องจดหมายของผู้ใช้ทั้งหมดในสภาพแวดล้อม จากนั้นเรียกใช้สคริปต์นำเข้าสำหรับแต่ละรายการ:
##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
}
เมื่อสคริปต์เสร็จสิ้น ผู้ติดต่อจะอยู่ในผู้ติดต่อส่วนตัวของผู้ใช้และพร้อมที่จะซิงค์กับอุปกรณ์ของพวกเขา:
สรุป
ด้วยงานเตรียมการเพียงเล็กน้อย สคริปต์นี้ทำให้การเติมข้อมูลผู้ติดต่อสำหรับผู้ใช้จำนวนเท่าใดก็ได้เป็นเรื่องง่าย รายชื่อใหม่สามารถซิงโครไนซ์กับอุปกรณ์มือถือและเข้าถึงได้จากทุกที่
ทั้งสคริปต์และตัวอย่างไฟล์นำเข้ามีอยู่ใน GitHub
หมายเหตุ: เช่นเคย อย่าลืมตรวจสอบและทดสอบโค้ดใดๆ ก่อนใช้งานในสภาพแวดล้อมการใช้งานจริง




