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

การเรียนรู้ศิลปะแห่งการกรองเอาต์พุต PowerShell: คู่มือที่ครอบคลุมเพื่อปรับปรุงผลลัพธ์ของคุณ


7 เคล็ดลับเกี่ยวกับวิธีการกรองเอาต์พุต PowerShell อย่างเชี่ยวชาญเหมือนผู้เชี่ยวชาญ

ลองนึกภาพ: คุณกำลังทำงานในโครงการที่สำคัญและต้องการวิธีดึงข้อมูลเฉพาะจากคลังข้อมูลอย่างรวดเร็ว คุณได้หันมาใช้ PowerShell เนื่องจากเป็นที่รู้จักอย่างกว้างขวางในด้านความสามารถในการจัดการงานที่ซับซ้อน แต่ตอนนี้คุณติดอยู่ ไม่แน่ใจว่าจะกรองผลลัพธ์ในลักษณะที่ตรงกับความต้องการของคุณได้อย่างไร ไม่ต้องกังวลอีกต่อไป เพราะในคู่มือที่ครอบคลุมนี้ เราจะเจาะลึกถึงวิธีกรองเอาต์พุต PowerShell อย่างมืออาชีพ!

1. ทำความเข้าใจกับไปป์ไลน์ของ PowerShell

ก่อนที่เราจะเข้าสู่การกรอง จำเป็นต้องเข้าใจแนวคิดของไปป์ไลน์ PowerShell ก่อน คุณลักษณะนี้ช่วยให้คุณสามารถส่งผ่านเอาต์พุตของ cmdlet หนึ่งโดยตรงเป็นอินพุตไปยัง cmdlet อื่นได้ ไปป์ไลน์คือสิ่งที่ช่วยให้คุณสามารถเชื่อมโยงคำสั่งและตัวกรองหลายรายการเข้าด้วยกัน ทำให้เป็นเครื่องมือที่ขาดไม่ได้ในภารกิจของคุณในการกรองเอาต์พุต PowerShell

ตัวอย่างเช่น:

Get-Service | Where-Object {$_.Status -eq “Running”}

ในคำสั่งข้างต้น เราใช้ไปป์ไลน์ (|) เพื่อส่งเอาต์พุตของ Get-Service ไปยัง Where-Object โดยกรองเฉพาะบริการที่มีสถานะ กำลังทำงาน

2. โอบกอดพลังของ Where-Object

Where-Object เป็นหนึ่งใน cmdlet ที่หลากหลายที่สุดเมื่อพูดถึงการกรองเอาต์พุต โดยจะประเมินแต่ละรายการในอินพุตและกรองตามเกณฑ์ที่ระบุ

ไวยากรณ์ :

Where-Object -FilterScript {}

หรือเวอร์ชันชวเลข:

| ? {}

ตัวอย่างเช่น หากต้องการค้นหากระบวนการทั้งหมดที่ใช้หน่วยความจำมากกว่า 100 MB:

Get-Process | Where-Object {$_.WorkingSet -gt 100MB}

3. ใช้ตัวดำเนินการเปรียบเทียบและสัญลักษณ์ตัวแทน

PowerShell มีตัวดำเนินการเปรียบเทียบที่หลากหลายเพื่อดำเนินการกรองที่ซับซ้อน โอเปอเรเตอร์ทั่วไปบางตัวได้แก่:

- -eq: เท่ากับ
- -ne: ไม่เท่ากับ
- -gt: มากกว่า
/> - -lt: น้อยกว่า
- -like: รูปแบบที่ตรงกับไวด์การ์ด
- -notlike: รูปแบบ ไม่ตรงกับไวด์การ์ด

สัญลักษณ์แทนจะใช้ร่วมกับตัวดำเนินการ -like และ -notlike ไวด์การ์ดที่พบบ่อยที่สุดสองตัวคือ * ซึ่งตรงกับอักขระตั้งแต่ศูนย์ขึ้นไป และ ? ซึ่งตรงกับอักขระหนึ่งตัว

ตัวอย่างเช่น หากต้องการค้นหาไฟล์ที่มีนามสกุล .txt:

Get-ChildItem | Where-Object {$_.Name -like “*.txt”}

4. กรองโดยตรงจากพารามิเตอร์ Cmdlet

