ค้นหาเว็บไซต์

ข้อมูลเบื้องต้นเกี่ยวกับ Microsoft Graph PowerShell SDK ตอนที่ 3: การโต้ตอบกับ Exchange Online และ SharePoint Online


ก้าวไปไกลกว่างานการจัดการที่เรียบง่าย

ในส่วนที่ 2 ของซีรีส์นี้ ฉันดูว่า Microsoft Graph และ Graph PowerShell SDK ช่วยให้ผู้ดูแลระบบจัดการ Microsoft 365 หลายด้านจากโมดูลเดียวได้อย่างไร ด้วยประสบการณ์ PowerShell บางอย่าง SDK จะทำให้งานการดูแลระบบมาตรฐานและการรายงานค่อนข้างง่าย

แม้ว่าฟังก์ชันการทำงานนี้จะดีที่มีในที่เดียว แต่การจัดการ Microsoft 365 ผ่าน PowerShell ถือเป็นข่าวเก่าสำหรับผู้ดูแลระบบส่วนใหญ่ Graph SDK มีข้อได้เปรียบเหนือวิธีอื่นๆ ตรงที่สามารถใช้ประโยชน์จาก Graph API ได้อย่างเต็มที่ ทำให้ผู้ดูแลระบบสามารถโต้ตอบกับบริการ Microsoft 365 เช่น Exchange Online และ SharePoint Online ซึ่งก่อนหน้านี้จำเป็นต้องใช้ API เฉพาะที่อาจมีความจำเป็นอย่างมาก ลงทุนเวลามากขึ้นในการเรียนรู้

ลาก่อน EWS

Exchange Web Services (EWS) เป็นส่วนสำคัญของ Microsoft Exchange นับตั้งแต่ Exchange Server 2007 EWS รองรับการเข้าถึงทรัพยากร Exchange เช่น กล่องจดหมายโดยทางโปรแกรม ในปี 2018 ทีม Exchange ประกาศว่าจะไม่ลงทุนใน EWS สำหรับ Exchange Online อีกต่อไป และแนะนำให้เจ้าของแอปพลิเคชันและผู้ขายย้ายไปยัง Microsoft Graph ตามมาด้วยค่าเสื่อมราคาของ API ในปี 2021 ซึ่งเป็นการส่งสัญญาณถึงจุดสิ้นสุดสำหรับ EWS

การโต้ตอบกับรายการจดหมาย

งาน EWS ทั่วไปคือการเรียกและประมวลผลจดหมายจากเมลบ็อกซ์ Microsoft Graph PowerShell SDK ทำให้กระบวนการนี้ง่ายขึ้นด้วย ข้อความe cmdlets ที่เกี่ยวข้องกับต่างๆ ตัวอย่างเช่น คำสั่งด้านล่างดึงข้อมูลรายการทั้งหมดจากกล่องจดหมายของผู้ใช้

หมายเหตุ: การใช้สิทธิ์ที่ได้รับมอบหมาย ตามรายละเอียดในส่วนที่ 1 ของชุดนี้ อนุญาตให้คุณเรียกค้นรายการที่บัญชีของคุณสามารถเข้าถึงได้เท่านั้น เช่น กล่องจดหมายของคุณเอง หากต้องการเข้าถึงกล่องจดหมายและทรัพยากรอื่นๆ ที่คุณไม่มีสิทธิ์เข้าถึง ต้องใช้สิทธิ์ของแอปพลิเคชัน ตามค่าเริ่มต้น SDK จะใช้สิทธิ์ที่ได้รับมอบหมายเสมอ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้สิทธิ์ของแอปพลิเคชัน โปรดดูส่วนที่ 1 ของชุดข้อมูลนี้

Get-MgUserMessage -UserId <UserID> -All

การส่งคืนรายการทั้งหมดจากกล่องจดหมายเป็นการทดสอบที่ดี แต่ไม่ค่อยมีประโยชน์เมื่อสร้างโค้ดเพื่อทำงานให้เสร็จสิ้น มีหลายวิธีในการกรองผลลัพธ์เพื่อปรับปรุงเวลาดำเนินการของ cmdlet และส่งคืนเฉพาะออบเจ็กต์ที่เกี่ยวข้อง ขั้นแรก เราสามารถส่งคืนเฉพาะรายการในโฟลเดอร์ที่ระบุได้ cmdlet Get-MgUserMailFolder ส่งคืนโฟลเดอร์ระดับบนสุดในกล่องจดหมาย และ cmdlet Get-MgUserMailFolderChildFolder ส่งคืนโฟลเดอร์ย่อยของโฟลเดอร์ ในรูปที่ 1 เราค้นหา ID เฉพาะของโฟลเดอร์ กล่องจดหมาย และใช้เพื่อรับ ID ของโฟลเดอร์ย่อย อีเมลที่จะประมวลผล รายการเมลและโฟลเดอร์แต่ละรายการมี ID เฉพาะที่กำหนดโดย Exchange Online ซึ่งจัดเก็บไว้ในคุณสมบัติ ID ของรายการ

