วิธีจัดเรียงอาร์เรย์ของวัตถุใน PowerShell
หากต้องการเรียงลำดับอาร์เรย์ของวัตถุ PowerShell จัดเตรียม Sort-Object cmdlet ในบทช่วยสอน PowerShell นี้ เราจะสำรวจวิธีใช้ cmdlet นี้เพื่อจัดเรียงอาร์เรย์ของวัตถุใน PowerShell ด้วยตัวอย่างจริง
หากต้องการเรียงลำดับอาร์เรย์ของวัตถุใน PowerShell ให้ใช้ Sort-Object cmdlet ระบุชื่อคุณสมบัติที่จะเรียงลำดับ ตัวอย่างเช่น $arrayOfObjects | Sort-Object -Property PropertyName เรียงลำดับอาร์เรย์ตาม 'PropertyName' คุณสามารถจัดเรียงคุณสมบัติได้หลายรายการและเรียงลำดับจากน้อยไปหามากและจากมากไปน้อย
วัตถุและอาร์เรย์ใน PowerShell คืออะไร
ให้เราเข้าใจวัตถุและอาร์เรย์ใน PowerShell ก่อน ใน PowerShell ทุกอย่างเป็นวัตถุ วัตถุคือโครงสร้างข้อมูลที่จัดเก็บข้อมูล (คุณสมบัติ) และการดำเนินการ (วิธีการ) อาร์เรย์คือชุดของวัตถุที่สามารถเป็นประเภทเดียวกันหรือประเภทที่แตกต่างกันได้
PowerShell เรียงลำดับวัตถุ Cmdlet
Sort-Object cmdlet เป็นเครื่องมือหลักสำหรับการเรียงลำดับใน PowerShell โดยจะเรียงลำดับวัตถุตามลำดับจากน้อยไปมากหรือจากมากไปหาน้อยโดยยึดตามค่าคุณสมบัติอย่างน้อยหนึ่งค่า
การเรียงลำดับขั้นพื้นฐาน
รูปแบบการเรียงลำดับที่ง่ายที่สุดด้วย Sort-Object คือการใช้คุณสมบัติเดียวใน PowerShell นี่คือตัวอย่าง:
$people = @(
[PSCustomObject]@{Name='Alice'; Age=25},
[PSCustomObject]@{Name='Bob'; Age=30},
[PSCustomObject]@{Name='Charlie'; Age=22}
)
$sortedPeople = $people | Sort-Object -Property Age
$sortedPeople
สคริปต์ด้านบนจะสร้างอาร์เรย์ของออบเจ็กต์แบบกำหนดเอง โดยแต่ละออบเจ็กต์แสดงถึงบุคคลที่มีชื่อและอายุ เมื่อใช้ Sort-Object เราจะจัดเรียงอาร์เรย์ตามคุณสมบัติ Age ตามค่าเริ่มต้น การเรียงลำดับจะเรียงลำดับจากน้อยไปหามาก
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
การเรียงลำดับจากมากไปหาน้อย
หากต้องการเรียงลำดับอาร์เรย์ของวัตถุตามลำดับจากมากไปน้อยใน PowerShell ให้ใช้สวิตช์ -Descending:
$sortedPeopleDescending = $people | Sort-Object -Property Age -Descending
$sortedPeopleDescendingจัดเรียงตามคุณสมบัติหลายรายการ
คุณยังสามารถจัดเรียงตามคุณสมบัติหลายรายการได้โดยส่งรายการที่คั่นด้วยเครื่องหมายจุลภาคไปยังพารามิเตอร์ -Property
นี่คือตัวอย่างการจัดเรียงอาร์เรย์ของวัตถุใน PowerShell ตามพารามิเตอร์หลายตัว
$sortedPeopleMultiple = $people | Sort-Object -Property Age, Name
$sortedPeopleMultipleวิธีนี้จะเรียงลำดับผู้คนตามอายุก่อนแล้วจึงตามชื่อภายในแต่ละกลุ่มอายุ
การเรียงลำดับแบบกำหนดเองด้วยบล็อกสคริปต์
สำหรับกฎการเรียงลำดับที่ซับซ้อนยิ่งขึ้น คุณสามารถใช้บล็อกสคริปต์ได้ บล็อกสคริปต์ช่วยให้คุณสามารถระบุนิพจน์สำหรับการเรียงลำดับ:
$sortedPeopleScriptBlock = $people | Sort-Object -Property { $_.Name.Length }
$sortedPeopleScriptBlockวิธีนี้จะเรียงลำดับบุคคลตามความยาวของชื่อ
เทคนิคการเรียงลำดับขั้นสูง
การเรียงลำดับแบบคำนึงถึงขนาดตัวพิมพ์
การเรียงลำดับของ PowerShell คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยค่าเริ่มต้น หากต้องการดำเนินการเรียงลำดับตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คุณสามารถใช้บล็อกสคริปต์และวิธี ToLower() หรือ ToUpper():
$sortedPeopleCaseInsensitive = $people | Sort-Object -Property { $_.Name.ToLower() }
$sortedPeopleCaseInsensitiveการเรียงลำดับด้วยออบเจ็กต์ที่กำหนดเองและแฮชเทเบิล
บางครั้งคุณอาจต้องจัดเรียงตามคุณสมบัติที่ไม่สามารถเข้าถึงได้โดยตรงหรือไม่มีอยู่ ในกรณีเช่นนี้ คุณสามารถสร้างคุณสมบัติที่กำหนดเองได้ทันทีโดยใช้แฮชเทเบิล:
$sortedPeopleCustomProperty = $people | Sort-Object -Property @{Expression={$_.Name.Length}; Ascending=$true}
$sortedPeopleCustomPropertyวิธีนี้จะจัดเรียงบุคคลตามความยาวของชื่อ คล้ายกับตัวอย่างบล็อกสคริปต์ แต่มีรายละเอียดมากกว่าและอนุญาตให้มีตัวเลือกเพิ่มเติม เช่น การระบุทิศทางของการเรียงลำดับต่อคุณสมบัติ
- เมื่อทำการเรียงลำดับ ตรวจสอบให้แน่ใจเสมอว่าคุณสมบัติที่คุณกำลังเรียงลำดับนั้นมีอยู่ในอ็อบเจ็กต์ทั้งหมดในอาร์เรย์
- โปรดจำไว้ว่า
Sort-Objectจะสร้างอาร์เรย์ที่เรียงลำดับใหม่ มันไม่ได้เรียงลำดับอาเรย์ดั้งเดิมเข้าที่ - ใช้
Get-Membercmdlet เพื่อสำรวจคุณสมบัติที่มีอยู่ในออบเจ็กต์ของคุณ ซึ่งสามารถช่วยให้คุณเข้าใจสิ่งที่คุณจัดเรียงได้
บทสรุป
การเรียงลำดับอาร์เรย์ของวัตถุใน PowerShell นั้นตรงไปตรงมาด้วย Sort-Object cmdlet ไม่ว่าคุณจะเรียงลำดับตามคุณสมบัติเดียว หลายคุณสมบัติ หรือใช้นิพจน์ที่ซับซ้อน Sort-Object มอบความยืดหยุ่นที่จำเป็นสำหรับงานการจัดระเบียบข้อมูลของคุณ
ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีจัดเรียงอาร์เรย์ของออบเจ็กต์ใน PowerShell โดยใช้วิธี sort-object
