คำสั่งสวิตช์ 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 พร้อมตัวอย่างที่เป็นประโยชน์เหล่านี้


