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

การเรียนรู้ 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 = 3

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

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