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

สตริงสวิตช์ PowerShell ประกอบด้วย [พร้อมตัวอย่าง]


สมาชิกในทีมคนหนึ่งของฉันเพิ่งค้นหาการใช้งานบรรจุในคำสั่งสวิตช์ PowerShell นี่เป็นแนวคิดที่สำคัญมากที่นักพัฒนา PowerShell ใช้ ในบทช่วยสอนนี้ ฉันจะอธิบายทุกอย่างเกี่ยวกับ “สตริงสวิตช์ PowerShell ประกอบด้วย” พร้อมตัวอย่าง

ในการตรวจสอบว่าสตริงมีสตริงย่อยเฉพาะโดยใช้คำสั่ง switch ของ PowerShell หรือไม่ คุณสามารถใช้ตัวดำเนินการ -Wildcard ตัวอย่างเช่น เมื่อระบุรายชื่อไฟล์ คุณสามารถจัดหมวดหมู่ตามนามสกุลไฟล์ได้โดยใช้คำสั่ง switch ดังนี้:

$files = @("report.pdf", "data.csv", "presentation.pptx", "notes.txt")

foreach ($file in $files) {
    switch -Wildcard ($file) {
        '*.pdf' { Write-Output "$file is a PDF document." }
        '*.csv' { Write-Output "$file is a CSV file." }
        '*.pptx' { Write-Output "$file is a PowerPoint presentation." }
        '*.txt' { Write-Output "$file is a Text file." }
        default { Write-Output "$file type is unknown." }
    }
}

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

สตริงสวิตช์ PowerShell ประกอบด้วย

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

ไวยากรณ์พื้นฐานของคำสั่ง switch ใน PowerShell นั้นตรงไปตรงมา:

switch ($variable) {
    'condition1' { action1 }
    'condition2' { action2 }
    default { defaultAction }
}

เมื่อคุณต้องการตรวจสอบว่าสตริงมีสตริงย่อยที่เฉพาะเจาะจงหรือไม่ คุณสามารถใช้ตัวดำเนินการ -contains ภายในคำสั่ง switch

ฉันขอแสดงวิธีการทำเช่นนี้

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

ตัวอย่างที่ 1: การตรวจจับประเภทไฟล์

สมมติว่าคุณมีรายชื่อไฟล์และจำเป็นต้องจัดหมวดหมู่ตามนามสกุลไฟล์ ต่อไปนี้คือวิธีที่คุณสามารถทำได้ด้วยคำสั่ง switch และสตริงประกอบด้วย:

$files = @("report.pdf", "data.csv", "presentation.pptx", "notes.txt")

foreach ($file in $files) {
    switch -Wildcard ($file) {
        '*.pdf' { Write-Output "$file is a PDF document." }
        '*.csv' { Write-Output "$file is a CSV file." }
        '*.pptx' { Write-Output "$file is a PowerPoint presentation." }
        '*.txt' { Write-Output "$file is a Text file." }
        default { Write-Output "$file type is unknown." }
    }
}

ในตัวอย่างนี้ ตัวดำเนินการ -Wildcard อนุญาตให้คำสั่ง switch จับคู่รูปแบบภายในชื่อไฟล์

คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง:

ตรวจสอบ Wildcards ใน PowerShell Switch

ตัวอย่างที่ 2: การกรองรายการบันทึก

สมมติว่าคุณกำลังวิเคราะห์รายการบันทึกและต้องการกรองรายการที่มีคำหลักเฉพาะออก ต่อไปนี้คือวิธีการและด้านล่างนี้คือสคริปต์ PowerShell ที่สมบูรณ์สำหรับ Switch String ประกอบด้วย

$logEntries = @(
    "Error: Disk space low on server01",
    "Warning: High memory usage on server02",
    "Info: Backup completed successfully on server03",
    "Error: Network timeout on server04"
)

foreach ($entry in $logEntries) {
    switch -Regex ($entry) {
        'Error' { Write-Output "Critical Issue: $entry" }
        'Warning' { Write-Output "Warning: $entry" }
        'Info' { Write-Output "Information: $entry" }
        default { Write-Output "Uncategorized: $entry" }
    }
}

ในที่นี้ โอเปอเรเตอร์ -Regex ใช้เพื่อจับคู่นิพจน์ทั่วไปภายในรายการบันทึก ช่วยให้การจับคู่รูปแบบมีความยืดหยุ่นมากขึ้น

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

ตัวอย่างที่ 3: หลายเงื่อนไข

คุณสามารถจัดการหลายเงื่อนไขได้ภายในกรณีเดียวโดยการจัดกลุ่มเข้าด้วยกัน นี่คือตัวอย่างที่สมบูรณ์สำหรับ “PowerShell Switch String ประกอบด้วย”

$input = "New York"

switch ($input) {
    {$_ -contains "New"} { Write-Output "This contains 'New'." }
    {$_ -contains "York"} { Write-Output "This contains 'York'." }
    default { Write-Output "No match found." }
}

ในตัวอย่างนี้ ตัวแปร $_ แสดงรายการปัจจุบันที่กำลังได้รับการประเมิน และ -contains ตรวจสอบว่ามีสตริงย่อยอยู่หรือไม่

ตรวจสอบพารามิเตอร์สวิตช์ PowerShell

ตัวอย่างที่ 4: การจับคู่แบบคำนึงถึงขนาดตัวพิมพ์

คำสั่ง switch ของ PowerShell คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ตามค่าเริ่มต้น แต่คุณสามารถทำให้คำสั่งเหล่านี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้โดยใช้พารามิเตอร์ -CaseSensitive:

$city = "Seattle"

switch -CaseSensitive ($city) {
    "seattle" { Write-Output "Matched 'seattle'." }
    default { Write-Output "No match found." }
}

เนื่องจาก Seattle และ seattle ได้รับการปฏิบัติที่แตกต่างกัน กรณีเริ่มต้นจึงจะดำเนินการ

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

บทสรุป

ในบทช่วยสอนนี้ ฉันได้อธิบายวิธีการทำงานกับคำสั่งสวิตช์ PowerShell ที่มีสตริงประกอบด้วย และให้ตัวอย่างจริงที่แตกต่างกันที่เกี่ยวข้องกับ “สตริงสวิตช์ PowerShell ประกอบด้วย“

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