การเปลี่ยนชื่อ User / ข้อมูล Field จำนวนมาก ด้วย PowerShell

Mos Noppadol Rattanawisadrat
MSEDUTH
Published in
4 min readJun 12, 2021

บทความนี้เราจะพูดถึง วิธีการ Update รายชื่อ ของ user ใน Office 365 กัน

bit.ly/AdminO365TH หน้ารวมบทความแอดมิน

โอกาสนี้จะได้ใช้วิธีนี้ มีเยอะเลยครับ ไม่ว่าจะเป็น การเผลออัพโหลด ภาษาต่างดาวเข้าไป หรือ ตั้ง Portal ให้ User เปลี่ยนชื่อตัวเอง ( advance )

บทความนี้ ครอบคลุมการอัพเดท ทุกอย่าง ตั้งแต่ ชื่อ เบอร์โทร แผนกต่างๆ

หาก โรงเรียนต้องการ อัพเดท ระดับชั้น ก็สามารถใช้วิธีนี้ได้เช่นเดียวกัน

สรุป Concept

  • เข้า PowerShell แล้ว login ด้วยเมล Admin office 365
  • ใส่รายชื่อ Email ของคนที่จะเปลี่ยน พร้อมชื่อใหม่ ลง Csv
  • พิมพ์คำสั่งอัพเดท

Reference

เข้า PowerShell

เริ่มที่เปิด Windows PowerShell แบบ Run as Administrator [ จะมีหน้าต่าง pop up ขึ้นมาให้กด Yes ]

ต้องเปิดแบบ Run as Administrator ด้วยนะครับสำคัญมาก

หน้าตาหน้ากลัวมาก แต่อย่างเพิ่งตกใจนะครับ เราจะค่อยๆไปด้วยกัน

คำสั่ง บรรทัดแรก — ติดตั้ง Module MSOnline

Install-Module MSOnline

(ใครเคยลงแล้ว จากการทำครั้งก่อนๆ ก็ไม่ต้องละ ข้ามไป connect เลย)

Y

Yes ไปเลยฮะ

มันก็จะ Install ตัว MSOnline ให้

ติดตั้งเสร็จแล้วพร้อมใช้งาน

คำสั่งบรรทัดที่สอง — เชื่อมต่อกับ Connect

Connect-MsolService

แล้วมันจะมีหน้า Login ขึ้นมาให้กด

เชื่อมต่อเป็นที่เรียบร้อยแล้ว

เตรียม excel ( CSV )

ไฟล์ CSV ที่ผมใช้ ใส่มา 4 Columns อันแรกเอาไว้ระบุตัวคน อีก 3 อัน เอาไว้อัพเดท

ถ้าจะเปลี่ยนแค่ชื่อ ก็ใส่แค่ DisplayName ก็ได้ อันนี้ทำให้ดูเผื่อๆ

อันนี้เป็น User ที่มีในระบบก่อนเปลี่ยน จะเห็นว่า ชื่อเป็นตัวเลข กับชื่อเต็มผม เดี๋ยวจะเปลี่ยนให้เป็น A B C D แล้วก็ เติม Title, Department ไปด้วย จากที่โล่งๆ

ถ้าอยากได้ ข้อมูลเก่า User เอาเป็นไฟล์ตั้งหลัก ให้ไป Export ออกมา

ตอนเซฟก็อย่าลืม เซฟเป็น CSV ส่วนชื่อจะตั้งเป็นอะไรก็ได้

จากนั้นก็ไป Copy file location มาเก็บไว้ก่อน

กด Shift ค้างไว้ที่ไฟล์ แล้วกด Copy as path ได้เลย

เตรียมคำสั่ง

โดยคำสั่งที่ผมใช้คือ

Import-Csv -Path “C:\Users\Microsoft\Downloads\users.csv” | foreach {Set-MsolUser -UserPrincipalName $_.UserPrincipalName -DisplayName $_.DisplayName -Title $_.Title -Department $_.Department }

อธิบายคำสั่งอยู่ด้านล่าง ใครรีบ ก๊อบเลย

โดยให้ทุกคนเอา Location ของไฟล์ มาแทนที่ “C:\Users\Microsoft\Downloads\users.csv”

เอาคำสั่งไปใส่

กดรีเฟรช ก็เป็นอันเรียบร้อย (ถ้าคนเยอะ รอมันนิดนึงนะ นี่ผมใส่ 4 คน ได้ทันทีเลย )

อธิบายคำสั่ง

Import-Csv -Path “C:\Users\Microsoft\Downloads\todelete.csv”

คือ เอาไฟล์จากไหน

| foreach {}

เปิดลูป ให้ทำคำสั่งทั้งหมดใน {}

Set-MsolUser

ให้ไปตั้งค่าของ User

-UserPrincipalName $_.UserPrincipalName

โดยดูจากอีเมล ซึ่งอีเมลที่ว่าคือ ตัวแปรนี้ $_.UserPrincipalName ( ชื่อ column )

-DisplayName $_.DisplayName

-Title $_.Title

-Department $_.Department

หลักจากรู้แล้วว่าตั้งค่าของอีเมลไหน ให้เปลี่ยนค่าดังต่อไปนี้ DisplayName , Title, Department ไอตัวที่ $_. คือตัวแปร หรือ ชื่อคอลัม

นั่นหมายความว่า จะเพิ่มหรือลด จำนวน คอลัมก็ได้ แล้วแต่ว่าเราจะแก้เยอะแค่ไหน

รายชื่อทั้งหมดที่แก้ไขได้ของคำสั่ง Set-MsolUser

ตัวที่ตามหลัง “-” คือชื่อฟิล ที่จะแก้ “<>” คือ รูปแบบข้อมูล ก็คือตัวแปรที่ชี้ไปคอลัมนั้นๆ

Set-MsolUser
[-ImmutableId <String>]
[-ObjectId <Guid>]
[-UserPrincipalName <String>]
[-BlockCredential <Boolean>]
[-City <String>]
[-Country <String>]
[-Department <String>]
[-DisplayName <String>]
[-Fax <String>]
[-FirstName <String>]
[-LastName <String>]
[-LastPasswordChangeTimestamp <DateTime>]
[-MobilePhone <String>]
[-Office <String>]
[-PasswordNeverExpires <Boolean>]
[-PhoneNumber <String>]
[-PostalCode <String>]
[-PreferredDataLocation <String>]
[-PreferredLanguage <String>]
[-SoftDeletionTimestamp <DateTime>]
[-State <String>]
[-StreetAddress <String>]
[-StrongPasswordRequired <Boolean>]
[-Title <String>]
[-UsageLocation <String>]
[-AlternateEmailAddresses <String[]>]
[-StrongAuthenticationMethods <StrongAuthenticationMethod[]>]
[-AlternateMobilePhones <String[]>]
[-StrongAuthenticationRequirements <StrongAuthenticationRequirement[]>]
[-StsRefreshTokensValidFrom <DateTime>]
[-UserType <UserType>]
[-TenantId <Guid>]
[<CommonParameters>]

--

--

Mos Noppadol Rattanawisadrat
MSEDUTH

A guy who passionate on Technology, Psychology, Science and business thing