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

ตัวดำเนินการ "ไม่เท่ากับ" ใน PowerShell: คู่มือที่ครอบคลุม


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

ข้อมูลเบื้องต้นเกี่ยวกับตัวดำเนินการเปรียบเทียบของ PowerShell

ก่อนที่เราจะเจาะลึกตัวดำเนินการ 'ไม่เท่ากัน' เราต้องใช้เวลาสักครู่เพื่อตรวจสอบตัวดำเนินการเปรียบเทียบอื่นๆ ของ PowerShell ตัวดำเนินการเปรียบเทียบใน PowerShell ได้แก่:

  • -eq (เท่ากับ)
  • -ne (ไม่เท่ากับ)
  • -gt (มากกว่า)
  • -lt (น้อยกว่า)
  • -ge (มากกว่าหรือเท่ากับ)
  • -le (น้อยกว่าหรือเท่ากับ)

ตัวดำเนินการเหล่านี้แต่ละตัวใช้เพื่อเปรียบเทียบค่าใน PowerShell และส่งกลับค่าเท็จ ตัวดำเนินการ 'ไม่เท่ากัน' ซึ่งแสดงโดย -ne ใช้เพื่อเปรียบเทียบค่าสองค่าและส่งคืนค่า $true หากค่าไม่เท่ากัน

ทำความเข้าใจ "ไม่เท่ากับ" ใน PowerShell

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

ไวยากรณ์พื้นฐานของตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell

ไวยากรณ์พื้นฐานของ Not Equal to ใน PowerShell คือ:


Value1 -ne Value2

โดยที่ Value1 และ Value2 คือค่าที่คุณต้องการเปรียบเทียบ ไวยากรณ์นี้สามารถใช้ได้กับทั้งตัวเลขและสตริง

หากคำสั่งกับ PowerShell ไม่เท่ากับตัวดำเนินการ

ใน PowerShell คุณสามารถใช้ตัวดำเนินการ 'ไม่เท่ากัน' ในคำสั่ง 'if' เพื่อดำเนินการหากค่าสองค่าไม่เท่ากัน ตัวอย่างเช่น:


if ($Value1 -ne $Value2) {
    Write-Host "Values are not equal"
}

รหัสนี้จะตรวจสอบว่า Value1 ไม่เท่ากับ Value2 หรือไม่ และหากไม่เป็นเช่นนั้นก็จะส่งข้อความไปยังคอนโซล

การเปรียบเทียบตัวเลข

ตัวดำเนินการ 'ไม่เท่ากัน' สามารถใช้กับทั้งตัวเลขและสตริงใน PowerShell เมื่อเปรียบเทียบตัวเลข ผู้ดำเนินการจะเปรียบเทียบค่าตัวเลขของแต่ละหมายเลข เมื่อเปรียบเทียบตัวเลข -ne จะตรวจสอบว่าค่าทางซ้ายและขวาแตกต่างกันในเชิงตัวเลขหรือไม่


$a = 5
$b = 10

if ($a -ne $b) {
    Write-Host "The numbers are not equal."
} else {
    Write-Host "The numbers are equal."
}

ในตัวอย่างนี้ เราใช้ตัวดำเนินการ 'ไม่เท่ากัน' เพื่อเปรียบเทียบตัวเลขสองตัว $a และ $b เนื่องจาก 5 ไม่เท่ากับ 10 เงื่อนไขจึงประเมินเป็น "จริง" และแสดงข้อความ "ตัวเลขไม่เท่ากัน"

การใช้ตัวดำเนินการ 'ไม่เท่ากัน' กับสตริงใน PowerShell

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

ต่อไปนี้คือวิธีที่คุณสามารถใช้ตัวดำเนินการ -ne กับสตริง:


$name1 = "John"
$name2 = "Jane"

if ($name1 -ne $name2) {
    Write-Host "The names are not equal."
} else {
    Write-Host "The names are equal."
}

ในตัวอย่างนี้ ตัวดำเนินการ 'ไม่เท่ากัน' ใช้เพื่อเปรียบเทียบสองสตริง $name1 และ $name2 เนื่องจาก "John" ไม่เท่ากับ "Jane" เงื่อนไขจึงประเมินเป็น "True" และข้อความ "ชื่อไม่เท่ากัน" จะปรากฏขึ้น

การเปรียบเทียบสตริง (ไม่คำนึงถึงขนาดตัวพิมพ์) ด้วยตัวดำเนินการ -CNE