ในบางกรณี cmdlets มีพารามิเตอร์ในตัวเพื่อกรองเอาต์พุตโดยไม่ต้องใช้ Where-Object ตัวอย่างเช่น Get-EventLog cmdlet มีพารามิเตอร์การกรองหลายรายการ:

Get-EventLog -LogName “Application” -EntryType “Error” -After (Get-Date).AddDays(-1)

คำสั่งนี้ดึงข้อมูลรายการข้อผิดพลาดในบันทึกเหตุการณ์ของแอปพลิเคชันจาก 24 ชั่วโมงที่ผ่านมา

5. ใช้ประโยชน์จาก Select-Object สำหรับเอาต์พุตที่กำหนดเอง

บางครั้ง คุณอาจต้องการแสดงเฉพาะคุณสมบัติเฉพาะในผลลัพธ์ Select-Object คือ cmdlet ที่ช่วยให้คุณสามารถเลือกข้อมูลที่จะแสดงได้

ไวยากรณ์ :

Select-Object -Property , , …

หรือเวอร์ชันชวเลข:

| select , , …

ตัวอย่างเช่น หากต้องการแสดงเฉพาะชื่อกระบวนการและการใช้หน่วยความจำ:

Get-Process | Select-Object -Property ProcessName, WorkingSet

6. ใช้ Group-Object สำหรับข้อมูลที่รวม

Group-Object เป็น cmdlet ที่มีค่าเมื่อคุณต้องการรวบรวมข้อมูลตามคุณสมบัติเฉพาะ ทำให้วิเคราะห์เอาต์พุต PowerShell ได้ง่ายขึ้น

ไวยากรณ์ :

Group-Object -Property [-NoElement]

ตัวอย่างเช่น หากต้องการจัดกลุ่มไฟล์ตามนามสกุลและนับ:

Get-ChildItem | Group-Object -Property Extension -NoElement

7. เรียงลำดับผลลัพธ์ด้วยการเรียงลำดับวัตถุ

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

ไวยากรณ์ :

Sort-Object -Property [-Descending]

ตัวอย่างเช่น หากต้องการเรียงลำดับกระบวนการที่ทำงานอยู่ตามการใช้หน่วยความจำจากมากไปน้อย:

Get-Process | Where-Object {$_.WorkingSet -gt 100MB} | Sort-Object -Property WorkingSet -Descending

บทสรุป

เมื่อคุณได้เรียนรู้สิ่งสำคัญของวิธีกรองเอาต์พุต PowerShell แล้ว คุณก็พร้อมที่จะรับมือกับงานจัดการข้อมูลที่ซับซ้อนได้อย่างง่ายดาย ด้วยการใช้ประโยชน์จาก cmdlets เช่น Where-Object, Select-Object, Group-Object และ Sort-Object คุณ จะกลายเป็นผู้เชี่ยวชาญในการกรองและปรับแต่งเอาต์พุต PowerShell ของคุณในเวลาอันรวดเร็ว ขอให้มีความสุขในการเขียนสคริปต์!

พาวเวอร์เชลล์สวยๆ

การทำงานกับไปป์ไลน์ PowerShell

ฉันจะกรองเอาต์พุตใน PowerShell ได้อย่างไร

ใน PowerShell คุณสามารถกรองผลลัพธ์ได้โดยใช้ cmdlets และเทคนิคต่างๆ หนึ่งในวิธีที่ใช้กันมากที่สุดคือการใช้ cmdlet Where-Object Where-Object cmdlet ช่วยให้คุณสามารถกรองวัตถุตามคุณสมบัติหรือโดยใช้บล็อกสคริปต์แบบกำหนดเอง

เมื่อต้องการใช้ Where-Object cmdlet คุณสามารถปฏิบัติตามไวยากรณ์นี้:

| Where-Object { }

ตัวอย่างเช่น สมมติว่าคุณต้องการรับกระบวนการทั้งหมดที่ใช้หน่วยความจำมากกว่า 100 MB คุณสามารถใช้คำสั่งต่อไปนี้:

Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB }

ที่นี่ Get-Process ดึงรายการกระบวนการที่ทำงานอยู่ทั้งหมด และ Where-Object กรองผลลัพธ์ตามเงื่อนไขที่ระบุ

อีกวิธีในการกรองผลลัพธ์คือการใช้ Select-String cmdlet ซึ่งจะค้นหารูปแบบเฉพาะในข้อความ

| Select-String -Pattern “”

