ตารางรูปแบบ PowerShell: คู่มือที่ครอบคลุม
ในฐานะผู้ใช้ PowerShell คุณอาจสังเกตเห็นว่ารูปแบบเอาต์พุตเริ่มต้นอาจอ่านและตีความได้ยาก โชคดีที่ PowerShell มีคำสั่ง Format-Table ที่มีประสิทธิภาพ ซึ่งช่วยให้คุณสามารถจัดรูปแบบเอาต์พุตได้อย่างชัดเจนและกระชับ ในคู่มือที่ครอบคลุมนี้ ฉันจะแนะนำคุณอย่างละเอียดเกี่ยวกับ PowerShell Format-Table รวมถึงคุณประโยชน์ เทคนิคขั้นสูง และข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง
ข้อมูลเบื้องต้นเกี่ยวกับตารางรูปแบบ PowerShell
ก่อนที่เราจะเจาะลึกรายละเอียด เรามาเริ่มด้วยพื้นฐานกันก่อน PowerShell Format-Table คือคำสั่งที่ให้คุณแสดงเอาต์พุตของคุณในรูปแบบตาราง ทำให้ง่ายต่อการอ่าน จัดเรียง และกรองข้อมูลของคุณ คำสั่งนี้ใช้งานง่ายและสามารถปรับแต่งให้เหมาะกับความต้องการเฉพาะของคุณได้ นอกจากนี้ยังช่วยให้สามารถปรับแต่งความกว้างของคอลัมน์ การเรียงลำดับ และการแสดงค่าที่คำนวณได้
ข้อดีที่ใหญ่ที่สุดประการหนึ่งของการใช้ PowerShell Format-Table คือ ลดความซับซ้อนของโครงสร้างข้อมูลที่ซับซ้อน ตัวอย่างเช่น หากคุณมีออบเจ็กต์ที่ซับซ้อนซึ่งมีหลายคุณสมบัติ การอ่านเอาต์พุตในรูปแบบเริ่มต้นอาจเป็นเรื่องยาก Format-Table ช่วยให้คุณสามารถเลือกคุณสมบัติที่คุณต้องการแสดงและจัดรูปแบบได้อย่างชัดเจนและรัดกุม
ประโยชน์ของการใช้ PowerShell Format-Table
การใช้ PowerShell Format-Table มีประโยชน์หลายประการ ข้อดีหลักประการหนึ่งคือช่วยให้คุณสามารถปรับแต่งเอาต์พุตให้เหมาะกับความต้องการเฉพาะของคุณได้ คุณสามารถเลือกคุณสมบัติที่คุณต้องการแสดง จัดรูปแบบ และแม้แต่ปรับความกว้างของคอลัมน์ให้พอดีกับข้อมูลของคุณได้
ข้อดีอีกประการหนึ่งของการใช้ PowerShell Format-Table คือทำให้การเรียงลำดับและกรองข้อมูลของคุณง่ายขึ้น คุณสามารถจัดเรียงข้อมูลตามคอลัมน์ใดก็ได้ และกรองข้อมูลได้โดยใช้คำสั่ง Where-Object
PowerShell Format-Table ยังช่วยให้คุณสามารถส่งออกเอาต์พุตของคุณเป็นไฟล์ CSV ซึ่งอาจมีประโยชน์สำหรับการแบ่งปันข้อมูลของคุณกับผู้อื่นหรือนำเข้าไปยังแอปพลิเคชันอื่น
ทำความเข้าใจกับเอาต์พุต PowerShell ไปยังตาราง
ก่อนที่เราจะเจาะลึกข้อมูลเฉพาะของ PowerShell Format-Table สิ่งสำคัญคือต้องเข้าใจว่า PowerShell ส่งออกข้อมูลอย่างไร ตามค่าเริ่มต้น PowerShell จะส่งออกข้อมูลเป็นชุดของออบเจ็กต์ ออบเจ็กต์เหล่านี้สามารถมีคุณสมบัติที่แตกต่างกัน ซึ่งสามารถแสดงได้โดยใช้คำสั่ง Get-Member
ในการแสดงข้อมูลนี้ในรูปแบบตาราง เราใช้คำสั่ง Format-Table คำสั่งนี้ช่วยให้เราสามารถเลือกคุณสมบัติที่เราต้องการแสดงและจัดรูปแบบได้อย่างชัดเจนและรัดกุม ไวยากรณ์พื้นฐานมีดังนี้:
Format-Table [-Property] <String[]> [-AutoSize] [-Wrap] [-RepeatHeader] [-GroupBy <Object[]>] [-HideTableHeaders] [-InputObject <PSObject>] [-Property <String[]>] [-Expand <String[]>] [-ShowError] [-DisplayError] [-View <TableControl>] [<CommonParameters>]
Format-Table cmdlet ประกอบด้วยพารามิเตอร์หลายตัวที่ช่วยให้คุณปรับแต่งข้อมูลเอาต์พุตได้ นี่คือรายละเอียดของพารามิเตอร์ที่สำคัญ:
-Propertyพารามิเตอร์คุณสมบัติระบุคุณสมบัติของวัตถุที่ควรแสดงในตาราง
-AutoSizeปรับความกว้างของคอลัมน์ให้พอดีกับข้อมูลโดยอัตโนมัติ
-Wrapใช้พารามิเตอร์ -Wrap เพื่อตัดข้อความในคอลัมน์ไปยังบรรทัดถัดไปเพื่อให้พอดีกับความกว้างของคอลัมน์
-GroupByพารามิเตอร์จัดกลุ่มข้อมูลตามคุณสมบัติที่ระบุ
-HideTableHeadersซ่อนส่วนหัวของตาราง
-InputObjectระบุข้อมูลอินพุต
การจัดรูปแบบเอาต์พุตด้วย PowerShell Format-Table
ตอนนี้เราเข้าใจพื้นฐานของเอาต์พุต PowerShell และ Format-Table แล้ว เรามาเจาะลึกวิธีจัดรูปแบบเอาต์พุตของคุณโดยเฉพาะกันดีกว่า คำสั่ง Format-Table มีหลายตัวเลือกที่ให้คุณปรับแต่งเอาต์พุตของคุณได้
ในการเริ่มต้น มาดูตัวอย่างพื้นฐานกัน สมมติว่าเราต้องการแสดงรายการบริการบนคอมพิวเตอร์ที่มีคุณสมบัติบางอย่าง:
Get-service | select -Property Name, CanShutdown, CanStop, DisplayName, Status, StartType -First 5
ซึ่งจะแสดงรายการคุณสมบัติแต่ละรายการที่ระบุและสร้างเอาต์พุตในรูปแบบรายการดังต่อไปนี้:
จากนั้นเราไพพ์อาร์เรย์ไปที่ Format-Table และระบุคุณสมบัติที่เราต้องการแสดง ผลลัพธ์ควรมีลักษณะดังนี้:
Get-service | select -Property Name, CanShutdown, CanStop, DisplayName, Status, StartType -First 10 | Format-Table
เลือกคอลัมน์เฉพาะจากเอาต์พุต
คุณสามารถใช้ Format-Table cmdlet เพื่อเลือกคอลัมน์ที่ต้องการจากเอาต์พุตของ cmdlet ก่อนหน้า ตัวอย่างเช่น เราสนใจที่จะเห็นเฉพาะคุณสมบัติที่เลือกของออบเจ็กต์ เช่น ชื่อ เวลาที่แก้ไขล่าสุด เวลาที่เข้าถึงล่าสุด และเวลาสร้างของไฟล์และโฟลเดอร์:
Get-ChildItem -Path C:\Windows\System32 | Format-table -Property Name, LastAccessTime,LastWriteTime,CreationTime
การปรับความกว้างของคอลัมน์ใน PowerShell Format-Table
ในบางกรณี ความกว้างของคอลัมน์เริ่มต้นอาจไม่เพียงพอที่จะแสดงข้อมูลของคุณ โชคดีที่ PowerShell Format-Table ช่วยให้คุณสามารถปรับขนาดคอลัมน์ได้โดยใช้พารามิเตอร์ -AutoSize พารามิเตอร์นี้จะปรับความกว้างของคอลัมน์เพื่อลดการตัดทอนให้เหลือน้อยที่สุด และใช้ความกว้างน้อยที่สุดในขณะที่แสดงเนื้อหาทั้งหมด สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณทำงานกับคอลัมน์ข้อมูลที่มีความยาวต่างกัน และคุณต้องการดูข้อมูลให้ได้มากที่สุดโดยไม่มีพื้นที่ว่างมากนัก
ตัวอย่างเช่น สมมติว่าเราจำเป็นต้องดึงรายการกระบวนการที่ขึ้นต้นด้วย “Windows” ในชื่อ:
Get-Service -DisplayName Windows* | Format-Table
รหัสนี้ดึงรายการกระบวนการที่มีสามคอลัมน์ อย่างไรก็ตาม ข้อความบางส่วนในคอลัมน์จะถูกตัดให้พอดีกับความกว้างของหน้าจอ คุณยังสามารถใช้นามแฝง FT ได้
เราสามารถไพพ์เอาต์พุตนี้ไปที่ Format-Table และใช้พารามิเตอร์ -AutoSize เพื่อปรับความกว้างของคอลัมน์:
Get-Service -DisplayName Windows* | Format-Table -AutoSize
ผลลัพธ์ควรมีลักษณะเช่นนี้บนบรรทัดคำสั่ง:
พารามิเตอร์ -AutoSize จะปรับความกว้างของคอลัมน์ให้พอดีกับข้อมูลโดยอัตโนมัติ ซึ่งหมายความว่าคอลัมน์ที่มีข้อมูลที่ยาวกว่าจะกว้างกว่าคอลัมน์ที่มีข้อมูลที่สั้นกว่า เพื่อให้แน่ใจว่าไม่มีการตัดทอนหรือซ่อนข้อมูลใด ๆ
หากต้องการปรับความกว้างคอลัมน์ของข้อมูลด้วยตนเอง เพียงระบุชื่อคุณสมบัติที่คุณต้องการปรับ ตามด้วยความกว้างที่ต้องการเป็นอักขระ ตัวอย่างเช่น หากต้องการปรับความกว้างของคุณสมบัติ Display Name เป็น 10 อักขระ (อย่างน้อย!) คุณจะต้องใช้คำสั่งต่อไปนี้:
Get-Service | Select-Object Name, DisplayName, Status |
Format-Table -Property Name,@{Expression={$_.DisplayName};Label="Title";Width=10}, @{Expression={$_.Status};Label="Service Status";Width=10}
พารามิเตอร์ -Wrap ช่วยให้คุณสร้างตารางที่ครอบคลุมหลายบรรทัด นี่คือตัวอย่าง:
การส่งออกเอาต์พุต PowerShell เป็น CSV ด้วย Format-Table
การส่งออกเอาต์พุต PowerShell เป็น CSV ช่วยให้คุณสามารถแบ่งปันข้อมูลกับผู้อื่นได้อย่างง่ายดาย ด้วยการส่งออกเอาต์พุตเป็น CSV คุณสามารถสร้างไฟล์ที่สามารถเปิดได้ใน Microsoft Excel หรือโปรแกรมสเปรดชีตอื่นๆ สิ่งนี้มีประโยชน์อย่างเหลือเชื่อเมื่อแบ่งปันข้อมูลกับเพื่อนร่วมงานหรือวิเคราะห์ข้อมูลในลักษณะที่ละเอียดยิ่งขึ้น
อย่างไรก็ตาม ตารางรูปแบบมีไว้สำหรับการจัดรูปแบบเอาต์พุตสำหรับจอแสดงผลคอนโซลเป็นหลัก เมื่อคุณต้องการส่งออกข้อมูลเป็น CSV คุณควรทำงานกับออบเจ็กต์ดิบ (เช่นที่ส่งคืนโดย Select-Object) และส่งต่อโดยตรงไปยัง Export-Csv หากต้องการส่งออกเอาต์พุต PowerShell เป็น CSV ด้วย Format-Table เพียงไพพ์เอาต์พุตจาก Select-Object ไปยัง Export-Csv cmdlet คุณสามารถระบุชื่อและตำแหน่งของไฟล์ CSV ได้โดยใช้พารามิเตอร์ -Path
สมมติว่าคุณเป็นผู้ดูแลระบบ และต้องการตรวจสอบซอฟต์แวร์ที่ติดตั้งบนเครื่องในองค์กรของคุณ คุณสนใจคุณสมบัติ DisplayName, Version และ Publisher ของซอฟต์แวร์ที่ติดตั้งเป็นพิเศษ คุณตัดสินใจที่จะใช้ PowerShell เพื่อดึงข้อมูลนี้และส่งออกเป็นไฟล์ CSV เพื่อการวิเคราะห์เพิ่มเติมหรือแชร์กับทีมของคุณ
นี่คือวิธีที่คุณสามารถบรรลุเป้าหมายนี้:
# Fetch the installed software details
$softwareInfo = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -Ne $Null}
#Display the Result in console with Format-Table
$softwareInfo | Format-Table DisplayName, DisplayVersion, Publisher
# Export the information to a CSV file
$softwareInfo | Select-Object DisplayName, DisplayVersion, Publisher | Export-Csv -Path 'C:\Temp\InstalledSoftware.csv' -NoTypeInformation
จุดสำคัญที่ควรทราบคือ คุณไม่ใช้ Format-Table เมื่อส่งออกเป็นไฟล์ CSV การใช้ Format-Table ก่อน Export-Csv จะไม่เหมาะสมและจะไม่ให้ผลลัพธ์ CSV ที่คาดหวัง
การเรียงลำดับข้อมูลใน PowerShell Format-Table
การเรียงลำดับข้อมูลใน PowerShell Format-Table เป็นคุณสมบัติที่มีประโยชน์ที่ช่วยให้คุณระบุแนวโน้มและรูปแบบในชุดข้อมูลขนาดใหญ่ได้อย่างรวดเร็ว ตามค่าเริ่มต้น PowerShell Format-Table จะเรียงลำดับข้อมูลตามคอลัมน์แรกของตาราง อย่างไรก็ตาม คุณยังสามารถเรียงลำดับข้อมูลตามคอลัมน์อื่นๆ ได้โดยใช้ Sort-Object cmdlet
หากต้องการเรียงลำดับข้อมูลใน PowerShell Format-Table เพียงไพพ์เอาต์พุตคำสั่งไปที่ Sort-Object ก่อนที่จะใช้ Format-Table ตัวอย่างเช่น เมื่อต้องการเรียงลำดับผลลัพธ์ของ Get-Process cmdlet ตามการใช้งาน CPU คุณจะต้องใช้คำสั่งต่อไปนี้:
Get-Process | Select-Object Name, CPU, WorkingSet | Sort-Object -Property CPU -Descending | Format-Table
เอาต์พุตในคอนโซล PowerShell:
ในทำนองเดียวกัน หากต้องการกรองข้อมูลของคุณ คุณสามารถใช้ Where-Object cmdlet ร่วมกับ Format-Table ได้ ซึ่งจะทำให้คุณสามารถระบุเกณฑ์ที่ข้อมูลต้องเป็นไปตามเพื่อที่จะรวมไว้ในเอาต์พุต ตัวอย่างเช่น หากคุณต้องการแสดงเฉพาะกระบวนการที่ใช้หน่วยความจำมากกว่าจำนวนที่กำหนด คุณสามารถใช้คำสั่งต่อไปนี้:
Get-Process | Where-Object { $_.WorkingSet -gt 1GB } | Format-Table
วิธีนี้จะกรองรายการกระบวนการและแสดงเฉพาะกระบวนการที่มีขนาดชุดการทำงานมากกว่า 1GB ด้วยการรวมการเรียงลำดับและการกรองเข้ากับความสามารถในการจัดรูปแบบของ Format-Table คุณสามารถจัดการและแสดงข้อมูลของคุณในลักษณะที่ทั้งดึงดูดสายตาและให้ข้อมูลได้อย่างง่ายดาย
พารามิเตอร์ GroupBy ในรูปแบบตาราง cmdlet
พารามิเตอร์ GroupBy ใน Format-Table จะแยกเอาต์พุตออกเป็นตารางตามค่าคุณสมบัติ หากต้องการใช้ GroupBy ผลลัพธ์ของคำสั่งเดิมจะต้องถูกส่งไปยัง Sort-Object ก่อน ซึ่งช่วยให้สามารถสร้างตารางแยกกันสำหรับแต่ละกลุ่มตามคุณสมบัติเฉพาะ
Get-Process | Sort-Object -Property basepriority | Format-Table -GroupBy basepriority -Wrap
เอาท์พุต :
วิธีใช้นิพจน์รูปแบบ-ตารางเพื่อสร้างคอลัมน์แบบกำหนดเอง
คำสั่ง PowerShell Format-Table สามารถใช้เพื่อสร้างชื่อคอลัมน์แบบกำหนดเองได้โดยใช้ค่าจากการคำนวณกับตารางแฮช พารามิเตอร์ Expression ของ Format-Table ช่วยให้สามารถตั้งชื่อคอลัมน์แบบกำหนดเองและแสดงค่าคอลัมน์จากการคำนวณได้ ตัวอย่างสาธิตวิธีการเปลี่ยนชื่อคอลัมน์ในผลลัพธ์ของคำสั่ง Get-Service ด้วยบล็อกสคริปต์:
Get-Service | Select-Object Name, DisplayName, Status |
Format-Table -Property Name,@{Expression={$_.DisplayName};Label="Title"}, @{Expression={$_.Status};Label="Service Status"}
นี่เป็นอีกตัวอย่างหนึ่งของการสร้างคอลัมน์ใหม่ด้วยการคำนวณ:
Get-Process | Where {$_.StartTime -ne $null} |
Format-Table ProcessName, @{Label="Running Time"; Expression={(get-date) - $_.StartTime}}
ในตัวอย่างนี้ เราได้เพิ่มคุณสมบัติจากการคำนวณ "เวลาทำงาน" เพื่อค้นหาเวลาทำงานทั้งหมด
ห่อ
ในคู่มือที่ครอบคลุมนี้ เราได้สำรวจทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการใช้ PowerShell Format-Table ให้เต็มศักยภาพ ตั้งแต่การทำความเข้าใจเอาต์พุต PowerShell ไปจนถึงการจัดรูปแบบเอาต์พุตเป็นตาราง การปรับความกว้างของคอลัมน์ และการส่งออกเอาต์พุตเป็น CSV เราได้ครอบคลุมพื้นฐานทั้งหมดแล้ว นอกจากนี้เรายังได้สำรวจเทคนิคขั้นสูงบางอย่าง เช่น การเรียงลำดับ การจัดกลุ่ม การแสดงค่าที่คำนวณได้ และการสร้างชื่อคอลัมน์ที่กำหนดเอง การทำความเข้าใจและการใช้คำสั่ง Format-Table เป็นสิ่งจำเป็นสำหรับการพัฒนาสคริปต์ PowerShell โดยเฉพาะอย่างยิ่งสำหรับวัตถุประสงค์ในการรายงาน ด้วยการทำตามตัวอย่างที่อธิบายไว้ในคู่มือนี้ คุณจะเชี่ยวชาญรูปแบบ-ตารางและใช้งานได้อย่างมีประสิทธิภาพในสคริปต์ PowerShell ของคุณ
คำถามที่พบบ่อย:
จะจัดรูปแบบเอาต์พุตคำสั่ง PowerShell เป็นตารางได้อย่างไร
หากต้องการจัดรูปแบบเอาต์พุตของคำสั่ง PowerShell เป็นตาราง คุณสามารถใช้ Format-Table cmdlet cmdlet นี้ช่วยให้คุณสามารถระบุคุณสมบัติที่คุณต้องการแสดงและปรับแต่งลักษณะที่ปรากฏของตารางได้ ตัวอย่างเช่น:
Get-Process | Format-Table Name, CPU
By using the Format-Table cmdlet, you can present your data in a clear and organized manner.