นี่คือตัวอย่างของการเปรียบเทียบสตริงที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ใน PowerShell:


$string1 = "Hello"
$string2 = "HELLO"

if ($string1 -cne $string2) {
    Write-Host "The strings are not equal."
} else {
    Write-Host "The strings are equal."
}

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

การเปรียบเทียบประเภทข้อมูลต่างๆ ใน PowerShell

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

นี่คือตัวอย่าง:


$a = 10
$b = "10"
if ($a -ne $b) {
Write-Host "The values are not equal."
} else {
Write-Host "The values are equal."
}

ในตัวอย่างนี้ แม้ว่าตัวแปร $a และ $b จะมีประเภทข้อมูลต่างกัน แต่ตัวดำเนินการที่ไม่เท่ากันก็ยังสามารถเปรียบเทียบได้โดยการแปลงสตริง “10” ให้เป็นจำนวนเต็ม

การจัดการค่า Null ด้วยตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell

เมื่อทำงานกับ PowerShell คุณอาจพบค่าว่าง ค่าว่างแสดงถึงการไม่มีค่า และอาจทำให้เกิดปัญหาเมื่อใช้ตัวดำเนินการเปรียบเทียบ ในการจัดการค่า Null ด้วยตัวดำเนินการ 'ไม่เท่ากัน' คุณสามารถใช้ตัวดำเนินการ -ne ตัวอย่างเช่น:


$value = $null

if ($value -ne $null) {
    Write-Host "Value is not null."
} else {
    Write-Host "Value is null."
}

สคริปต์นี้จะตรวจสอบว่า $Value ไม่ใช่ null โดยใช้ตัวดำเนินการ 'Not Equal' มาดูตัวอย่างเชิงปฏิบัติกันดีกว่า:


PS C:\> Get-Process | Where-Object {$_.CPU -ne $Null}

การรวมไม่เท่ากับตัวดำเนินการเปรียบเทียบอื่นๆ

ตัวดำเนินการ “ไม่เท่ากัน” สามารถใช้ร่วมกับตัวดำเนินการอื่นๆ เช่น “-and” และ “-or” เพื่อสร้างเงื่อนไขที่ซับซ้อนมากขึ้นได้ ตัวอย่างเช่น คุณสามารถใช้ตัวดำเนินการ 'ไม่เท่ากัน' กับตัวดำเนินการ -and เพื่อสร้างการเปรียบเทียบที่ส่งคืน $true หากตรงตามเงื่อนไขทั้งสอง มาดูตัวอย่างกัน:


if ($age -ne $null -and $age -gt 18) {
Write-Host "You're an adult!"
}

ในข้อมูลโค้ดนี้ เรากำลังตรวจสอบว่าตัวแปร $age ไม่เท่ากับ $null (นั่นคือ มีค่า) และมากกว่า 18 หรือไม่ หากทั้งสองเงื่อนไขเป็นจริง เราจะแสดงข้อความที่ระบุว่า บุคคลนั้นเป็นผู้ใหญ่

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


Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} | 
Select-Object Name, Status,StartType

ตัวอย่างการใช้งานจริงของการใช้ตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell

ลองมาดูตัวอย่างการใช้งานจริงของการใช้ตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell

ตัวอย่างที่ 1: การตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่

หากต้องการตรวจสอบบริการทั้งหมดที่ไม่ทำงาน เราสามารถใช้ตัวดำเนินการไม่เท่ากันดังนี้:


Get-Service | Where-Object {$_.Status -ne "Running"}

ในทำนองเดียวกัน หากต้องการตรวจสอบสถานะบริการเฉพาะ เช่น Print spooler เราสามารถใช้สคริปต์ด้านล่างนี้:


if ((Get-Service -Name "Spooler").Status -ne "Running") {
    Write-Host "Spooler is not running"
}

รหัสนี้จะตรวจสอบว่าบริการชื่อ "MyService" กำลังทำงานอยู่หรือไม่ หากไม่ได้ทำงานอยู่ ระบบจะส่งข้อความไปยังคอนโซล

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

คุณสามารถใช้โอเปอเรเตอร์นี้เพื่อดำเนินการต่างๆ เช่น การกรอง การค้นหา และอื่นๆ อีกมากมาย นี่คือตัวอย่าง:


$Usernames = @("Admin", "administrator", "Guest", "System")
$FilteredUsers = $usernames | Where-Object { $_ -ne "Guest" }

