โฮมเพจ » ทำอย่างไร » การจัดรูปแบบการเรียนรู้ที่เกินบรรยายโรงเรียนการกรองและการเปรียบเทียบใน PowerShell

    การจัดรูปแบบการเรียนรู้ที่เกินบรรยายโรงเรียนการกรองและการเปรียบเทียบใน PowerShell

    ในโรงเรียน Geek รุ่นนี้เราจะดูการจัดรูปแบบการกรองและการเปรียบเทียบวัตถุใน Pipeline.

    อย่าลืมอ่านบทความก่อนหน้าในซีรีย์:

    • เรียนรู้วิธีอัตโนมัติของ Windows ด้วย PowerShell
    • เรียนรู้การใช้ Cmdlets ใน PowerShell
    • เรียนรู้วิธีใช้วัตถุใน PowerShell

    และคอยติดตามตลอดซีรีย์ที่เหลือตลอดทั้งสัปดาห์.

    การจัดรูปแบบเริ่มต้น

    เมื่อฉันเริ่มใช้ PowerShell ครั้งแรกฉันคิดว่าทุกอย่างเป็นเวทย์มนตร์ แต่ความจริงคือมันใช้เวลาเพียงเล็กน้อยในการทำความเข้าใจสิ่งที่เกิดขึ้นใต้ฝากระโปรง เช่นเดียวกับระบบการจัดรูปแบบ PowerShell ในความเป็นจริงถ้าคุณเรียกใช้ cmdlet รับบริการผลผลิตที่สร้างขึ้นจะแสดงคุณสมบัติ 3 อย่างเท่านั้น: สถานะชื่อและ DisplayName.

    แต่ถ้าคุณไปที่ Get-Service เพื่อรับสมาชิกคุณจะเห็นว่าวัตถุ ServiceController มีมากกว่าคุณสมบัติสามอย่างนี้ดังนั้นสิ่งที่เกิดขึ้น?

    คำตอบอยู่ในไฟล์ที่ซ่อนซึ่งกำหนดว่า cmdlet ในตัวส่วนใหญ่จะแสดงเอาต์พุตของพวกเขาอย่างไร หากต้องการทำความเข้าใจให้พิมพ์สิ่งต่อไปนี้ลงในเชลล์แล้วกด Enter.

    notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

    ถ้าเราใช้ฟังก์ชั่นค้นหาของ Notepad เราสามารถข้ามไปยังส่วนที่ให้รายละเอียดผลลัพธ์ของ Get-Service cmdlet ได้อย่างรวดเร็วโดยค้นหาประเภท ServiceController.

    ทันใดนั้นคุณจะเห็นว่าภายใต้ประทุน PowerShell กำลังจัดรูปแบบวัตถุใด ๆ ในไปป์ไลน์ที่เป็น ServiceController ประเภทและสร้างตารางที่มีสามคอลัมน์: สถานะชื่อและ DisplayName แต่ถ้าประเภทที่คุณติดต่อด้วยไม่มีรายการในไฟล์นั้นหรือไฟล์รูปแบบอื่นสำหรับเรื่องนั้น งั้นมันก็ง่ายมาก ๆ ถ้าวัตถุที่ออกมาจากไปป์ไลน์มี 5 คุณสมบัติขึ้นไป PowerShell จะแสดงคุณสมบัติทั้งหมดของวัตถุในรายการ ถ้ามันมีคุณสมบัติน้อยกว่า 5 มันจะแสดงพวกเขาในตาราง.

    การจัดรูปแบบข้อมูลของคุณ

    หากคุณไม่พอใจกับการจัดรูปแบบเริ่มต้นของวัตถุหรือประเภทคุณสามารถม้วนการจัดรูปแบบของคุณเอง มีสาม cmdlets ที่คุณต้องรู้ในการทำเช่นนี้.

    • รูปแบบรายการ
    • รูปแบบตาราง
    • รูปแบบไวด์

    รูปแบบไวด์ เพียงแค่รวบรวมวัตถุและแสดงคุณสมบัติเดียวของแต่ละวัตถุ โดยค่าเริ่มต้นมันจะมองหาคุณสมบัติชื่อ; หากวัตถุของคุณไม่มีคุณสมบัติชื่อวัตถุนั้นจะใช้คุณสมบัติแรกของวัตถุเมื่อคุณสมบัติถูกเรียงลำดับตามตัวอักษร.

    รับบริการ | รูปแบบไวด์

    ตามที่คุณเห็นมันจะมีค่าเริ่มต้นเป็นสองคอลัมน์แม้ว่าคุณจะสามารถระบุทั้งคุณสมบัติที่คุณต้องการใช้รวมถึงจำนวนคอลัมน์ที่คุณต้องการให้แสดง.

    รับบริการ | Format-Wide -Property DisplayName - คอลัมน์ 6

    หากมีการจัดรูปแบบเป็นตารางโดยค่าเริ่มต้นคุณสามารถสลับเป็นมุมมองรายการได้ตลอดเวลาโดยใช้ Format-List cmdlet ลองมาดูที่ผลลัพธ์ของ Get-Process cmdlet.

    มุมมองแบบตารางนี้เหมาะสมกับข้อมูลประเภทนี้เป็นอย่างดี แต่มาทำเป็นว่าเราต้องการดูในรูปแบบรายการ สิ่งที่เราต้องทำก็แค่ส่งไปที่ รูปแบบรายการ.

    รับกระบวนการ | รูปแบบรายการ

    อย่างที่คุณเห็นมีเพียงสี่รายการที่ปรากฏในรายการโดยค่าเริ่มต้น ในการดูคุณสมบัติทั้งหมดของวัตถุคุณสามารถใช้อักขระตัวแทน.

    รับกระบวนการ | รูปแบบ - รายการ - คุณสมบัติ *

    หรือคุณสามารถเลือกเฉพาะคุณสมบัติที่คุณต้องการ.

    รับกระบวนการ | รูปแบบ - รายการ - ชื่อทรัพย์สิน, id

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

    รับกระบวนการ | รูปแบบ - ชื่อตาราง id -AutoSize

    การกรองและการเปรียบเทียบ

    หนึ่งในสิ่งที่ดีที่สุดเกี่ยวกับการใช้ไปป์ไลน์แบบอิงวัตถุคือคุณสามารถกรองวัตถุออกจากไพพ์ไลน์ได้ทุกขั้นตอนโดยใช้ Where-Object cmdlet.

    รับบริการ | ตำแหน่งที่วัตถุ $ _. สถานะ -eq“ กำลังทำงาน”

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

    • eq (เท่ากับ)
    • neq (ไม่เท่ากับ)
    • gt (มากกว่า)
    • ge (มากกว่าหรือเท่ากับ)
    • lt (น้อยกว่า)
    • le (น้อยกว่าหรือเท่ากับ)
    • กดไลค์ (จับคู่สตริงสัญลักษณ์แทน)

    รายการเต็มรูปแบบและข้อมูลเพิ่มเติมสามารถดูได้ในไฟล์ความช่วยเหลือเกี่ยวกับ concept_comparison แนวคิด แต่มันจะใช้เวลาสักครู่ในการใช้ชินกับไวยากรณ์ Where-Obeject นั่นคือทั้งหมดที่ในเวลานี้!