ตัวดำเนินการ "ไม่เท่ากับ" ใน 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 และทดสอบโค้ดของคุณอย่างละเอียดเพื่อให้แน่ใจว่าโค้ดทำงานตามที่คาดไว้