คำสั่งนี้จะกรองชื่อทั้งหมดที่ไม่ใช่ "แขก" ออก และส่งคืนอาร์เรย์ใหม่ $FilteredUsers

อีกตัวอย่างหนึ่ง: สมมติว่าคุณมีรายการตัวเลข และคุณต้องการกรองเลขคู่ทั้งหมดออก คุณสามารถใช้ตัวดำเนินการ “ไม่เท่ากัน” เพื่อทำสิ่งนี้:


$Numbers = 1, 2, 3, 4, 5
$OddNumbers = $Numbers | Where-Object { $_ -mod 2 -ne 0 }

ในข้อมูลโค้ดนี้ เราใช้ cmdlet “Where-Object” เพื่อกรองตัวเลขทั้งหมดที่เป็นเลขคู่ออก อาร์เรย์ผลลัพธ์ $oddNumbers จะมีตัวเลข 1, 3, 5, 7 และ 9

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


Get-ChildItem "C:\Temp" -File | Where-Object {$_.Name -ne "Readme.txt"}

คำสั่งนี้จะแสดงรายการไฟล์ทั้งหมดในไดเร็กทอรีที่กำหนด ยกเว้น "Readme.txt" ที่นี่ เราใช้ตัวดำเนินการไม่เท่ากัน '-ne' เพื่อเปรียบเทียบชื่อไฟล์และกรองไฟล์ที่มีชื่อ "Readme.txt"

ตัวอย่างที่ 3: การตรวจสอบรูปแบบอีเมล

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


$email = Read-Host "Enter your email"
$domain = $email -split "@" | Select-Object -Last 1

if ($domain -ne "blockeddomain.com") {
    Write-Host "Email accepted."
} else {
    Write-Error "Emails from blockeddomain.com are not allowed."
}

ตัวอย่างที่ 4: การตรวจสอบวันที่แก้ไขไฟล์

เพื่อให้แน่ใจว่าไฟล์จะไม่ได้รับการแก้ไขในวันนี้:


$fileDate = (Get-Item "C:\Temp\AppLog.txt").LastWriteTime.Date
if ($fileDate -ne (Get-Date).Date) {
    Write-Host "The file was last modified on $fileDate."
}

แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell

เมื่อใช้ตัวดำเนินการ 'ไม่เท่ากัน' ใน PowerShell สิ่งสำคัญคือต้องคำนึงถึงแนวทางปฏิบัติที่ดีที่สุดบางประการ ซึ่งรวมถึง:

  • จัดการค่า Null อย่างเหมาะสม: ตรวจสอบค่า Null ก่อนใช้ตัวดำเนินการ "ไม่เท่ากับ" เพื่อหลีกเลี่ยงการทำงานที่ไม่คาดคิด
  • ใช้ไวยากรณ์ที่ถูกต้องสำหรับตัวดำเนินการ 'ไม่เท่ากัน' (-ne) เสมอ
  • แสดงความคิดเห็นเกี่ยวกับโค้ดของคุณ: เพิ่มความคิดเห็นเพื่ออธิบายวัตถุประสงค์และตรรกะเบื้องหลังการใช้ตัวดำเนินการ 'ไม่เท่ากัน' เพื่ออำนวยความสะดวกในการทำความเข้าใจตัวคุณเองและผู้อื่นที่อาจตรวจสอบหรือแก้ไขโค้ด
  • ตรวจสอบความเข้ากันได้ของประเภทข้อมูล: ตรวจสอบให้แน่ใจว่าคุณกำลังเปรียบเทียบค่าของประเภทข้อมูลเดียวกัน การเปรียบเทียบประเภทข้อมูลที่แตกต่างกันอาจทำให้เกิดผลลัพธ์ที่ไม่คาดคิด
  • ตรวจสอบค่าตัวแปร: ตรวจสอบค่าที่จัดเก็บไว้ในตัวแปรอีกครั้งและให้แน่ใจว่าเป็นไปตามที่คาดไว้ ค่าที่ไม่ถูกต้องอาจทำให้ตัวดำเนินการ 'ไม่เท่ากัน' ให้ผลลัพธ์ที่ไม่คาดคิด
  • ดีบักโค้ดของคุณ: ใช้ความสามารถในการดีบักของ PowerShell เพื่อก้าวผ่านโค้ดของคุณและระบุข้อผิดพลาดเชิงตรรกะหรือพฤติกรรมที่ไม่คาดคิด

ห่อ

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

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