(For Admins/Users) การเพิ่ม External Contacts ทีละหลายคนใน Outlook และ Exchange Online

Narisorn Limpaswadpaisarn
EchoO365
Published in
4 min readSep 28, 2019

Content difficulty — Technical (เฉพาะ ฝั่ง Admin)

จากตอนที่แล้ว การสร้าง Contact จะทำได้ที่ฝั่ง users ที่ใช้ Outlook เอง เหมือนเก็บเบอร์เพื่อนไว้ในมือถือซึ่งดูได้คนเดียว มีทั้งมารูปแบบ Contact (.msg), Business Card (.vcf) หรือ Group Contact และ ทำได้จากฝั่ง Admin เอง ซึ่งทำเป็น Mail Contact หรือ Mail user เพื่อให้ทุกคนสามารถหาได้ใน Global Address Lists (GAL)

ตอนที่ผ่านมาจะเป็นการสร้าง Contact ทีละคนๆเข้ามาในระบบ ซึ่ง อาจจะไม่สะดวกซักเท่าไหร่นัก ซึ่งตอนนี้เราจะมาดูวิธีการสร้าง contacts ที่เป็น external ทีละหลายๆคน (bulk) ในครั้งเดียว

ตอนที่แล้วสามารถย้อนดูได้ที่นี่ https://link.medium.com/zDkzNcsVl0

ระดับ Users

วิธีการคือการสร้างไฟล์ Comma-separated value (.csv) จากโปรแกรม เช่น Microsoft Excel แล้ว import เข้าไปที่ Outlook ซึ่งเราต้องกำหนดค่าต่างๆ เช่น ชื่อ, นามสกุล, email, ตำแหน่ง และอื่นๆ แต่เพื่อความง่ายให้เราไป download sample ที่ https://www.microsoft.com/en-us/download/details.aspx?id=45485 จากนั้นให้เรามา edit ใหม่เอง ซึ่งในไฟล์เขาก็สร้าง column ที่ใช้ไว้ให้แล้ว

Download ไฟล์ Import_User_Sample_en.csv เพื่อมา edit ของเราเอง

จากนั้นมา Import จาก Outlook ไปที่ File -> Open & Export -> Import/Export และ ไปที่ Import from another program or file จากนั้นเลือก comma-separated value แล้วก็ browse ไปยัง .csv ของเรา

จากนั้นเลือก comma-separated value แล้วก็ browse ไปยังไฟล์ของเราและให้เลือกตัวเลือกดังนี้

  • ตัวเลือกแรก: ถ้ามี Contact ไหนซ้ำระหว่าง ใน .csv กับที่มีใน Outlook ให้เอาในไฟล์ทับอันซ้ำใน Outlook (ถ้าเราจงใจทำซ้ำในไฟล์ให้สมบูรณ์กว่าก็เลือกอันนี้)
  • ตัวเลือกกลาง: ให้อนุญาตให้ซ้ำกันได้ระหว่าง contact จาก .csv กับที่มีใน Outlook ซึ่งสุดท้ายถ้าซ้ำก็จะมีสองอัน (อีกอันห้อยท้ายว่า Imported)
  • ตัวเลือกล่าง: Contact ไหนในไฟล์ ซ้ำกับที่มีใน Outlook จะไม่ถูกใส่เข้ามา

สุดท้ายเลือกไปที่ Contact Folder เป็นอันเสร็จ

ก่อนคลิกที่ Finish จะมี ปุ่ม Map Custom Fields เผื่อเรามี column ชื่อที่ไม่ตรงกับที่ Outlook จะรับให้เรามาจับคู่ Drag&Drop

Contact ได้ถูก Import เข้ามาเรียบร้อย

ถ้าเรามี Contact บน free email อย่าง Gmail หรือ Outlook (Hotmail) ก็ export ได้เช่นกันในการ Download มาเป็น .csv เพื่อเอา import ไป Outlook Account ที่เป็น Office 365 อย่างใน Gmail ยังเลือกคนที่เรา Save contact เอง หรือ ครที่เราคุย mail ตอบกันบ่อยๆ (Frequently Contacted)

ยังไงขอให้ตรวจสอบตัว column กับ value ใน .csv ได้มาด้วย

ที่มุมขวาบนของ Gmail เลือก Contacts แล้วไปอีกหน้าเลือก Export -> Outlook CSV
ใน Outlook ที่หน้า People ก็เลือก Export ตัว Contact.csv ได้

ระดับ Admins

Mail contact (Bulk)

ใช้ .csv เหมือนเดิม แต่ให้ Download จากที่นี่ เพื่อเอามา edit https://drive.google.com/file/d/15sUYMDHgVuXfRhFE3yyTkWwFnGx2-kmt/view?usp=sharing

Contact สำหรับ External Contacts

จากนั้นต้องใช้ PowerShell ในการทำเริ่มด้วย เข้า PowerShell ของ Exchange Online โดยการ Run ทั้งหมดแล้ว Sign in ด้วย Admin Account

