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

คำชี้แจงสวิตช์ 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 แล้ว

อย่าลังเลที่จะแสดงความคิดเห็นด้านล่างหากคุณยังมีคำถาม

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