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

PowerShell: วิธีใช้ Group-Object ที่มีคุณสมบัติหลายรายการ


บ่อยครั้งที่คุณอาจต้องการใช้ cmdlet Group-Object ใน PowerShell เพื่อจัดกลุ่มตามคุณสมบัติหลายรายการ จากนั้นจึงทำการคำนวณ

คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการดังกล่าว:

Import-Csv $my_file |
Group-Object -Property Team,Position |
% {$b=$_.name -split ', ';$c=($_.group |
Measure-Object -Property Points -Sum).Sum;
[PScustomobject]@{Team=$b[0];Position=$b[1];Sum=$c}}

ตัวอย่างนี้มีดังต่อไปนี้:

  • นำเข้าไฟล์ CSV ที่ระบุในเส้นทางในตัวแปร $my_file
  • จัดกลุ่มตามค่าในคอลัมน์ ทีม และ ตำแหน่ง
  • คำนวณผลรวมของคอลัมน์ คะแนน จัดกลุ่มตาม ทีม และ ตำแหน่ง
  • แสดงผลผลลัพธ์ในตารางโดยใช้ PScustomobject

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีใช้ Group-Object ที่มีคุณสมบัติหลายรายการใน PowerShell

สมมติว่าเรามีไฟล์ CSV ที่บันทึกไว้ในตำแหน่งต่อไปนี้:

c:\users\bobbi\player_data.csv

สมมติว่าเราใช้ Import-Csv cmdlet เพื่อดูเนื้อหาของไฟล์ทั้งหมดนี้:

ไฟล์ประกอบด้วยสามคอลัมน์ที่แสดง ทีม, ตำแหน่ง และ คะแนน ที่ได้คะแนนจากบาสเก็ตบอลต่างๆ ผู้เล่น

สมมติว่าเราต้องการจัดกลุ่มแถวตามค่าในคอลัมน์ ทีม และ ตำแหน่ง จากนั้นคำนวณผลรวมของค่าในคอลัมน์ คะแนน .

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการดังกล่าว:

Import-Csv $my_file |
Group-Object -Property Team,Position |
% {$b=$_.name -split ', ';$c=($_.group |
Measure-Object -Property Points -Sum).Sum;
[PScustomobject]@{Team=$b[0];Position=$b[1];Sum=$c}}

ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:

ผลลัพธ์จะแสดงผลรวมของค่าในคอลัมน์ คะแนน ซึ่งจัดกลุ่มตามค่าในคอลัมน์ ทีม และ ตำแหน่ง

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ผลรวมคะแนนสำหรับ Mavs Guards คือ 36
  • ผลรวมคะแนนสำหรับ Mavs Forwards คือ 42
  • ผลรวมคะแนนของสเปอร์สการ์ดคือ 24
  • คะแนนรวมของสเปอร์สฟอร์เวิร์ดสคือ 25

โปรดทราบว่าในตัวอย่างนี้ เราจัดกลุ่มตามคุณสมบัติสองรายการ แต่คุณสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อจัดกลุ่มตามคุณสมบัติได้มากเท่าที่คุณต้องการ

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