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

PowerShell โดยที่วัตถุไม่เท่ากัน [พร้อมตัวอย่าง]


PowerShell Where-Object ช่วยให้คุณสามารถกรองออบเจ็กต์ตามคุณสมบัติและค่าได้ เราจะดูวิธีใช้ตัวดำเนินการ -ne กับ PowerShell Where-Object เราจะเห็นตัวอย่างที่สมบูรณ์ของ “PowerShell โดยที่วัตถุไม่เท่ากัน“

ใน PowerShell นั้น Where-Object cmdlet ใช้เพื่อกรองออบเจ็กต์ตามคุณสมบัติ และตัวดำเนินการ -ne ย่อมาจาก "ไม่เท่ากัน" หากต้องการกรองออบเจ็กต์ที่มีคุณสมบัติเฉพาะไม่เท่ากับค่าที่กำหนด คุณสามารถใช้คำสั่ง เช่น Get-Process | Where-Object { $_.ProcessName -ne 'svchost' } ซึ่งจะส่งคืนกระบวนการทั้งหมดที่มีชื่อไม่ใช่ 'svchost' การรวมกันนี้ช่วยให้สามารถกรองสคริปต์และการดำเนินการบรรทัดคำสั่งได้อย่างแม่นยำ

PowerShell โดยที่วัตถุไม่เท่ากัน

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

ตัวดำเนินการไม่เท่ากัน (-ne)

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

ตัวอย่างของ PowerShell Where-Object ด้วย -ne

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

ตัวอย่างที่ 1: การกรองออบเจ็กต์กระบวนการ

ลองนึกภาพคุณต้องการรับรายการกระบวนการทั้งหมดที่ทำงานบนระบบของคุณซึ่งไม่ได้ชื่อ “svchost” คุณสามารถใช้ตัวดำเนินการ PowerShell Where-Object ที่ไม่เท่ากันได้

Get-Process | Where-Object { $_.ProcessName -ne 'svchost' }

คำสั่งนี้รับกระบวนการทั้งหมดที่ทำงานบนระบบของคุณ และใช้ Where-Object เพื่อกรองกระบวนการที่ ProcessName ไม่เท่ากับ “svchost” ออก

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์ PowerShell โดยใช้โค้ด VS

ตัวอย่างที่ 2: การแยกไฟล์เฉพาะออกจากรายการ

หากคุณมีรายการไฟล์และต้องการแยกไฟล์ที่มีนามสกุลบางไฟล์ เช่น ไฟล์ .log คุณสามารถใช้คำสั่งต่อไปนี้ PowerShell Where-Object พร้อมด้วยตัวดำเนินการ -ne

Get-ChildItem | Where-Object { $_.Extension -ne '.log' }

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

ตัวอย่างที่ 3: การกรองออบเจ็กต์แบบกำหนดเอง

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

# Define a collection of custom objects with a 'Status' property
$customObjects = @(
    [PSCustomObject]@{Name='Object1'; Status='Inactive'},
    [PSCustomObject]@{Name='Object2'; Status='Active'},
    [PSCustomObject]@{Name='Object3'; Status='Pending'},
    [PSCustomObject]@{Name='Object4'; Status='Active'},
    [PSCustomObject]@{Name='Object5'; Status='Inactive'}
)

# Filter the objects where Status is not 'Active'
$filteredObjects = $customObjects | Where-Object { $_.Status -ne 'Active' }

# Output the filtered objects
$filteredObjects

ในที่นี้ $customObjects คือตัวแปรที่เก็บคอลเล็กชันของออบเจ็กต์ cmdlet Where-Object จะกรองออบเจ็กต์ที่มีคุณสมบัติ สถานะ ไม่ใช่ "ใช้งานอยู่" ออก

นี่คือผลลัพธ์ในภาพหน้าจอด้านล่าง:

การใช้งานขั้นสูงด้วย -ne

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

Get-Service | Where-Object { $_.Status -ne 'Running' -and $_.StartType -ne 'Automatic' }

คำสั่งนี้รับบริการทั้งหมดและกรองบริการที่ไม่ทำงานและไม่ได้ตั้งค่าให้เริ่มโดยอัตโนมัติ

บทสรุป

cmdlet Where-Object รวมกับตัวดำเนินการ -ne มีประโยชน์มากใน PowerShell สำหรับการกรองออบเจ็กต์ที่ไม่ตรงกับเงื่อนไขที่กำหนดออก

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายวิธีใช้ตัวดำเนินการ -ne กับ PowerShellwhere-object พร้อมตัวอย่าง

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