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

PowerShell Where-Object - ไม่เหมือนตัวดำเนินการ


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

ตัวดำเนินการ Where-Object -NotLike ใน PowerShell ใช้เพื่อกรองออบเจ็กต์ที่ไม่ตรงกับรูปแบบไวด์การ์ดที่ระบุ ตัวอย่างเช่น หากต้องการแยกไฟล์ที่มีนามสกุล .txt ออกจากรายการ คุณจะต้องใช้ Get-ChildItem | โดยที่วัตถุ { $_.ชื่อ -NotLike '*.txt' } cmdlet นี้มีประโยชน์อย่างยิ่งสำหรับการปรับแต่งผลการค้นหาและจัดการผลลัพธ์ในสคริปต์อย่างมีประสิทธิภาพ

PowerShell โดยที่วัตถุ -NotLike

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

ตัวดำเนินการ -NotLike

ตัวดำเนินการ -NotLike ใช้กับ PowerShell Where-Object เพื่อกรองออบเจ็กต์ที่ไม่ตรงกับรูปแบบที่ระบุโดยสตริงที่มีอักขระตัวแทน เครื่องหมายดอกจัน (*) คืออักขระตัวแทนทั่วไปที่แสดงถึงอักขระจำนวนเท่าใดก็ได้

ตัวอย่างเช่น หากคุณต้องการรับรายการไฟล์ทั้งหมดในไดเร็กทอรีที่ไม่มีนามสกุล .txt คุณสามารถใช้คำสั่งต่อไปนี้:

Get-ChildItem -Path "C:\MyFolder\" -File | Where-Object { $_.Name -NotLike '*.txt' }

คำสั่งนี้แสดงรายการทั้งหมดในไดเร็กทอรีด้านบน แต่ไม่รวมไฟล์ที่ลงท้ายด้วย .txt

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

PowerShell โดยที่วัตถุ - ตัวอย่างที่ไม่เหมือน

มาสำรวจตัวอย่างที่เป็นประโยชน์เพื่อดูการทำงานของ PowerShell Where-Object -NotLike

ตัวอย่างที่ 1: การกรองนามสกุลไฟล์

หากคุณต้องการค้นหาไฟล์ทั้งหมดในไดเร็กทอรีที่ไม่ใช่สคริปต์ PowerShell คุณสามารถใช้:

Get-ChildItem -Path C:\Scripts | Where-Object { $_.Extension -NotLike '.ps1' }

คำสั่งนี้รับรายการทั้งหมดในไดเร็กทอรี C:\Scripts และกรองไฟล์ที่มีนามสกุล .ps1 ออก

ตัวอย่างที่ 2: ไม่รวมกระบวนการเฉพาะ

วิธีแสดงกระบวนการที่ทำงานอยู่ทั้งหมดยกเว้นกระบวนการที่ชื่อ "chrome":

Get-Process | Where-Object { $_.ProcessName -NotLike 'chrome' }

คำสั่งนี้รับกระบวนการที่กำลังทำงานอยู่ทั้งหมด และละเว้นกระบวนการที่มีชื่อกระบวนการ "chrome"

ตัวอย่างที่ 3: การกรองตามเงื่อนไขหลายข้อ

คุณสามารถรวม -NotLike เข้ากับโอเปอเรเตอร์อื่นๆ เพื่อสร้างตัวกรองที่ซับซ้อนมากขึ้น ตัวอย่างเช่น หากต้องการค้นหาบริการทั้งหมดที่ไม่หยุดและไม่ได้ขึ้นต้นด้วย "win":

Get-Service | Where-Object { $_.Status -ne 'Stopped' -and $_.Name -NotLike 'win*' }

คำสั่งนี้จะเรียกบริการทั้งหมดที่ไม่อยู่ในสถานะ "หยุด" และชื่อไม่ได้ขึ้นต้นด้วย "win"

ตัวอย่างที่ 4: การแยกรายการออกจากรายการ

หากคุณมีรายชื่อและต้องการยกเว้นชื่อบางชื่อ คุณอาจใช้:

$names = 'John', 'Jane', 'Doe', 'Smith'
$names | Where-Object { $_ -NotLike 'Doe' }

ผลลัพธ์นี้จะส่งออกชื่อทั้งหมดยกเว้น "Doe"

เมื่อฉันรันสคริปต์ PowerShell โดยใช้โค้ด VS คุณจะเห็นผลลัพธ์ในภาพหน้าจอด้านล่าง:

ตัวอย่างที่ 5: การกรองบันทึกเหตุการณ์

หากต้องการตรวจสอบบันทึกเหตุการณ์ของระบบสำหรับรายการที่ไม่ใช่ระดับข้อมูล:

Get-EventLog -LogName System | Where-Object { $_.EntryType -NotLike 'Information' }

คำสั่งนี้รับรายการทั้งหมดในบันทึกเหตุการณ์ของระบบและกรองรายการที่เป็นประเภทรายการ "ข้อมูล" ออก

อ่าน PowerShell Like Operator

เคล็ดลับในการใช้ Where-Object -NotLike

  1. ใช้ Wildcards: ตัวดำเนินการ -NotLike รองรับ wildcard ซึ่งทำให้มีความหลากหลายสำหรับการจับคู่รูปแบบ ใช้ * เพื่อแสดงอักขระจำนวนเท่าใดก็ได้
  2. ไม่คำนึงถึงขนาดตัวพิมพ์: โดยค่าเริ่มต้น ตัวดำเนินการ -NotLike จะไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ใช้ -CNotLike สำหรับการเปรียบเทียบแบบคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  3. รวมกับตัวดำเนินการอื่น: คุณสามารถใช้ -NotLike ร่วมกับตัวดำเนินการเปรียบเทียบอื่นๆ (เช่น -eq, -ne, -gt, -lt ฯลฯ) เพื่อสร้างตัวกรองที่ซับซ้อน
  4. เพิ่มประสิทธิภาพ: เมื่อทำงานกับชุดข้อมูลขนาดใหญ่ ให้พิจารณาใช้ cmdlets อื่นๆ เช่น Select-String สำหรับไฟล์ข้อความหรือวิธี .Where() สำหรับ คอลเลกชันเพื่อเพิ่มประสิทธิภาพการทำงาน

บทสรุป

ตัวดำเนินการ Where-Object -NotLike มีประโยชน์มากใน PowerShell สำหรับการยกเว้นรายการที่ไม่ตรงกับรูปแบบบางอย่าง ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีใช้ตัวดำเนินการ Where-Object -NotLike ใน PowerShell พร้อมตัวอย่างบางส่วน

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