สตริงสวิตช์ 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 ประกอบด้วย“