ตัวอย่างเช่น หากต้องการค้นหาไฟล์ทั้งหมดที่มีคำว่า PowerShell ในไดเรกทอรีเฉพาะ:

Get-Content .*.txt | Select-String -Pattern “PowerShell”

ในตัวอย่างนี้ Get-Content อ่านเนื้อหาของไฟล์ .txt ทั้งหมดในไดเรกทอรีปัจจุบัน และ Select-String กรองบรรทัดที่มีคำว่า PowerShell รหัส>.

โดยสรุป การกรองเอาต์พุตใน PowerShell สามารถทำได้โดยใช้ cmdlets ต่างๆ เช่น Where-Object และ Select-String เพื่อปรับแต่งและมุ่งเน้นไปที่ข้อมูลที่ต้องการ

คุณจะกรองผลลัพธ์ของคำสั่งใน PowerShell ได้อย่างไร

ใน PowerShell คุณสามารถกรองผลลัพธ์ของคำสั่งได้โดยใช้ Where-Object cmdlet หรือนามแฝง ? ซึ่งช่วยให้คุณสามารถกรองวัตถุตามคุณสมบัติและค่าได้ คุณยังสามารถใช้ ไปป์ไลน์ (|) เพื่อส่งเอาต์พุตของคำสั่งหนึ่งเป็นอินพุตไปยังคำสั่งอื่นเพื่อการประมวลผลต่อไป

นี่คือตัวอย่างวิธีการกรองผลลัพธ์ของคำสั่งโดยใช้ Where-Object:

Get-Process | Where-Object { $_.CPU -gt 10 }

ในตัวอย่างนี้ คำสั่ง Get-Process จะดึงรายการกระบวนการที่กำลังทำงานอยู่ จากนั้นเอาต์พุตจะถูกส่งไปที่ Where-Object cmdlet ซึ่งจะกรองรายการกระบวนการให้รวมเฉพาะรายการที่มีการใช้งาน CPU มากกว่า 10 เท่านั้น

คุณสามารถบรรลุผลลัพธ์เดียวกันได้โดยใช้นามแฝง ?:

Get-Process | ? { $_.CPU -gt 10 }

โปรดจำไว้ว่าเมื่อใช้นามแฝง Where-Object หรือ ? คุณต้องใช้บล็อกสคริปต์ ({}) เพื่อกำหนดเงื่อนไขตัวกรอง และคุณสามารถอ้างอิงวัตถุปัจจุบันได้ ด้วย $_

ฉันจะจัดเรียงผลลัพธ์ใน PowerShell ได้อย่างไร

ในบรรทัดคำสั่ง PowerShell คุณสามารถจัดเรียงเอาต์พุตโดยใช้เทคนิคต่างๆ เช่น คำสั่งการจัดรูปแบบ การเรียงลำดับ และการกรอง ซึ่งจะทำให้คุณสามารถแสดงข้อมูลในลักษณะที่เป็นระเบียบและอ่านง่าย

ไปป์ไลน์: ไปป์ไลน์ (|) ใช้เพื่อส่งเอาต์พุตของคำสั่งหนึ่งไปยังคำสั่งอื่นเพื่อการประมวลผลหรือการจัดการเพิ่มเติม

รูปแบบ-ตาราง: cmdlet นี้แสดงข้อมูลในรูปแบบตาราง ทำให้อ่านและทำความเข้าใจได้ง่ายขึ้น หากต้องการใช้ Format-Table เพียงไพพ์เอาต์พุตของคำสั่งลงใน Format-Table cmdlet

ตัวอย่าง :

Get-Process | Format-Table -AutoSize

รายการรูปแบบ: cmdlet นี้แสดงผลในรูปแบบรายการ ซึ่งสามารถอ่านได้ง่ายกว่ามุมมองตารางเริ่มต้นสำหรับชุดข้อมูลบางชุด

ตัวอย่าง :

Get-Service | Format-List -Property Name, Status

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

ตัวอย่าง :

Get-Process | Select-Object -Property ProcessName, Id, CPU

เรียงลำดับวัตถุ: คุณสามารถจัดเรียงเอาต์พุตตามคุณสมบัติเฉพาะได้โดยใช้ Sort-Object cmdlet

ตัวอย่าง :

Get-Service | Sort-Object -Property Status

ที่ไหน-วัตถุ: cmdlet นี้ช่วยคุณกรองผลลัพธ์ตามเงื่อนไขเฉพาะ

ตัวอย่าง :

Get-Process | Where-Object {$_.CPU -gt 10}

ด้วยการรวมคำสั่งและเทคนิคเหล่านี้ คุณสามารถจัดเรียงผลลัพธ์ใน PowerShell เพื่อให้ตรงตามความต้องการของคุณ และจัดระเบียบและอ่านได้ง่ายขึ้น

ตัวกรอง PowerShell หมายถึงอะไร

ตัวกรองของ PowerShell หมายถึงฟังก์ชันประเภทที่เรียบง่ายซึ่งออกแบบมาเพื่อประมวลผลและกรองข้อมูลอินพุตผ่านบรรทัดคำสั่งของ PowerShell โดยเฉพาะ ตัวกรองส่วนใหญ่จะใช้เพื่อแก้ไข ประเมิน หรือค้นหาข้อมูลเฉพาะตามเงื่อนไขบางประการ พวกเขาใช้ประโยชน์จากกลไก ไปป์ไลน์ ในตัวเพื่อประมวลผลออบเจ็กต์อินพุตอย่างมีประสิทธิภาพ และสามารถใช้ร่วมกับคำสั่งและฟังก์ชันอื่นๆ ได้อย่างง่ายดาย

คุณลักษณะสำคัญของตัวกรองคือความสามารถในการใช้ตัวแปร $_ ซึ่งแสดงถึงออบเจ็กต์ปัจจุบันในไปป์ไลน์ สิ่งนี้ทำให้ตัวกรองสามารถประมวลผลออบเจ็กต์อินพุตแต่ละรายการแยกกันและส่งคืนเอาต์พุตที่ต้องการ ตัวกรองทำให้สคริปต์ของคุณเป็นแบบโมดูลาร์ นำมาใช้ซ้ำได้ และบำรุงรักษาได้มากขึ้น ซึ่งส่งผลให้โค้ดมีประสิทธิภาพและสะอาดยิ่งขึ้นในสภาพแวดล้อมบรรทัดคำสั่ง PowerShell ของคุณ

ฉันจะใช้ Where-Object cmdlet เพื่อกรองเอาต์พุต PowerShell ตามเงื่อนไขเฉพาะได้อย่างไร

ใน PowerShell นั้น Where-Object cmdlet ช่วยให้คุณสามารถกรองเอาต์พุตตามเงื่อนไขเฉพาะได้ คุณสมบัติอันทรงพลังนี้ช่วยให้คุณค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็วและมีประสิทธิภาพ คุณสามารถใช้ -FilterScript หรือบล็อกสคริปต์ ({ }) เพื่อกำหนดเกณฑ์การกรอง

นี่คือตัวอย่างของการใช้ Where-Object cmdlet เพื่อแสดงรายการกระบวนการทั้งหมดที่มีขนาดชุดการทำงานมากกว่า 100 MB:

Get-Process | Where-Object { $_.WorkingSet64 -gt 100MB }

ในตัวอย่างนี้ รับกระบวนการ จะดึงข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ทั้งหมด Where-Object cmdlet ใช้เพื่อกรองเอาต์พุตโดยการเปรียบเทียบคุณสมบัติ WorkingSet64 ของแต่ละกระบวนการกับ 100 MB (โดยใช้ตัวดำเนินการ -gt สำหรับ มากกว่า)

อีกตัวอย่างหนึ่ง แสดงรายการไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันที่มีขนาดใหญ่กว่า 10 MB:

Get-ChildItem | Where-Object { $_.Length -gt 10MB }

ที่นี่ Get-ChildItem ดึงข้อมูลเกี่ยวกับไฟล์และโฟลเดอร์ในไดเรกทอรีปัจจุบัน cmdlet Where-Object กรองเอาต์พุตเพื่อแสดงเฉพาะไฟล์ที่มีขนาดมากกว่า 10 MB โดยการตรวจสอบคุณสมบัติ Length

อย่าลืมแทนที่เงื่อนไขตัวอย่างด้วยเกณฑ์การกรองของคุณเองเมื่อใช้ Where-Object cmdlet ในสคริปต์บรรทัดคำสั่ง PowerShell ของคุณ

วิธีที่ดีที่สุดในการกรองและจัดรูปแบบเอาต์พุต PowerShell โดยใช้ Select-Object และ Format-Table คืออะไร

