วิธีการส่งออกการตอบสนอง Invivo-MgGraphRequest เป็นวัตถุ PowerShell
Invivo-MgGraphRequest ด้วย Microsoft Graph PowerShell เป็น cmdlet ที่ยืดหยุ่นซึ่งช่วยให้คุณทำการเรียก Microsoft Graph API ได้เกือบทุกครั้ง และทำหน้าที่เป็นตัวรับทั้งหมดสำหรับพื้นที่ที่ Microsoft Graph PowerShell SDK ไม่ครอบคลุม หากต้องการทราบรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้คำสั่งโดยเฉพาะ โปรดดูโพสต์ของฉันที่นี่
ปัญหาประการหนึ่งของคำสั่งนี้ แม้ว่าในกรณีส่วนใหญ่จะมีประโยชน์ก็ตาม ก็คือ โดยค่าเริ่มต้นเมื่อคุณส่งคำขอ GET ไปยัง Microsoft Graph การตอบกลับของคุณจะถูกส่งกลับหาคุณในรูปแบบแฮชเทเบิลซึ่งไม่มีประโยชน์เท่ากับคำสั่งอื่นๆ ที่มีให้ รูปแบบ มาดูกันว่าเราจะรับการตอบกลับในรูปแบบที่สามารถจัดการได้มากขึ้น เช่น PowerShell Objects ได้อย่างไร!
ตรวจสอบประเภทการตอบกลับด้วย '.GetType()'
ขั้นแรก หากต้องการดูว่าการตอบสนองเริ่มต้นต่อคำขอ GET มีลักษณะอย่างไรใน PowerShell เราสามารถประเมินประเภทข้อมูลได้ ที่นี่ฉันจะเชื่อมต่อกับ Microsoft Graph PowerShell และทำการเรียก GET ไปยังปลายทาง /v1.0/me ซึ่งจะดึงข้อมูลผู้ใช้พื้นฐานสำหรับการเข้าสู่ระบบในปัจจุบัน ผู้ใช้
Connect-MgGraph
$dflt= Invoke-MgGraphRequest -uri "https://graph.microsoft.com/v1.0/me" -method GETตอนนี้การตอบสนองของเราถูกบันทึกไว้ในตัวแปรของเรา ด้วยการผนวก .GetType() เข้ากับตัวแปรนั้น เราจึงสามารถตรวจสอบประเภทข้อมูลได้
$default.GetType()
คำตอบของเราจะระบุรายละเอียดชื่อประเภทออบเจ็กต์ ซึ่งในกรณีนี้คือ Hashtable:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
Hashtables อาจเป็นเรื่องยากที่จะสอบถามกับ PowerShell โดยเฉพาะอย่างยิ่งหากคุณไม่ใช่นักพัฒนาเช่นฉัน คุณอาจประสบปัญหาในการทำงานกับประเภทการตอบกลับเริ่มต้น ตัวอย่างเช่น หากคุณต้องการดูค่าของคุณสมบัติเดียวผ่านเครื่องหมายจุด คุณสามารถแสดงเฉพาะ คีย์ หรือ ค่า ของตารางแฮชเท่านั้น
วิธีแก้ปัญหาที่ง่ายกว่า (แต่อาจมีประสิทธิภาพน้อยกว่า) คือการเปลี่ยนประเภทการตอบสนองเป็น PowerShell Object ซึ่งโดยทั่วไปจะใช้งานได้ง่ายกว่า
การเปลี่ยนประเภทเอาต์พุตด้วยพารามิเตอร์ '-OutputType'
พารามิเตอร์ -OutputType ช่วยให้คุณเปลี่ยนวิธี (ประเภท) ข้อมูลที่จะส่งคืนให้คุณในเซสชัน PowerShell พารามิเตอร์รองรับสี่ประเภทที่แตกต่างกัน ได้แก่:
- แฮชตาราง
- HttpResponseMessage
- เจสัน
- PSObject
ประเภทเอาต์พุตที่มีประโยชน์ที่สุดเมื่อทำงานกับ PowerShell คือประเภท PSObject (หรืออย่างน้อยก็สำหรับผู้ดูแลระบบทั่วไป) เมื่อใช้ PowerShell โดยทั่วไปออบเจ็กต์จะใช้งานได้ง่ายกว่า ข้อมูลจะแสดงได้ชัดเจนยิ่งขึ้น และมีโครงสร้างที่ดี นอกจากนี้คุณยังจะพบว่าการแปลงและส่งออกข้อมูลดังกล่าวเป็นไฟล์ CSV นั้นง่ายกว่า ซึ่งมักใช้ในการสร้างรายงาน หากคุณพยายามส่งออกแฮชเทเบิลเป็น CSV แทน คู่คีย์/ค่าจะไม่แสดงอย่างที่ควรจะเป็น
เราสามารถเติม “-OutputType PSObject” ต่อท้ายตัวอย่างข้างต้นเพื่อให้ได้ผลลัพธ์ที่ต้องการ:
$psobj = Invoke-MgGraphRequest -uri "https://graph.microsoft.com/v1.0/me" `
-method GET -OutputType PSObjectมาตรวจสอบประเภทข้อมูลโดยผนวก .GetType() ต่อท้ายตัวแปรของเรา:
$psobj.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object โปรดสังเกตด้านล่างว่าการตอบสนองแตกต่างจากตัวอย่างก่อนหน้าอย่างไร และเราสามารถใช้เครื่องหมายจุดเพื่อดูคุณสมบัติเฉพาะได้
ห่อ
แม้ว่าแฮชเทเบิลจะมีประโยชน์ แต่สำหรับผู้ดูแลระบบ Microsoft 365 ที่ต้องการตีความข้อมูลในลักษณะที่พวกเขาอาจคุ้นเคยอยู่แล้ว ประเภท PSObject จะให้ประสบการณ์ที่ดีที่สุดแก่พวกเขา เมื่อคุณมีข้อมูลเป็นออบเจ็กต์แบบกำหนดเองแล้ว คุณจะสามารถโต้ตอบกับข้อมูลในลักษณะเดียวกับที่คุณทำกับการตอบกลับจาก SDK cmdlets อื่น ๆ เช่น Get-MgUser เป็นต้น

