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

