วิธีใช้สวิตช์ -ExpandProperty กับ PowerShell
สวิตช์ -ExpandProperty ใน PowerShell ช่วยให้คุณสามารถแยกค่าของคุณสมบัติเฉพาะและสามารถนำไปใช้กับสถานการณ์ที่แตกต่างกันได้ ในบทช่วยสอนนี้ ฉันจะอธิบายให้คุณทราบว่าสวิตช์ -ExpandProperty ทำอะไรได้บ้าง และสวิตช์นี้แตกต่างจากสวิตช์ -Property อย่างไร นอกจากนี้ ฉันจะดูตัวอย่างที่เป็นประโยชน์ต่างๆ เพื่อสาธิตวิธีที่คุณสามารถใช้สวิตช์ -ExpandProperty ในคำสั่งหรือสคริปต์ต่างๆ
ความต้องการของระบบ
หากต้องการเรียกใช้คำสั่งในบทช่วยสอนนี้ คุณควรใช้งาน PowerShell เวอร์ชัน 5.1 เป็นอย่างน้อย และใช้อุปกรณ์ Windows 10 หรือ 11 ฉันยังให้ตัวอย่างบางส่วนโดยใช้ cmdlets ที่พบในโมดูล Microsoft Graph PowerShell เทียบกับ Microsoft 365 ดังนั้น คุณสามารถดูบทช่วยสอนของฉันเกี่ยวกับวิธีการติดตั้งโมดูล Microsoft Graph PowerShell ได้
เกี่ยวกับสวิตช์ -ExpandProperty
สวิตช์ -ExpandProperty เป็นของ Select-Object cmdlet เมื่อใช้สวิตช์นี้ เป็นการบ่งชี้ว่าจะต้องพยายามขยายคุณสมบัติของวัตถุ หากคุณสมบัติที่เลือกนั้นอยู่ในอาร์เรย์ ค่าของอาร์เรย์จะถูกส่งกลับ ในขณะที่หากคุณสมบัติที่เลือกเป็นวัตถุ คุณสมบัติของวัตถุนั้นจะถูกส่งกลับสำหรับทุกคุณสมบัติที่ป้อน
ตัวอย่างการใช้สวิตช์ -ExpandProperty
มาดูตัวอย่างวิธีการใช้สวิตช์ -ExpandProperty กัน ก่อนอื่นฉันจะสร้างออบเจ็กต์สาธิต จากนั้นฉันจะใช้ตัวอย่างจริงบางส่วนที่อาจเป็นประโยชน์
ตัวอย่างคุณสมบัติขยายที่ 1
ฉันจะเริ่มต้นด้วยการสร้างออบเจ็กต์ "สาธิต" ใหม่ชื่อ $Object1 ภายในออบเจ็กต์นี้ ฉันได้รวมคุณสมบัติ Neighbours ซึ่งเป็น ArrayList ของตัวเลขไว้ด้วย
$Object1 = [PSCustomObject]@{
Name = "House"
HouseNumber = "133"
Neighbours = [System.Collections.ArrayList]@(
132, 134
)
}
เราสามารถดูวัตถุในคอนโซลของเราได้โดยเพียงแค่ป้อนชื่อวัตถุ ดูว่าคุณสมบัติเพื่อนบ้านแสดงบนบรรทัดเดียวอย่างไร
สวิตช์ -ExpandProperty ในกรณีนี้สามารถช่วยแยกค่าของอาร์เรย์ Neighbors ได้
$object1 | Select -ExpandProperty Neighboursตอนนี้เราได้ขยายคุณสมบัติ Neighbours แล้ว เราจะส่งคืนค่าภายในอาร์เรย์ เนื่องจากตอนนี้เรามีค่าแล้ว เราสามารถดำเนินการแยกกันหรือแต่ละรายการหรือดำเนินการแต่ละรายการแยกกันในลูปได้
ลองยกตัวอย่างนี้ไปอีกขั้นหนึ่ง ด้านล่างฉันได้เปลี่ยนคุณสมบัติ เพื่อนบ้าน เป็นออบเจ็กต์ที่กำหนดเอง และฝังรายชื่ออาร์เรย์ไว้ในคุณสมบัติ สมาชิก
$object2 = [PSCustomObject]@{
Name = "House"
HouseNumber = "133"
Neighbours = [PSCustomObject]@{
HouseNumber = "122"
Members = [System.Collections.ArrayList]@("Daniel", "Jas")
Car = "Audi"
}
}ถ้าเราพิมพ์ $Object2 ลงในคอนโซลของเรา เราจะได้ผลลัพธ์ด้านล่าง ซึ่งชัดเจนว่ามีข้อมูลที่ซ้อนกันอยู่ภายในวัตถุ Neighbours ซึ่งไม่สามารถอ่านได้ทันที
ข้อมูลนี้สามารถดึงออกมาได้โดยใช้สวิตช์ -ExpandProperty
$object2 | Select -ExpandProperty Neighboursคุณจะเห็นได้ว่าเราได้ขยายวัตถุ Neighbours แล้ว เราจะส่งคืนคุณสมบัติของวัตถุนั้น
หากคุณต้องการเลือกเฉพาะค่าของรายชื่อสมาชิก วิธีที่ง่ายที่สุดคือการล้อมคำสั่งไว้ในวงเล็บและเลือกคุณสมบัติ Members ตามที่ฉันได้ดำเนินการในตัวอย่างด้านล่าง
($object2 | Select -ExpandProperty Neighbours).Membersเนื้อหาที่อยู่ในวงเล็บจะถูกดำเนินการก่อน จากนั้นเราสามารถเลือกคุณสมบัติของสมาชิกของผลลัพธ์ที่จะส่งออกไปยังเซสชันของเรา
ตัวอย่างคุณสมบัติขยายที่ 2
ในตัวอย่างนี้ เราจะใช้ Get-ComputerInfo cmdlet เพื่อค้นหาข้อมูลเกี่ยวกับระบบปฏิบัติการของคอมพิวเตอร์
ในตอนแรก เราจะใช้ Get-ComputerInfo cmdlet และเลือกคุณสมบัติ OsSuite ที่มีเฉพาะ OS Suites ที่พร้อมใช้งาน
Get-ComputerInfo | Select OsSuitesเราจะเห็นผลลัพธ์ของคำสั่งของเราคือ NoteProperty ทั่วไปที่มีข้อมูลเกี่ยวกับ OS Suites
ในทำนองเดียวกันกับหนึ่งในตัวอย่างก่อนหน้านี้ เราสามารถขยายคุณสมบัตินี้เพื่อดึงเฉพาะค่าของคุณสมบัติ OsSuites
Get-ComputerInfo | Select -ExpandProperty OsSuitesจากผลลัพธ์ด้านล่าง เราจะเห็นได้ว่าตอนนี้เราได้ดึงข้อมูลเฉพาะค่าของคุณสมบัติแล้วเท่านั้น
ตัวอย่างคุณสมบัติขยายที่ 3
ในตัวอย่างสุดท้ายนี้ ฉันใช้คำสั่งจากโมดูล Microsoft Graph PowerShell เพื่อจัดการ Microsoft 365 บทช่วยสอนแบบเต็มของฉันชื่อ; วิธีใช้ Get-MgUser กับ Microsoft Graph PowerShell อธิบายเพิ่มเติมเกี่ยวกับ Get-MgUser cmdlet
ด้านล่างนี้ ฉันกำลังพยายามค้นหาข้อมูล SignInActivity สำหรับผู้ใช้เฉพาะในผู้เช่า Microsoft 365 ของฉัน
get-mguser -userid d3657241-22d5-4606-90b7-ce4d0a52f074 | `
Select SignInActivityอย่างไรก็ตาม เมื่อฉันเลือกคุณสมบัติ SignInActivity ฉันได้สร้างผลลัพธ์ด้วยชื่ออ็อบเจ็กต์: Microsoft.Graph.PowerShell.Models.MicrosoftGraphSignInActivity
ในการค้นหาข้อมูลที่เราต้องการ เราจำเป็นต้องใช้สวิตช์ -ExpandProperty เพื่อส่งคืนข้อมูลภายในวัตถุนี้
get-mguser -userid d3657241-22d5-4606-90b7-ce4d0a52f074 `
-Property signinactivity | Select-Object -ExpandProperty signinactivityเมื่อรันคำสั่งข้างต้นแล้ว คุณจะเห็นได้จากด้านล่างว่าเราสามารถค้นหาข้อมูลที่เราต้องการได้แล้ว
บทสรุป
ในบทช่วยสอนนี้ ฉันได้อธิบายวัตถุประสงค์ของสวิตช์ -ExpandProperty ใน PowerShell ซึ่งเป็นของ Select-Object cmdlet มีการสาธิตตัวอย่างทั้งในชีวิตจริงและตัวละครเพื่อช่วยให้คุณเข้าใจวิธีใช้สิ่งนี้ในทางปฏิบัติ








