การเรียนรู้ศิลปะแห่งการกรองเอาต์พุต 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, WorkingSet6. ใช้ Group-Object สำหรับข้อมูลที่รวม
Group-Object เป็น cmdlet ที่มีค่าเมื่อคุณต้องการรวบรวมข้อมูลตามคุณสมบัติเฉพาะ ทำให้วิเคราะห์เอาต์พุต PowerShell ได้ง่ายขึ้น
ไวยากรณ์ :
Group-Object -Property [-NoElement]ตัวอย่างเช่น หากต้องการจัดกลุ่มไฟล์ตามนามสกุลและนับ:
Get-ChildItem | Group-Object -Property Extension -NoElement7. เรียงลำดับผลลัพธ์ด้วยการเรียงลำดับวัตถุ
สุดท้ายนี้ คุณสามารถใช้ 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-Process2. จากนั้น ใช้ Select-Object cmdlet เพื่อเลือกคุณสมบัติเฉพาะที่คุณต้องการแสดง ในกรณีนี้ ให้เลือกคุณสมบัติ 'ชื่อ', 'ID' และ 'CPU':
$SelectedProcesses = $Processes | Select-Object Name, ID, CPU3. สุดท้าย ใช้ 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-Process2. กรองกระบวนการที่มีการใช้หน่วยความจำมากกว่า 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 ได้อย่างมีประสิทธิภาพ