PowerShell: วิธีลบรายการที่ซ้ำกันออกจากอาร์เรย์
PowerShell เป็นภาษาสคริปต์อันทรงพลังที่ใช้กันอย่างแพร่หลายในอุตสาหกรรมไอทีเพื่อทำให้งานเป็นอัตโนมัติ เป็นเชลล์บรรทัดคำสั่งและภาษาสคริปต์ที่สร้างขึ้นบนเฟรมเวิร์ก .NET งานทั่วไปอย่างหนึ่งที่มืออาชีพทำใน PowerShell คือการทำงานกับอาร์เรย์ อาร์เรย์คือชุดของข้อมูลที่สามารถจัดเก็บไว้ในตัวแปรเดียวและสามารถเข้าถึงได้โดยใช้ดัชนี การเรียงลำดับรายการที่ซ้ำกันออกจากอาร์เรย์อาจเป็นเรื่องที่น่าเบื่อและใช้เวลานานสำหรับผู้เขียนโค้ด โชคดีที่ PowerShell นำเสนอโซลูชันที่ใช้งานง่ายสำหรับการลบรายการที่ซ้ำกันออกจากอาร์เรย์ ในโพสต์บล็อกนี้ เราจะสำรวจวิธีลบรายการที่ซ้ำกันออกจากอาร์เรย์ใน PowerShell และปรับปรุงประสิทธิภาพการเขียนโค้ดของคุณ
ทำความเข้าใจกับรายการที่ซ้ำกันในอาร์เรย์
พูดง่ายๆ ก็คือ อาร์เรย์ถูกใช้เพื่อจัดเก็บรายการข้อมูลในลักษณะที่มีการจัดระเบียบในตัวแปร อาร์เรย์ที่ซ้ำกันเกิดขึ้นเมื่อมีมากกว่าหนึ่งองค์ประกอบที่มีค่าเท่ากัน ซึ่งอาจทำให้เกิดปัญหาเมื่อทำงานกับอาร์เรย์ได้ เนื่องจากอาจทำให้เกิดผลลัพธ์ที่ไม่ถูกต้องหรือข้อผิดพลาดได้ ดังนั้นการลบรายการที่ซ้ำกันออกจากอาร์เรย์จึงเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าข้อมูลมีความถูกต้อง นั่นคือสิ่งที่ PowerShell มีประโยชน์!
วิธีการลบรายการที่ซ้ำกันออกจากอาร์เรย์ใน PowerShell
มีหลายวิธีในการลบรายการที่ซ้ำกันออกจากอาร์เรย์ใน PowerShell ต่อไปนี้เป็นวิธีการทั่วไปบางส่วน:
วิธีที่ 1: การใช้ Select-Object Cmdlet เพื่อรับค่าที่ไม่ซ้ำ
Select-Object cmdlet ใช้เพื่อเลือกคุณสมบัติเฉพาะของวัตถุ นอกจากนี้ยังสามารถใช้เพื่อรับค่าที่ไม่ซ้ำจากอาร์เรย์ได้อีกด้วย หากต้องการใช้ Select-Object cmdlet เพื่อรับค่าที่ไม่ซ้ำจากอาร์เรย์ คุณสามารถใช้คำสั่งต่อไปนี้:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Select-Object -Unique
คำสั่งนี้จะลบรายการที่ซ้ำกันทั้งหมดออกจากอาร์เรย์และเหลือเฉพาะองค์ประกอบเฉพาะของอาร์เรย์เท่านั้น
เอาท์พุต :
1
2
3
4
5
6
7
นี่เป็นอีกตัวอย่างหนึ่งของการรับค่าที่ไม่ซ้ำจากอาร์เรย์สตริง:
# Sample string array with duplicates
$StringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "PowerShell"
# Create a new array to store unique strings
$UniqueArray = $StringArray | Select-Object -Unique
# Output the unique array
$UniqueArray
เอาท์พุต :
SharePoint
Microsoft 365
PowerShell
วิธีที่ 2: การใช้ Sort-Object Cmdlet เพื่อลบรายการที่ซ้ำกัน
Sort-Object cmdlet ใช้เพื่อเรียงลำดับวัตถุตามคุณสมบัติอย่างน้อยหนึ่งอย่าง นอกจากนี้ยังสามารถใช้เพื่อลบรายการที่ซ้ำกันออกจากอาร์เรย์ได้ หากต้องการใช้ Sort-Object cmdlet เพื่อลบรายการที่ซ้ำกันออกจากอาร์เรย์ คุณสามารถใช้คำสั่งต่อไปนี้:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Sort-Object -Unique
หากคุณต้องการดำเนินการลบรายการที่ซ้ำกันโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ นี่คือตัวอย่าง:
# Sample string array with duplicates
$stringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "powershell"
# Create a new array to store unique strings
$uniqueArray = $stringArray | sort-Object -CaseSensitive -Unique
# Output the unique array
$uniqueArray
เอาท์พุต :
Microsoft 365
powershell
PowerShell
SharePoint
วิธีที่ 3: การใช้ Get-Unique Cmdlet เพื่อลบรายการที่ซ้ำกัน
PowerShell มอบวิธีที่ง่ายและมีประสิทธิภาพในการลบรายการที่ซ้ำกันออกจากอาร์เรย์โดยใช้ Get-Unique cmdlet อย่างไรก็ตาม โปรดทราบว่า Get-Unique ใช้ได้กับรายการที่จัดเรียงเท่านั้น หากคุณไม่แน่ใจว่ารายการของคุณเรียงลำดับแล้วหรือไม่ คุณสามารถใช้ Sort-Object ก่อน Get-Unique หากต้องการใช้ Get-Unique cmdlet เพื่อลบรายการที่ซ้ำกันออกจากอาร์เรย์ คุณสามารถใช้คำสั่งต่อไปนี้:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$UniqueArray = $array | Sort-Object | Get-Unique
$UniqueArray # Outputs: 1 2 3 4 5 6 7
นี่คือผลลัพธ์ของสคริปต์ข้างต้น:
วิธีค้นหารายการที่ซ้ำกันโดยใช้ Group-Object Cmdlet
Group-Object cmdlet ใช้เพื่อจัดกลุ่มวัตถุตามคุณสมบัติอย่างน้อยหนึ่งอย่าง นอกจากนี้ยังสามารถใช้เพื่อค้นหารายการที่ซ้ำกันในอาร์เรย์ได้อีกด้วย หากต้องการใช้ Group-Object cmdlet เพื่อค้นหารายการที่ซ้ำกันในอาร์เรย์ คุณสามารถใช้คำสั่งต่อไปนี้:
$Array | Group-Object | Where-Object Count -gt 1 | Select-Object Name
คำสั่งนี้จะจัดกลุ่มองค์ประกอบในอาร์เรย์ตามค่าและนับจำนวนครั้งที่แต่ละค่าปรากฏ จากนั้นจะเลือกค่าที่ปรากฏมากกว่าหนึ่งครั้ง
การรวมวิธีการสำหรับอาร์เรย์ที่ซับซ้อนมากขึ้น
สำหรับอาร์เรย์ที่ซับซ้อนมากขึ้น อาจจำเป็นต้องรวมวิธีการลบรายการที่ซ้ำกัน ตัวอย่างเช่น ถ้าคุณมีอาร์เรย์ของออบเจ็กต์ และต้องการลบรายการที่ซ้ำกันตามคุณสมบัติเฉพาะ คุณสามารถใช้คำสั่งต่อไปนี้:
$Array | Sort-Object -Property PropertyName -Unique | Select-Object PropertyName, Property1, Property2
นี่คือตัวอย่าง:
# Array with duplicate objects
$ObjectArray = @(
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Jane"
Age = 30
Desgination = "Analyst"
},
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Alex"
Age = 35
Desgination = "Engineer"
}
)
#Select unique objects from the array based on Name property
$objectArray | Sort-Object -Property Name -Unique | Select-Object Name, Age
เอาท์พุต :
Name Age
---- ---
Alex 35
Jane 30
John 25
คำสั่งนี้จะเรียงลำดับออบเจ็กต์ในอาร์เรย์ตามคุณสมบัติ PropertyName เก็บเฉพาะรายการแรกที่ปรากฏ และลบรายการที่ซ้ำกันตามคุณสมบัตินั้น จากนั้นจะเลือกคุณสมบัติ PropertyName, Property1 และ Property2 ของแต่ละอ็อบเจ็กต์
บทสรุป
การลบรายการที่ซ้ำกันออกจากอาร์เรย์ใน PowerShell เป็นงานประจำที่คุณอาจต้องดำเนินการเป็นประจำ มีหลายวิธีในการลบรายการที่ซ้ำกันออกจากอาร์เรย์ รวมถึงการใช้ Select-Object cmdlet, Sort-Object cmdlet, Get-Unique cmdlet และ Group-Object cmdlet การทำความเข้าใจเทคนิคเหล่านี้จะช่วยให้คุณจัดการกับความท้าทายในอนาคตที่อาจเกิดขึ้นกับการซ้ำซ้อนในอาร์เรย์ของคุณ และช่วยปรับปรุงประสิทธิภาพการเขียนโค้ดและประหยัดเวลา