Set-ExecutionPolicy RemoteSigned

$UserCredential = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Import-PSSession $Session -DisableNameChecking

Run ทุกบรรทัดในทีเดียว

จากนั้นไป Directory Path ที่เรา save ตัว .csv ไว้ เช่น ไว้ที่ C drive เลยก็ไปที่ C: โดย พิมพ์ cd / แล้วตามด้วย command ด้านล่าง

Import-Csv .\Echoo365contacts.csv|%{New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}

ตรวจสอบชื่อ .csv กับ command ว่าชื่อเดียวกันหรือไม่ โดยไป directory ที่มี .csv แล้วพิมพ์ dir

ตอนนี้ Contact เช่น Display name กับ smtp mail address ได้ upload ไปแล้วแต่ข้อมูลของ Contact Information เช่น City, Office หรือ Phone ยังไม่ได้ถูก upload ขึ้นไป ให้ run command ทั้งหมดนี้

$Contacts = Import-CSV .\Echoo365contacts.csv

$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 -Manager $_.Manager}

อย่าลืมตรวจสอบชื่อไฟล์ของ .csv กับ ชื่อไฟล์ .csv ของ command ด้วยว่าตรงกันหรือไม่

ใน .csv ต้องระบุตัว Column ของ Manager ถ้าไม่มีแล้วว่างไว้แล้ว ให้ลบช่วงสุดท้ายที่เป็น -Manager $_.Manager ออกจาก command ข้างบน

Run Command เพื่อใส่ Contact Information

ติดตามผลบน Exchange Admin Center

ชื่อได้ add มาที่ Exchange Admin Center
ข้อมูลมาครบ (ทั้งใน contact information) ตามที่มีกรอกใน .csv
ใน Global Address List ก็มาเรียบร้อย

การ Add ครั้งต่อไปอาจจะมี Error ว่า already exists แต่ให้ลองไปดูว่า contact นั้นขึ้นมาหรือไม่

ถ้าจะซ่อน contact ทั้งหมดเพื่อจุดประสงค์ที่ไม่ได้อยากให้ user หาเจอ แต่แค่จะเอา contact ไปใส่ตาม Distribution list ให้ใส่ command ด้านล่าง

Get-Contact -ResultSize unlimited -Filter {(RecipientTypeDetails -eq ‘MailContact’)} | Set-MailContact -HiddenFromAddressListsEnabled $true

ถ้าแค่คนๆเดียวให้ใช้ command นี้ เช่นจะซ่อน Billy Joel (ตาม Display name)

Set-MailContact “Billy Joel” -HiddenFromAddressListsEnabled $true

Mail user (Bulk)

ให้ Download ไฟล์นี้แทน https://drive.google.com/file/d/1XfOL_VOLzUSmheAalpHQp0viYI5-am0M/view?usp=sharing

เนื่องจาก Mail user ใช้ domain เราในการ sign in ตัว .csv จะต่างจาก Mail Contact ตรงที่มี column

  • MicrosoftOnlineServicesID: ให้ใส่เหมือน ExternalEmailAddress
  • Password: ให้ตั้ง Password สำหรับ Sign in เข้า Office 365 Portal
File sample จะมี column สองอันนี้มาให้ใส่เพิ่ม

ให้ใช้ Command เพื่อเข้า Exchange Online PowerShell แล้ว Sign in วิธีเดียวกับแบบ Mail Contact จากไปที่ directory ที่เก็บ .csv จากนั้นพิมพ์ command

Import-Csv .\Echoo365contacts-mailuser.csv|%{New-Mailuser -Name $_.Name -MicrosoftOnlineServicesID $_.MicrosoftOnlineServicesID -password (ConvertTo-SecureString -String ‘$_.Password’ -AsPlainText -Force) -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}

ตรวจสอบชื่อ .csv กับ command ว่าชื่อเดียวกันหรือไม่ โดยไป directory ที่มี .csv แล้วพิมพ์ dir

ข้อมูลของ Contact Information ยังไม่ได้ถูก upload ขึ้นไป เช่นเดียวกับของ Mail contact ให้ run command ทั้งหมดนี้

$Contacts = Import-CSV .\Echoo365contacts-mailuser.csv

$contacts | ForEach {Set-User $_.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 -Manager $_.Manager}

ใน .csv ต้องระบุตัว Column ของ Manager ถ้าไม่มีแล้วว่างไว้แล้ว ให้ลบช่วงสุดท้ายที่เป็น -Manager $_.Manager ออกจาก command ข้างบน

เข้าไป Check ก็จะเห็น Mail user เรียบร้อย

Mail user ได้ upload มาเรียบร้อย

--

--

Narisorn Limpaswadpaisarn
EchoO365

Office 365 and Modern Workplaces: Please follow my publication https://medium.com/echoo365 for Microsoft 365 & Power Platform Blog (In Thai)