Cách sử dụng Switch trong PowerShell: Hướng dẫn chi tiết từ cơ bản đến nâng cao

PowerShell là một ngôn ngữ kịch bản mạnh mẽ, và câu lệnh switch là một trong những cấu trúc điều khiển quan trọng giúp bạn xử lý nhiều điều kiện một cách gọn gàng, dễ đọc. Thay vì viết hàng loạt if-elseif,

cách sử dụng switch trong powershell - Hình 3

Switch trong PowerShell là một cấu trúc điều khiển cho phép bạn thực hiện kiểm tra một giá trị (biểu thức) và thực thi khối lệnh tương ứng với giá trị đó. Nó tương tự như switch-case trong các ngôn ngữ lập trình khác, nhưng PowerShell mở rộng thêm nhiều tùy chọn linh hoạt như so sánh với điều kiện phức tạp, sử dụng ký tự đại diện (wildcard), biểu thức chính quy (regex), và thậm chí xử lý nhiều giá trị cùng lúc.

Khác với câu lệnh if chỉ kiểm tra một điều kiện đúng/sai, switch được thiết kế để đối sánh một giá trị với nhiều trường hợp (case) một cách có tổ chức. Điều này giúp mã nguồn trở nên sạch sẽ, dễ bảo trì và dễ đọc hơn, đặc biệt khi bạn có từ ba nhánh rẽ trở lên.

Cú pháp cơ bản của câu lệnh Switch trong PowerShell

cách sử dụng switch trong powershell - Hình 2

Cú pháp cơ bản nhất của switch trong PowerShell như sau:

switch (<giá_trị>)
{ <giá_trị1> { <khối lệnh> } <giá_trị2> { <khối lệnh> } default { <khối lệnh> }
}

Trong đó:

    • <giá_trị>: Biểu thức hoặc biến cần kiểm tra.
    • <giá_trị1>, <giá_trị2>: Các giá trị hoặc mẫu cần so sánh với giá trị đầu vào.
    • { <khối lệnh> }: Các lệnh sẽ được thực thi khi khớp.
    • default: (tùy chọn) Khối lệnh thực thi khi không có trường hợp nào khớp.
Xem thêm:  Cách tắt quyền ứng dụng trên điện thoại để bảo vệ quyền riêng tư tuyệt đối

Ví dụ đơn giản: kiểm tra ngày trong tuần và in ra thông báo:

Ví dụ 1:

Mã PowerShell Kết quả
$ngay = “Thứ Hai”
switch ($ngay) { “Thứ Hai” { “Hôm nay là đầu tuần” } “Thứ Sáu” { “Cuối tuần sắp đến” } default { “Ngày bình thường” } }
Hôm nay là đầu tuần

Mặc định, switch kiểm tra độ chính xác tuyệt đối (case-sensitive? không, mặc định là không phân biệt hoa thường, trừ khi bạn thêm tùy chọn -CaseSensitive). Nếu giá trị đầu vào khớp với một trường hợp, khối lệnh tương ứng được thực thi và sau đó thoát khỏi cấu trúc switch (không giống như C# cần break). Tuy nhiên, , [a-z] trong các mẫu so sánh. Điều này cực kỳ hữu ích khi bạn muốn khớp nhiều giá trị có cùng dạng.

Ví dụ 2:

$fileName = "report_2025.xlsx"
switch -Wildcard ($fileName)
{ ".xlsx" { "File Excel" } ".pdf" { "File PDF" } "report_" { "Báo cáo" } default { "File khác" }
}

Kết quả: “File Excel” (vì khớp với mẫu .xlsx). Lưu ý rằng thứ tự các mẫu rất quan trọng: nếu một mẫu rộng hơn được đặt trước, nó sẽ được khớp trước.

Mặc định, switch không phân biệt hoa thường. Nếu bạn cần phân biệt, hãy thêm tham số -CaseSensitive.

Làm thế nào để thoát khỏi switch khi đã khớp một trường hợp?

Dùng từ khóa break bên trong khối lệnh của trường hợp đó. Nó sẽ thoát hoàn toàn cấu trúc switch.

Có thể sử dụng switch để kiểm tra nhiều giá trị cùng lúc không?

Có.

Không. PowerShell không có cơ chế fall-through mặc định. Nếu bạn muốn thực thi nhiều khối cho một giá trị,

-Wildcard sử dụng các ký tự đại diện đơn giản như *,?, [a-z]. -Regex sử dụng biểu thức chính quy đầy đủ, mạnh mẽ hơn nhưng cũng phức tạp hơn.

Kết luận

cách sử dụng switch trong powershell - Hình 1

Cách sử dụng switch trong PowerShell là một kỹ năng thiết yếu giúp bạn viết script chuyên nghiệp, dễ bảo trì và hiệu quả. Từ những so sánh cơ bản đến các tùy chọn nâng cao như wildcard, regex và script block, switch mang đến sự linh hoạt vượt trội so với if-elseif truyền thống. Hãy luôn nhớ thứ tự trường hợp, sử dụng break khi cần, và thêm default để xử lý ngoại lệ. Bằng cách nắm vững cấu trúc này, bạn có thể giải quyết nhiều bài toán xử lý điều kiện một cách tối ưu trong PowerShell.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *