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

คำสั่งสวิตช์ PowerShell พร้อมเงื่อนไขหลายข้อ


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

หมายเหตุ: ฉันได้รันสคริปต์ PowerShell ทั้งหมดโดยใช้โปรแกรมแก้ไขโค้ด VS

สลับคำสั่งใน PowerShell

คำสั่ง switch ใน PowerShell คล้ายกับคำสั่ง switch หรือ case ที่พบในภาษาการเขียนโปรแกรมอื่น มันให้วิธีที่สะอาดกว่าและอ่านง่ายขึ้นในการจัดการกับเงื่อนไขต่างๆ เมื่อเทียบกับการใช้คำสั่ง if หลายคำสั่ง

นี่คือตัวอย่างพื้นฐานของคำสั่ง switch:

$a = 3
switch ($a) {
    1 { "It is one." }
    2 { "It is two." }
    3 { "It is three." }
    default { "It is something else." }
}

ในตัวอย่างนี้ ตัวแปร $a จะถูกประเมินเทียบกับค่า 1, 2 และ 3 เนื่องจาก $a คือ 3 ผลลัพธ์จะเป็น “It is three”

ฉันยังได้เขียนบทช่วยสอนฉบับสมบูรณ์เกี่ยวกับวิธีใช้ switch case ใน PowerShell คุณสามารถอ่านได้

ตอนนี้ ให้เราเน้นที่วิธีใช้หลายเงื่อนไขในคำสั่ง switch ใน PowerShell

สลับคำสั่งที่มีหลายเงื่อนไขใน PowerShell

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

ฉันขอแสดงตัวอย่างเรียลไทม์สามตัวอย่างให้คุณดูเพื่อทำความเข้าใจให้ดีขึ้น

ตัวอย่างที่ 1: หลายค่าในกรณีเดียว

คุณสามารถระบุค่าหลายค่าในกรณีเดียวได้โดยใช้ตัวแปร $_ และตัวดำเนินการเชิงตรรกะ

นี่คือตัวอย่างและสคริปต์ PowerShell ที่สมบูรณ์

$day = "Saturday"
switch ($day) {
    {$_ -eq "Saturday" -or $_ -eq "Sunday"} { "It is the weekend." }
    {$_ -eq "Monday" -or $_ -eq "Tuesday" -or $_ -eq "Wednesday" -or $_ -eq "Thursday" -or $_ -eq "Friday"} { "It is a weekday." }
    default { "Unknown day." }
}

ในตัวอย่างนี้ หาก $day เป็น "วันเสาร์" หรือ "วันอาทิตย์" ผลลัพธ์จะเป็น "เป็นวันหยุดสุดสัปดาห์" สำหรับวันธรรมดาใดๆ ผลลัพธ์จะเป็น “It is a weekday”

หลังจากที่ฉันรันสคริปต์ PowerShell ข้างต้น มันก็ให้ผลลัพธ์ที่แน่นอนแก่ฉัน ดูภาพหน้าจอด้านล่าง:

อ่านพารามิเตอร์สวิตช์ PowerShell

ตัวอย่างที่ 2: ใช้หลายเงื่อนไขกับตัวดำเนินการเชิงตรรกะ

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

นี่คือตัวอย่างของการใช้ตัวดำเนินการทางลอจิคัลในคำสั่ง Switch ใน PowerShell

$number = 8
switch ($number) {
    { $_ -lt 5 } { "The number is less than 5." }
    { $_ -ge 5 -and $_ -le 10 } { "The number is between 5 and 10." }
    { $_ -gt 10 } { "The number is greater than 10." }
    default { "Unknown number." }
}

ในตัวอย่างนี้ ตัวแปร $number จะถูกตรวจสอบกับหลายเงื่อนไขโดยใช้บล็อกสคริปต์ $_ แสดงถึงรายการปัจจุบันที่กำลังได้รับการประเมิน หาก $number คือ 8 ผลลัพธ์จะเป็น “ตัวเลขอยู่ระหว่าง 5 ถึง 10”

ฉันรันสคริปต์ PowerShell ข้างต้น และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

อ่านเคสสวิตช์ PowerShell ด้วย Regex

ตัวอย่างที่ 3: รวมเงื่อนไขและการดำเนินการ

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

ดูตัวอย่างและสคริปต์ด้านล่าง:

$input = "apple"
switch ($input) {
    {$_ -eq "apple" -or $_ -eq "banana"} { "It's a fruit." }
    {$_ -eq "carrot" -or $_ -eq "lettuce"} { "It's a vegetable." }
    { $_ -match "berry" } { "It's a type of berry." }
    default { "Unknown item." }
}

ในตัวอย่างนี้ คำสั่ง switch จัดการกับอินพุตประเภทต่างๆ หาก $input คือ “apple” หรือ “banana” ผลลัพธ์จะเป็น “It’s a Fruit” หากตรงกับรูปแบบที่มี "berry" ผลลัพธ์จะเป็น "It's a type of berry"

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

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

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