การเรียนรู้ PowerShell ไม่เท่ากับตัวดำเนินการพร้อมตัวอย่าง
นอกเหนือจากการเป็นเครื่องมือบรรทัดคำสั่งแล้ว PowerShell ยังเป็นภาษาโปรแกรมจาก Microsoft ที่ช่วยให้คุณสามารถควบคุมและทำให้ระบบของคุณเป็นแบบอัตโนมัติได้ PowerShell ใช้ไวยากรณ์ที่แตกต่างจากตัวดำเนินการมากกว่าภาษาการเขียนโปรแกรมส่วนใหญ่
แต่เมื่อคุณเข้าใจไวยากรณ์ของตัวดำเนินการ PowerShell แล้ว คุณจะพบว่าการใช้งานนั้นไม่ยาก ตัวดำเนินการทั่วไปตัวหนึ่งที่คุณจะใช้ใน PowerShell คือตัวดำเนินการไม่เท่ากัน (-ne) โอเปอเรเตอร์นี้ให้คุณทดสอบว่าค่าสองค่าไม่เท่ากันหรือไม่
ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการ PowerShell Not Equal และวิธีใช้งานพร้อมตัวอย่าง
ข้อกำหนดเบื้องต้น
บทช่วยสอนนี้จะเป็นการสาธิตแบบลงมือปฏิบัติจริง หากคุณต้องการปฏิบัติตาม ตรวจสอบให้แน่ใจว่าคุณมีระบบที่ติดตั้ง PowerShell แล้ว บทช่วยสอนนี้ใช้ Windows 10 และ PowerShell 7
การใช้ตัวดำเนินการ PowerShell ไม่เท่ากัน (พื้นฐาน)
โดยสรุปแล้ว ตัวดำเนินการ PowerShell Not Equal (-ne) จะกำหนดว่าค่าของวัตถุสองชิ้นไม่เท่ากันหรือไม่ และส่งกลับค่าบูลีนตามผลลัพธ์ หากค่าไม่เท่ากัน ผลลัพธ์จะเป็น True; มิฉะนั้นผลลัพธ์จะเป็น False
แต่คุณจะใช้ตัวดำเนินการ PowerShell Not Equal อย่างไรและเมื่อใด ส่วนที่ต่อจากนี้จะสอนคุณเกี่ยวกับพื้นฐานของ PowerShell Not Equal
การเปรียบเทียบตัวแปร
การใช้งานทั่วไปอย่างหนึ่งสำหรับตัวดำเนินการ PowerShell Not Equal คือการเปรียบเทียบตัวแปรสองตัว ตัวอย่างเช่น สมมติว่าคุณมีตัวแปรสองตัวคือ $a และ $b และคุณต้องการดูว่าตัวแปรทั้งสองเท่ากันหรือไม่ ไวยากรณ์การเปรียบเทียบมีดังนี้:
$a -ne $b
หากค่าของ $a และ $b ไม่เท่ากัน การเปรียบเทียบนี้จะส่งคืน True มิฉะนั้นจะคืนค่าเป็นเท็จ
1. เรียกใช้คำสั่งต่อไปนี้ในคอนโซล PowerShell ของคุณเพื่อสร้างตัวแปรที่คุณจะใช้เป็นตัวอย่าง ตัวแปร $a, $b, $c และ $d แสดงถึงค่าที่แตกต่างกัน คุณสามารถเปรียบเทียบแต่ละค่าเหล่านี้เพื่อทดสอบว่ามีค่าเท่ากันหรือไม่
คุณกำหนดค่า $c และ $d เพื่อดูว่าตัวดำเนินการ PowerShell Not Equal ทำงานอย่างไรกับค่าที่เท่ากัน
$a = 1
$b = 2
$c = 3
$d = 32. ตอนนี้ ทำการเปรียบเทียบ PowerShell Not Equal เพื่อดูว่าค่าของ $a และ $b ไม่เท่ากันหรือไม่
$a -ne $bผลลัพธ์จะคืนค่า True เนื่องจากค่าของ $a คือ 1 และ $b คือ 2 ซึ่งไม่เท่ากัน
3. ตอนนี้ให้เปรียบเทียบตัวแปร $c และ $d เพื่อดูว่าตัวแปรเหล่านั้นไม่เท่ากันหรือไม่
$c -ne $dคุณจะเห็นผลลัพธ์ที่เป็นเท็จ ดังที่แสดงในภาพด้านล่าง เนื่องจากค่าของ $c และ $d เท่ากัน (3=3)
การเปรียบเทียบค่า
เมื่อทำงานกับ PowerShell ไม่ใช่ว่าวัตถุทั้งหมดที่คุณต้องการเปรียบเทียบจะอยู่ในตัวแปร ในกรณีนี้ คุณสามารถเปรียบเทียบค่ากับตัวดำเนินการ PowerShell Not Equal ได้โดยตรง
ตัวอย่างเช่น คำสั่งด้านล่างจะเปรียบเทียบสองค่าโดยตรงโดยใช้ตัวดำเนินการ PowerShell Not Equal
5 -ne 3
คุณจะเห็นการส่งคืนมูลค่าที่แท้จริง ดังที่แสดงด้านล่างเนื่องจากค่าไม่เท่ากัน
ในทางกลับกัน การเปรียบเทียบค่าที่เท่ากันจะส่งกลับค่า False
5 -ne 5
การลบค่าออกจากอาร์เรย์
ตัวดำเนินการ PowerShell Not Equal ส่งคืนผลลัพธ์บูลีนเพื่อระบุว่าค่าสองค่าไม่เท่ากันหรือไม่ นอกเหนือจากฟังก์ชันนั้น โอเปอเรเตอร์นี้ยังสามารถกรองรายการออกจากอาร์เรย์ได้อีกด้วย
ตัวอย่างเช่น สร้างตัวแปรชื่อ $numbers ซึ่งมีอาร์เรย์ของตัวเลข 1 ถึง 5
# Create an array containing numbers 1 through 5.
$numbers = 1..5
# Display the array
$numbers
จากนั้น รันคำสั่งด้านล่างเพื่อส่งคืนอาร์เรย์ยกเว้นตัวเลขเดียว (4)
$numbers -ne 4
และตอนนี้คุณจะเห็นแล้วว่าคำสั่งส่งคืนทุกหมายเลขในอาร์เรย์ยกเว้นหมายเลข 4
การเปรียบเทียบสตริง
นอกจากตัวเลขแล้ว คุณยังสามารถใช้การเปรียบเทียบ PowerShell Not Equal กับสตริงได้อีกด้วย
1. ตัวอย่างเช่น สมมติว่าคุณมีสองสาย “Hello” และ “World” หากต้องการตรวจสอบว่าทั้งสองสตริงไม่เท่ากันหรือไม่ ให้รันคำสั่งด้านล่าง
"Hello" -ne "World"ผลลัพธ์จะเป็น True เนื่องจาก “สวัสดี” ไม่เท่ากับ “โลก”
2. ตอนนี้เปรียบเทียบสตริง “Hello” และ “hello” เพื่อดูว่าเท่ากันหรือไม่
"Hello" -ne "hello"จากนั้นคุณจะเห็นผลลัพธ์เป็นเท็จ เนื่องจาก “สวัสดี” เท่ากับ “สวัสดี”
3. ตัวดำเนินการ PowerShell Not Equal ไม่คำนึงถึงขนาดตัวพิมพ์ ดังที่คุณเห็นในขั้นตอนที่แล้ว “สวัสดี” เท่ากับ “สวัสดี” แต่ถ้าคุณต้องการคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อเปรียบเทียบค่าสตริง ให้แทนที่ตัวดำเนินการ -ne ด้วยตัวดำเนินการ -cne ซึ่งหมายความว่า ตัวพิมพ์เล็กและใหญ่ไม่เท่ากัน
"Hello" -cne "hello"เป็นผลให้ “สวัสดี” และ “สวัสดี” และไม่เท่ากันตาม PowerShell อีกต่อไป
การใช้ตัวดำเนินการ PowerShell ไม่เท่ากันในโลกแห่งความเป็นจริง (ตัวอย่าง)
เมื่อคุณเข้าใจแนวคิดพื้นฐานของตัวดำเนินการ PowerShell Not Equal แล้ว ส่วนต่อไปนี้จะให้คุณได้สัมผัสประสบการณ์การใช้งานจริงบางส่วน
สถานะบริการตรวจสอบ
แก่นของการดูแลระบบ Windows คือการตรวจสอบสถานะการบริการเซิร์ฟเวอร์ งานนี้เกี่ยวข้องกับการกรองบริการที่มี สถานะไม่ทำงาน
ตัวอย่างเช่น เรียกใช้ cmdlet Get-Service เพื่อแสดงบริการทั้งหมดบนเครื่องท้องถิ่น
Get-Service
คุณสามารถดูบริการที่หยุดและทำงานอยู่ทั้งหมดในผลลัพธ์ด้านล่าง
ตอนนี้ หากต้องการกรองเฉพาะบริการที่ไม่ได้ ทำงานอยู่ ให้รันคำสั่งด้านล่าง และใช้ตัวดำเนินการ -ne ดังต่อไปนี้
Get-Service | Where-Object {$_.Status -ne "Running"}
ดังที่คุณเห็นด้านล่าง คอลัมน์สถานะจะแสดงเฉพาะบริการที่หยุดทำงานหลังจากใช้การเปรียบเทียบ PowerShell Not Equal
ในทำนองเดียวกัน ให้เรียกใช้คำสั่งด้านล่างเพื่อส่งคืนบริการที่มี สถานะไม่หยุด
Get-Service | Where-Object {$_.Status -ne "Stopped"}
คราวนี้คุณจะเห็นเฉพาะบริการที่กำลังทำงานอยู่เท่านั้น
การรวม PowerShell ไม่เท่ากับตัวดำเนินการ AND
นอกเหนือจากการเปรียบเทียบแบบ 1:1 แล้ว คุณยังสามารถรวมเงื่อนไข PowerShell Not Equal กับตัวดำเนินการเปรียบเทียบอื่นได้ เช่น -eq (เท่ากับ) โดยใช้ตัวดำเนินการ -and วิธีการนี้มีประโยชน์เมื่อวัตถุที่คุณกำลังเปรียบเทียบต้องตรงตามเงื่อนไขหลายประการ
ตัวอย่างเช่น บริการเซิร์ฟเวอร์การมอนิเตอร์โดยทั่วไปเกี่ยวข้องกับการทำให้แน่ใจว่าบริการอัตโนมัติทั้งหมดต้องทำงานอยู่ เรียกใช้คำสั่งด้านล่างเพื่อแสดงรายการบริการทั้งหมดที่มี สถานะไม่ทำงาน และมี StartType Is Automatic ในตัวอย่างนี้ ค่าออบเจ็กต์ต้องตรงกับเงื่อนไขทั้งหมด
Get-Service |
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name
ตอนนี้คุณสามารถเห็นบริการอัตโนมัติที่ไม่ได้ทำงานอยู่ ซึ่งสามารถช่วยคุณตัดสินใจว่าจะต้องดำเนินการอะไรบ้าง
การเพิ่มลอจิกแบบมีเงื่อนไข If/Else
คุณยังสามารถใช้ตัวดำเนินการ PowerShell Not Equal ภายในคำสั่งแบบมีเงื่อนไข เช่น คำสั่ง if/else
ตัวอย่างเช่น บริการจะต้องทำงานในกรณีส่วนใหญ่หากค่า StartType เป็นอัตโนมัติ สคริปต์ด้านล่างรับบริการทั้งหมด ตรวจสอบว่าบริการอัตโนมัติใดที่ไม่ได้ทำงานอยู่ และดำเนินการแก้ไขเพื่อแสดงข้อความและเริ่มบริการ
หมายเหตุ: บรรทัด Start-Service $_.Name ถูกใส่เครื่องหมายความคิดเห็นไว้และจะไม่ทำงาน ยกเลิกหมายเหตุบรรทัดนี้หากคุณต้องการดำเนินการคำสั่ง
คัดลอกโค้ดด้านล่างและเรียกใช้ใน PowerShell
Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
"The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
# Start-Service $_.Name
}
}ผลลัพธ์จะแสดงให้คุณเห็นว่าบริการอัตโนมัติใดที่ไม่ได้ทำงานอยู่
บทสรุป
ในบทความนี้ คุณได้เรียนรู้เกี่ยวกับตัวดำเนินการ PowerShell Not Equal คุณยังได้เรียนรู้วิธีใช้งานพร้อมตัวอย่างอีกด้วย ณ จุดนี้ คุณควรมีความเข้าใจที่ดีเกี่ยวกับวิธีการทำงาน
ด้วยความรู้ที่เพิ่งค้นพบนี้ ตอนนี้คุณสามารถใช้ตัวดำเนินการไม่เท่ากันในสคริปต์ PowerShell ของคุณเพื่อทดสอบเงื่อนไขได้แล้ว อย่างไรก็ตาม โปรดทราบว่ายังมีตัวดำเนินการเปรียบเทียบอื่นๆ ให้เลือกด้วย คุณอาจต้องการรวมตัวดำเนินการหลายตัวเพื่อทดสอบเงื่อนไขที่ซับซ้อนมากขึ้น













