คำชี้แจงสวิตช์ PowerShell [พร้อมตัวอย่าง]
หากต้องการเขียนสคริปต์การทำงานอัตโนมัติของ PowerShell ที่ดี คุณควรรู้วิธีใช้คำสั่ง Switch ฉันจะอธิบายทุกอย่างเกี่ยวกับคำสั่งสวิตช์ PowerShell และไวยากรณ์ของคำสั่งดังกล่าว และให้ตัวอย่างแบบเรียลไทม์ที่เป็นประโยชน์บางส่วน
การใช้คำสั่งสวิตช์ PowerShell คุณสามารถตรวจสอบหลายเงื่อนไขได้อย่างมีประสิทธิภาพมากกว่า การใช้คำสั่ง if หลายรายการ คำสั่ง Switch ใน PowerShell สามารถรองรับค่าประเภทต่างๆ ได้ เช่น สตริง ตัวเลข และแม้แต่นิพจน์ทั่วไป
ตอนนี้ฉันจะอธิบายให้คุณฟังด้วยตัวอย่างบางส่วนตั้งแต่ต้น
สลับคำสั่งใน PowerShell
คำสั่ง switch ใน PowerShell จะประเมินตัวแปรหรือนิพจน์เทียบกับรายการค่าที่เป็นไปได้ โดยดำเนินการบล็อกโค้ดที่เกี่ยวข้องสำหรับกรณีที่ตรงกัน ซึ่งคล้ายกับคำสั่ง switch ในภาษาการเขียนโปรแกรมอื่นๆ เช่น C, Java และ JavaScript เมื่อเปรียบเทียบกับการใช้คำสั่ง if-else หลายคำสั่ง คำสั่งนี้ให้วิธีที่สะอาดกว่าและอ่านง่ายกว่าในการจัดการกับเงื่อนไขต่างๆ
ไวยากรณ์ของเคสสวิตช์ PowerShell
ไวยากรณ์พื้นฐานของคำสั่ง switch ใน PowerShell มีลักษณะดังนี้:
switch ($variable) {
'value1' {
# Code to execute if $variable is 'value1'
}
'value2' {
# Code to execute if $variable is 'value2'
}
default {
# Code to execute if no match is found
}
}
ต่อไปนี้เป็นตัวอย่างง่ายๆ ของวิธีที่คุณสามารถใช้เคสสวิตช์ใน PowerShell
$day = 'Monday'
switch ($day) {
'Monday' {
Write-Output "Start of the work week!"
}
'Friday' {
Write-Output "End of the work week!"
}
default {
Write-Output "Midweek days."
}
}ในตัวอย่างนี้ ผลลัพธ์จะเป็น "Start of the work week!" เนื่องจากค่าของ $day คือ 'Monday'
ฉันรันสคริปต์ PowerShell ข้างต้น และคุณสามารถดูผลลัพธ์ที่แน่นอนได้ในภาพหน้าจอด้านล่าง:
อ่านคำสั่งสวิตช์ PowerShell ที่มีเงื่อนไขหลายข้อ
ค่าเริ่มต้นของสวิตช์ PowerShell
กรณีเริ่มต้นใน PowerShell Switch จะถูกใช้เมื่อไม่มีกรณีใดที่ระบุตรงกับค่า
คีย์เวิร์ด default ในคำสั่ง switch ระบุบล็อกของโค้ดที่ควรดำเนินการ หากไม่มีกรณีใดที่ระบุตรงกับค่าของนิพจน์
ดูตัวอย่างด้านล่าง
$color = 'Yellow'
switch ($color) {
'Red' {
Write-Output "Stop"
}
'Green' {
Write-Output "Go"
}
'Blue' {
Write-Output "Cool"
}
default {
Write-Output "Unknown color"
}
}ในกรณีนี้ ผลลัพธ์จะเป็น "Unknown color" เนื่องจาก 'Yellow' ไม่ตรงกับกรณีใดๆ ที่ระบุ
ดูภาพหน้าจอด้านล่างเพื่อดูผลลัพธ์:
อ่านพารามิเตอร์สวิตช์ PowerShell
ใช้ตัวแบ่งในคำสั่งสวิตช์ PowerShell
ใน PowerShell สามารถใช้คำสั่ง break ภายในบล็อก switch เพื่อออกจากคำสั่ง switch ก่อนเวลาอันควร สิ่งนี้มีประโยชน์เมื่อคุณต้องการหยุดการประเมินกรณีและปัญหาเพิ่มเติมเมื่อพบรายการที่ตรงกันและมีการดำเนินการโค้ดที่เกี่ยวข้อง
ด้านล่างนี้คือตัวอย่างที่ฉันใช้คำสั่งแบ่งในคำสั่ง switch ใน PowerShell
$number = 2
switch ($number) {
1 {
Write-Output "One"
break
}
2 {
Write-Output "Two"
break
}
3 {
Write-Output "Three"
break
}
default {
Write-Output "Other number"
}
}ในตัวอย่างนี้ ผลลัพธ์จะเป็น "Two" และคำสั่ง switch จะสิ้นสุดทันทีหลังจากนั้น
ตอนนี้ทำตามภาพหน้าจอด้านล่างเพื่อดูผลลัพธ์หลังจากที่ฉันรันสคริปต์ PowerShell ด้านบนโดยใช้โค้ด VS
อ่านตัวอย่างไวด์การ์ดสวิตช์ PowerShell
เคสสวิตช์ PowerShell ไม่ละเอียดอ่อน
ตามค่าเริ่มต้น คำสั่ง switch ใน PowerShell คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ไม่แยกความแตกต่างระหว่างอักขระตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเมื่อจับคู่ค่า อย่างไรก็ตาม คุณกำหนดให้พิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้โดยใช้พารามิเตอร์ -CaseSensitive
นี่คือสคริปต์ PowerShell ที่สมบูรณ์
$fruit = 'APPLE'
switch ($fruit) {
'apple' {
Write-Output "This is an apple."
}
'banana' {
Write-Output "This is a banana."
}
default {
Write-Output "Unknown fruit."
}
}
ในตัวอย่างนี้ ผลลัพธ์จะเป็น "This is an apple" แม้ว่าตัวพิมพ์จะไม่ตรงกันก็ตาม หากคุณต้องการให้คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คุณสามารถแก้ไขคำสั่ง switch ได้ดังนี้
$fruit = 'APPLE'
switch -CaseSensitive ($fruit) {
'apple' {
Write-Output "This is an apple."
}
'banana' {
Write-Output "This is a banana."
}
default {
Write-Output "Unknown fruit."
}
}ตอนนี้ ผลลัพธ์จะเป็น "Unknown Fruit" เนื่องจาก 'APPLE' ไม่ตรงกับ 'apple' ในการเปรียบเทียบแบบคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ผลลัพธ์อยู่ในภาพหน้าจอด้านล่าง เมื่อคุณรันสคริปต์ มันจะส่งคืนเอาต์พุตเดียวกัน
อ่านเคสสวิตช์ PowerShell ด้วย Regex
คำสั่งสวิตช์ที่ซ้อนกันใน PowerShell
ต่อไปนี้คือตัวอย่างวิธีใช้คำสั่งสวิตช์แบบซ้อนใน PowerShell
ตัวอย่าง:
$data = @(
@{Name="John"; Age=28}
@{Name="Jane"; Age=32}
)
foreach ($person in $data) {
switch ($person.Name) {
"John" {
switch ($person.Age) {
{$_ -lt 30} { "John is under 30" }
default { "John is 30 or older" }
}
}
"Jane" {
switch ($person.Age) {
{$_ -lt 35} { "Jane is under 35" }
default { "Jane is 35 or older" }
}
}
default { "Unknown person" }
}
}ตัวอย่างคำสั่งสวิตช์ PowerShell
ตอนนี้ ฉันจะแสดงตัวอย่างที่เป็นประโยชน์บางประการเกี่ยวกับวิธีใช้คำสั่ง switch ใน PowerShell
ตัวอย่างที่ 1: ตรวจสอบประเภทไฟล์
ตัวอย่างนี้จะอธิบายวิธีใช้คำสั่ง switch เพื่อระบุประเภทของไฟล์ตามนามสกุลของไฟล์
ด้านล่างนี้เป็นสคริปต์ PowerShell ที่สมบูรณ์
$file = 'document.pdf'
switch -Regex ($file) {
'\.txt$' {
Write-Output "Text file"
}
'\.pdf$' {
Write-Output "PDF document"
}
'\.jpg$' {
Write-Output "JPEG image"
}
default {
Write-Output "Unknown file type"
}
}ในตัวอย่างนี้ ผลลัพธ์จะเป็น "PDF document" เนื่องจากนามสกุลไฟล์ตรงกับ \.pdf$
ฉันรันสคริปต์ PowerShell ข้างต้น และคุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:
ตัวอย่างที่ 2: การกำหนดบทบาทของผู้ใช้
ตัวอย่างนี้แสดงวิธีกำหนดบทบาทผู้ใช้ตามอินพุต ดูสคริปต์ด้านล่าง:
$userRole = 'Admin'
switch ($userRole) {
'Admin' {
Write-Output "Full access granted."
}
'Editor' {
Write-Output "Edit access granted."
}
'Viewer' {
Write-Output "Read-only access granted."
}
default {
Write-Output "No access granted."
}
}ในที่นี้ ผลลัพธ์จะเป็น "ได้รับสิทธิ์การเข้าถึงแบบเต็ม" เนื่องจาก $userRole คือ 'Admin'
ตัวอย่างที่ 3: ข้อความวันในสัปดาห์
ตัวอย่างนี้ใช้คำสั่ง switch เพื่อพิมพ์ข้อความตามวันในสัปดาห์
หากต้องการรับผลลัพธ์ คุณสามารถเรียกใช้สคริปต์ PowerShell ด้านล่างโดยใช้โค้ด VS
$today = (Get-Date).DayOfWeek
switch ($today) {
'Monday' {
Write-Output "Start your week strong!"
}
'Wednesday' {
Write-Output "Midweek hustle!"
}
'Friday' {
Write-Output "Almost weekend!"
}
'Saturday' -or 'Sunday' {
Write-Output "Enjoy your weekend!"
}
default {
Write-Output "Keep going!"
}
}เนื่องจากวันนี้เป็นวันพฤหัสบดี จึงแสดง "Keep going" เป็นเอาต์พุต คุณสามารถตรวจสอบภาพหน้าจอด้านล่าง:
บทสรุป
จากบทช่วยสอนและตัวอย่างข้างต้น ฉันคาดว่าตอนนี้คุณคงทราบวิธีใช้คำสั่ง Switch ใน PowerShell แล้ว ฉันได้อธิบายวิธีใช้คำสั่งแบ่งในกรณีสวิตช์ PowerShell แล้ว
อย่าลังเลที่จะแสดงความคิดเห็นด้านล่างหากคุณยังมีคำถาม





