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

วิธีจัดเรียงอาร์เรย์ของวัตถุใน 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-Member cmdlet เพื่อสำรวจคุณสมบัติที่มีอยู่ในออบเจ็กต์ของคุณ ซึ่งสามารถช่วยให้คุณเข้าใจสิ่งที่คุณจัดเรียงได้

บทสรุป

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

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีจัดเรียงอาร์เรย์ของออบเจ็กต์ใน PowerShell โดยใช้วิธี sort-object

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