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

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

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