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

ตารางรูปแบบ 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.

How do I sort a format table in PowerShell?

To sort a format table in PowerShell, you can use the Sort-Object cmdlet. Here is an example of how to do it:

Get-Process | Sort-Object -Property CPU | Format-Table -AutoSize

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

ฉันจะใช้ส่วนหัวที่กำหนดเองในตารางเอาต์พุต PowerShell ได้อย่างไร

หากต้องการใช้ส่วนหัวแบบกำหนดเองในตารางเอาต์พุต PowerShell คุณสามารถใช้ Select-Object cmdlet ด้วยไวยากรณ์ @{Label=’HeaderName’;Expression={Expression}} จากนั้นไปป์เอาต์พุตไปยัง Format-Table cmdlet ซึ่งจะทำให้คุณสามารถระบุคุณสมบัติที่คุณต้องการแสดงและกำหนดส่วนหัวที่กำหนดเองให้กับคุณสมบัติเหล่านั้นได้ ตัวอย่างเช่น คุณสามารถใช้คำสั่งต่อไปนี้:
Get-Process | เลือกวัตถุ -Property @ {Label="ชื่อกระบวนการ"; Expression={$_.Name}}, @{Label="การใช้งาน CPU"; นิพจน์={$_.CPU}} | Format-Table
โปรดทราบว่าควรใช้ Select-Object cmdlet ก่อน Format-Table เนื่องจากการจัดรูปแบบก่อนการเลือกอาจไม่ให้ผลลัพธ์ที่ต้องการ

วิธีใช้รายการรูปแบบ PowerShell

หากต้องการใช้คำสั่งรายการรูปแบบ PowerShell คุณสามารถเริ่มต้นด้วยการเลือกวัตถุหรือวัตถุที่คุณต้องการจัดรูปแบบ จากนั้น คุณสามารถไพพ์เอาต์พุตไปยังคำสั่ง format-list ตามด้วยพารามิเตอร์หรือคุณสมบัติที่ต้องการ ซึ่งจะแสดงข้อมูลที่เลือกในรูปแบบรายการทำให้อ่านและวิเคราะห์ได้ง่ายขึ้น ตัวอย่างเช่น:

Get-ChildItem -Path C:\Temp | Format-List -Property Root, FullName, Attributes, BaseName, PsDrive, PSIsContainer, PSProvider, Parent, Exists, LastAccessTime,Name,LastWriteTime,CreationTime

PowerShell ทั้งรูปแบบคืออะไร

Format-Wide (เรียกสั้น ๆ ว่า fw) คือ PowerShell cmdlet ที่แสดงคุณสมบัติเดียวของแต่ละอ็อบเจ็กต์ในไปป์ไลน์เป็นรายการแบบกว้าง แทนที่จะเป็นรูปแบบตารางของ Format-Table ควรใช้ Format-Wide เมื่อคุณต้องการแสดงเพียงคุณสมบัติเดียวของแต่ละวัตถุ หากคุณต้องการแสดงคุณสมบัติหลายรายการ คุณควรใช้ Format-Table แทน
Get-ChildItem -Path C:\Temp | Format-Wide -Property FullName

ซึ่งจะแสดงรายการไฟล์และเส้นทางโฟลเดอร์ทั้งหมดโดยใช้ความกว้างเต็มของหน้าต่างคอนโซลของคุณ

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