cmdlet Get-MgUserMailFolderMessage ส่งคืนรายการเมลที่อยู่ในโฟลเดอร์ที่ระบุ ผลลัพธ์เหล่านี้สามารถกรองหรือค้นหาเพื่อจำกัดให้แคบลงได้โดยใช้ไวยากรณ์ด้านล่าง

##Return all messages in a particular folder
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All | fl subject,id
##Search messages in a particular folder for the word “PIM”
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All -Search "PIM" | fl subject,id,ReceivedDateTime
##Filter messages in a particular folder by receivedDateTime and by subject starting with “Your weekly PIM digest'”
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All -Filter "(receivedDateTime gt 2022-10-01T00:00:00Z) and (startswith(Subject,'Your weekly PIM digest'))" | fl subject,id,ReceivedDateTime

ดังที่แสดงในรูปที่ 2 การรวมตัวกรองและการค้นหาด้วย cmdlets เช่น Get-MgUserMailFolderMessage จะจำกัดผลลัพธ์ให้แคบลง และช่วยให้เราสามารถดึงสิ่งที่เราต้องการได้อย่างแน่นอน

เรียนรู้เพิ่มเติม: หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการประเมินรายการกล่องจดหมายด้วย Graph SDK โปรดดูบทความนี้เกี่ยวกับการสร้างรายงานเนื้อหากล่องจดหมายด้วย PowerShell และกราฟ

รายการจะถูกส่งกลับในรูปแบบ JSON และรายการเมลจะถูกส่งกลับเป็นประเภททรัพยากรข้อความ ประเภททรัพยากรเป็นรูปแบบที่กำหนดไว้ล่วงหน้า (ใน JSON) สำหรับออบเจ็กต์เฉพาะ สคีมาสำหรับออบเจ็กต์ประเภททรัพยากรข้อความมีรายละเอียดอยู่ในเอกสารประกอบกราฟ

Graph SDK ยังรองรับการแก้ไขรายการเมลที่มีอยู่ด้วย Update-MgUserMessage cmdlet ในรหัสที่แสดงด้านล่าง เราอัปเดตหัวเรื่องของข้อความที่ระบุด้วยตัวระบุข้อความ:

##Modify the subject of a message
Update-MgUserMessage -MessageId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgBGAAAAAAAdY2Aq0HOqRqKvhWSGlIAmBwDcQ9TSiMrlRrOhGqycky_7AABCa1F8AADcQ9TSiMrlRrOhGqycky_7AABCa4w1AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -Subject "Updated message subject"

cmdlet Move-MgUserMessage จะย้ายอีเมลไปยังโฟลเดอร์เป้าหมาย ในรูปที่ 3 เราได้รับ ID ของรายการเมลที่มีอยู่ รับ ID ของโฟลเดอร์ กล่องจดหมาย และย้ายจดหมายไปไว้ในนั้น

กรณีการใช้งานสำหรับการแก้ไขรายการเมลที่มีอยู่ค่อนข้างจำกัดนอกการทดสอบ สิ่งที่มีประโยชน์มากกว่าคือความสามารถในการส่งอีเมลโดยตรงจาก PowerShell บทความนี้อธิบายวิธีการส่งอีเมล Exchange Online โดยใช้ Microsoft Graph SDK สำหรับ PowerShell จะแสดงวิธีใช้ Graph SDK เพื่อส่งอีเมลโดยตรงจาก PowerShell

การทำงานกับ SharePoint Online

การจัดการไฟล์และไซต์และการรายงานเป็นคุณประโยชน์หลักอีกประการหนึ่งของ Microsoft Graph การโต้ตอบกับไฟล์และไซต์ใน SharePoint Online (และโดยส่วนขยาย Teams และ OneDrive) ผ่าน PowerShell ความรู้ที่จำเป็นก่อนหน้านี้เกี่ยวกับโมดูล SharePoint PnP PowerShell หรือ SharePoint Client Side Object Model (CSOM) ซึ่งทั้งสองอย่างนี้ไม่สามารถใช้งานได้ง่ายหากคุณไม่มีประสบการณ์ ในการพัฒนา SharePoint

Microsoft Graph เปิดเผยจุดสิ้นสุดสำหรับการโต้ตอบกับ SharePoint Online และแม้ว่าจะไม่มีความลึกอย่างที่ PnP หรือ CSOM มี (เช่น การสร้างเทมเพลตไซต์) งานส่วนใหญ่ที่ผู้ดูแลระบบผู้เช่าจำเป็นต้องดำเนินการได้รับการสนับสนุนอย่างเต็มที่

ตัวอย่างหนึ่งของวิธีที่กราฟสามารถช่วยผู้ดูแลระบบใน SharePoint Online คือบทความนี้เกี่ยวกับวิธีใช้ Graph API เพื่อสร้างรายงานไฟล์ในไซต์ SharePoint Online โค้ดในบทความนี้จะดึงรายการไดรฟ์ (ไลบรารีเอกสาร) ที่แนบมากับไซต์ใดไซต์หนึ่งและตัวกรองสำหรับไลบรารี "Documents" ก่อน จากที่นี่จะขยายไฟล์และโฟลเดอร์ภายใต้รูทเพื่อสร้างรายงานที่มีประโยชน์