ในบรรทัดคำสั่ง PowerShell วิธีที่ดีที่สุดในการกรองและจัดรูปแบบเอาต์พุตคือการใช้ Select-Object cmdlet รวมกับ Format-Table cmdlet cmdlet เหล่านี้ช่วยให้คุณเลือกคุณสมบัติเฉพาะจากออบเจ็กต์และจัดรูปแบบในตารางเพื่อให้อ่านง่ายขึ้น

ต่อไปนี้เป็นวิธีใช้ Select-Object และ Format-Table อย่างมีประสิทธิภาพ:

1. ขั้นแรก ดึงข้อมูลที่คุณต้องการแสดงโดยใช้ cmdlet ตัวอย่างเช่น สมมติว่าคุณต้องการแสดงข้อมูลเกี่ยวกับกระบวนการทั้งหมดที่ทำงานบนระบบของคุณ คุณจะใช้ Get-Process cmdlet:

$Processes = Get-Process

2. จากนั้น ใช้ Select-Object cmdlet เพื่อเลือกคุณสมบัติเฉพาะที่คุณต้องการแสดง ในกรณีนี้ ให้เลือกคุณสมบัติ 'ชื่อ', 'ID' และ 'CPU':

$SelectedProcesses = $Processes | Select-Object Name, ID, CPU

3. สุดท้าย ใช้ Format-Table cmdlet เพื่อแสดงคุณสมบัติที่เลือกในตารางที่มีการจัดรูปแบบอย่างประณีต:

$SelectedProcesses | Format-Table -AutoSize

พารามิเตอร์ -AutoSize จะปรับความกว้างของคอลัมน์ให้พอดีกับเนื้อหา ทำให้อ่านง่ายขึ้น

ด้วยการรวม Select-Object และ Format-Table เข้าด้วยกัน คุณสามารถกรองและจัดรูปแบบเอาต์พุต PowerShell ได้อย่างรวดเร็วและง่ายดาย โดยให้มุมมองที่สะอาดและเป็นระเบียบของข้อมูลที่คุณกำลังทำงานด้วย

ฉันจะใช้การกรองกับไปป์ไลน์ในบรรทัดคำสั่ง PowerShell เพื่อปรับแต่งผลลัพธ์เอาต์พุตได้อย่างไร

ในบรรทัดคำสั่ง PowerShell คุณสามารถใช้การกรองกับไปป์ไลน์เพื่อปรับแต่งผลลัพธ์เอาต์พุตโดยใช้ cmdlets เช่น Where-Object และ Select-Object cmdlet เหล่านี้ช่วยให้คุณสามารถกรองและจัดการออบเจ็กต์ในไปป์ไลน์เพื่อให้ได้ผลลัพธ์ที่ต้องการ

ต่อไปนี้เป็นคำอธิบายโดยย่อของ cmdlets ทั้งสอง:

Where-Object กรองออบเจ็กต์อินพุตตามเงื่อนไขที่ระบุหรือบล็อกสคริปต์ คุณสามารถใช้ตัวดำเนินการเปรียบเทียบ เช่น -eq, -lt, -gt ฯลฯ เพื่อสร้างเงื่อนไขการกรอง

Select-Object เลือกคุณสมบัติที่ระบุจากออบเจ็กต์อินพุต ช่วยให้คุณสามารถแสดงเฉพาะคุณสมบัติที่คุณต้องการได้

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

1. รับกระบวนการที่ทำงานอยู่ทั้งหมด:

Get-Process

2. กรองกระบวนการที่มีการใช้หน่วยความจำมากกว่า 100MB:

Get-Process | Where-Object {$_.WorkingSet64 -gt 100MB}

3. เลือกเฉพาะคุณสมบัติ ProcessName และ WorkingSet64 จากกระบวนการกรอง:

Get-Process | Where-Object {$_.WorkingSet64 -gt 100MB} | Select-Object -Property ProcessName, WorkingSet64

ในตัวอย่างนี้ เราใช้ Get-Process เพื่อรับกระบวนการที่ทำงานอยู่ทั้งหมด จากนั้นกรองตามการใช้หน่วยความจำด้วย Where-Object และสุดท้ายก็เลือกเฉพาะคุณสมบัติที่ต้องการโดยใช้ เลือกวัตถุ

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

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