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

วิธีใช้สวิตช์ -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 มีการสาธิตตัวอย่างทั้งในชีวิตจริงและตัวละครเพื่อช่วยให้คุณเข้าใจวิธีใช้สิ่งนี้ในทางปฏิบัติ

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