สคริปต์นี้ใช้ Inrigger-MgGraphRequest cmdlet ใน PowerShell SDK เพื่อสอบถามตำแหน่งข้อมูล Drives และส่งคืนไลบรารีทั้งหมด Inrigger-MgGraphRequest เป็นวิธีที่ยอดเยี่ยมในการเรียกใช้การสืบค้นกับปลายทางที่คุณรู้จักหรือปลายทางที่ไม่มี PowerShell SDK cmdlet ดั้งเดิม

สามารถรับผลลัพธ์เดียวกันได้โดยใช้ Get-MgSiteDrive cmdlet อย่างไรก็ตาม cmdlet มีความแตกต่างบางประการ ตัวอย่างเช่น การเรียกใช้ Get-MgSiteDrive กับไซต์ใดไซต์หนึ่งจะเป็นการค้นหาตำแหน่งข้อมูล /drive ของไซต์ ตำแหน่งข้อมูล /drive จะส่งคืนไลบรารีเอกสารเริ่มต้นของไซต์เท่านั้น ข้อมูลนี้แสดงในรูปที่ 4 โดยใช้คุณลักษณะ debug ของ SDK ตามที่อธิบายไว้ในบทความนี้เกี่ยวกับการใช้พารามิเตอร์ Debug สำหรับ Microsoft Graph PowerShell SDK Cmdlets เพื่อแสดงคำขอ Graph API

หากต้องการส่งคืนไดรฟ์ทั้งหมดที่แนบกับไซต์ เราจำเป็นต้องเพิ่มพารามิเตอร์ -All พารามิเตอร์นี้เปลี่ยนปลายทางที่ถูกสอบถามจาก /drive เป็น /drives การเปลี่ยนแปลงเล็กน้อยใน URI (ซึ่งสังเกตได้ยากเมื่อแก้ไขปัญหาว่าทำไมสคริปต์จึงไม่ทำงานตามที่คาดไว้) จะเปลี่ยนชุดผลลัพธ์จากไลบรารีเริ่มต้นไปเป็นไลบรารีทั้งหมด URI ที่มีพารามิเตอร์ -All จะแสดงอยู่ในรูปที่ 5

ความแตกต่างเล็กน้อย (หรือคุณลักษณะนี้ยากที่จะพูดจากเอกสารประกอบ) มีขนาดค่อนข้างเล็ก แต่จะเริ่มแสดงให้เห็นขอบคร่าวๆ บางส่วนของ PowerShell SDK SDK ยังคงอยู่ในระหว่างดำเนินการอย่างมาก และไม่ต้องสงสัยเลยว่าจะมีการเติบโตเมื่อเวลาผ่านไปด้วยเอกสารที่ได้รับการปรับปรุงและจุดสิ้นสุดอื่นๆ ที่รองรับโดยตรงด้วย cmdlets ในระหว่างนี้ จะมี Intake-MgGraphRequest cmdlet คอยเติมช่องว่างอยู่เสมอ

อีกตัวอย่างหนึ่งคือการแสดงรายการไฟล์ในไดรฟ์ Get-MgDriveItem cmdlet ดูเหมือนว่าควรทำสิ่งที่จำเป็นที่นี่ อย่างไรก็ตาม cmdlet นี้ใช้ปลายทาง /drive/driveid/items ซึ่งใช้ในการส่งคืนรายการเฉพาะ ไม่แสดงรายการทั้งหมด ในสคริปต์ URI https://graph.microsoft.com/v1.0/sites/$ ($Site.Id)/drives/$ ($DocumentLibrary.Id)/root/children ใช้กับ Invoke-MgGraphRequest cmdlet และทำให้งานเสร็จสมบูรณ์ได้อย่างสมบูรณ์แบบ

สรุป

Graph PowerShell SDK เป็นเครื่องมือที่ยอดเยี่ยมสำหรับผู้ดูแลระบบในการโต้ตอบกับปริมาณงาน Microsoft 365 ในรูปแบบที่ก่อนหน้านี้ไม่สามารถทำได้โดยไม่ต้องเสียเวลาอย่างมาก SDK เปิดความเป็นไปได้มากมายในการเริ่มต้นใช้งาน Microsoft Graph อย่างไรก็ตาม ยังมีบางประเด็นที่ต้องปรับปรุง

แม้ว่าจะไม่ใช่สิ่งทดแทนการเรียนรู้ความซับซ้อนของ Graph API ในการสร้างโซลูชันที่ซับซ้อน แต่ SDK ก็เป็นวิธีที่ยอดเยี่ยมในการเริ่มต้นและดำเนินงานมาตรฐานโดยไม่จำเป็นต้องใช้เวลามากเกินไป

การจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์สำหรับ Active Directory

ค้นพบวิธีการป้องกันและกู้คืนจากการโจมตี AD ผ่านโซลูชันการจัดการความเสี่ยงด้านความปลอดภัยทางไซเบอร์เหล่านี้

บทความที่เกี่ยวข้อง