PowerShell Execution Policy Là Gì? Hướng Dẫn Chi Tiết Từ A Đến Z Cho Người Mới

powershell execution policy là gì

PowerShell Execution Policy là một cơ chế bảo mật tích hợp trong hệ thống Windows, kiểm soát cách thức các tập lệnh PowerShell được tải và thực thi. Khi bạn lần đầu chạy một file `.ps1` hoặc script từ nguồn không xác định, chính sách này sẽ quyết định liệu script đó có được phép chạy hay không. Hiểu rõ execution policy giúp bạn vừa bảo vệ máy tính khỏi các mã độc, vừa linh hoạt trong việc chạy các script hợp lệ.

Khái Niệm Cốt Lõi Về PowerShell Execution Policy

powershell execution policy là gì - Hình 4

PowerShell Execution Policy không phải là một tường lửa hay hệ thống chống virus. Đây là một lớp bảo vệ dựa trên quy tắc, giúp ngăn chặn việc vô tình chạy các script không đáng tin cậy. Chính sách này có thể được thiết lập ở nhiều cấp độ khác nhau trong hệ thống, từ máy tính cục bộ đến toàn bộ tổ chức thông qua Group Policy.

Bản chất của execution policy xoay quanh việc xác thực nguồn gốc và chữ ký số của script. Một script ký số bởi nhà phát hành đáng tin cậy sẽ được phép chạy, trong khi script không có chữ ký hoặc từ nguồn không tin cậy có thể bị chặn. Điều này giúp doanh nghiệp và quản trị viên kiểm soát chặt chẽ môi trường PowerShell mà không làm gián đoạn công việc hàng ngày.

Các Loại Execution Policy Trong PowerShell

powershell execution policy là gì - Hình 3

PowerShell cung cấp sáu mức chính sách khác nhau, mỗi mức mang một mục đích và mức độ bảo mật riêng. Chỉ chạy được lệnh tương tác.

Xem thêm:  Cách ẩn file trên Windows 11: Hướng dẫn chi tiết từ cơ bản đến nâng cao
Cao nhất Máy trạm chuẩn, người dùng cuối RemoteSigned Script tải từ internet phải có chữ ký số tin cậy. Script local được phép chạy. Cao Hầu hết môi trường làm việc AllSigned Tất cả script (local và remote) đều phải có chữ ký số từ nhà phát hành tin cậy. Cao hơn RemoteSigned Môi trường yêu cầu kiểm soát nghiêm ngặt Unrestricted Cho phép chạy tất cả script. Script không ký sẽ hiển thị cảnh báo trước khi chạy. Thấp Môi trường phát triển, thử nghiệm Bypass Không chặn bất kỳ script nào, không có cảnh báo. Hoàn toàn tự do. Thấp nhất Tự động hóa, script nội bộ đáng tin cậy Undefined Chưa thiết lập chính sách. Sẽ sử dụng chính sách mặc định (thường là Restricted). Phụ thuộc vào mặc định Khi chưa cấu hình

Chi Tiết Từng Chính Sách

Restricted: Đây là chế độ an toàn nhất, thường được áp dụng cho người dùng không am hiểu kỹ thuật. Người dùng chỉ có thể chạy các lệnh trực tiếp trong console PowerShell, không thể chạy file `.ps1`. Nếu bạn cố tình chạy script, PowerShell sẽ báo lỗi ngay lập tức.

RemoteSigned: Đây là chính sách mặc định trên hầu hết phiên bản Windows 10 và 11. Script do bạn viết trên máy local sẽ chạy bình thường. Script tải từ internet (qua email, trình duyệt) phải được ký số bởi nhà phát hành đáng tin cậy. Nếu script từ internet không có chữ ký, bạn phải dùng lệnh `Unblock-File` để gỡ bỏ trạng thái chặn.

AllSigned: Tất cả script, dù là local do bạn tự viết, cũng phải có chữ ký số. Điều này đảm bảo không có script nào chạy mà chưa qua kiểm duyệt. Thích hợp cho các máy chủ hoặc môi trường nhạy cảm.

Xem thêm:  Cách mở VPN Settings Windows 11: Hướng dẫn chi tiết từ A đến Z cho người mới bắt đầu

Unrestricted: Script không ký vẫn chạy được, nhưng PowerShell sẽ hiển thị cảnh báo xác nhận từ người dùng trước khi chạy. Đây là mức trung gian giữa bảo mật và tiện lợi.

Bypass: Mọi script đều được chạy mà không có bất kỳ rào cản nào. Thường được sử dụng trong các giải pháp tự động hóa hoặc khi bạn chắc chắn về độ an toàn của script. Không khuyến khích dùng cho môi trường sản xuất.

Undefined: Chưa có chính sách nào được áp dụng. PowerShell sẽ sử dụng chính sách mặc định của phiên bản Windows. Ví dụ, trên Windows Server, mặc định thường là RemoteSigned.

Cách Kiểm Tra Execution Policy Hiện Tại

powershell execution policy là gì - Hình 2

Để xem chính sách nào đang hoạt động trên máy, bạn mở PowerShell với quyền Administrator và chạy lệnh sau:

    • `Get-ExecutionPolicy` – Trả về chính sách áp dụng cho phiên làm việc hiện tại.
    • `Get-ExecutionPolicy -Scope CurrentUser` – Xem chính sách dành riêng cho người dùng hiện tại.
    • `Get-ExecutionPolicy -List` – Hiển thị tất cả các mức chính sách từ thấp đến cao (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine).

    Kết quả trả về sẽ là một trong các giá trị: Restricted, RemoteSigned, AllSigned, Unrestricted, Bypass hoặc Undefined. Nếu bạn thấy `Undefined`, có nghĩa là chưa có chính sách nào được đặt, và hệ thống sẽ dùng giá trị mặc định.

    Hướng Dẫn Thay Đổi PowerShell Execution Policy

    Thay đổi execution policy cần quyền Administrator, trừ khi bạn chỉ thay đổi ở phạm vi CurrentUser. Lệnh cơ bản là:

    • `Set-ExecutionPolicy RemoteSigned` – Đặt chính sách cho LocalMachine (máy tính).
    • `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` – Chỉ áp dụng cho người dùng hiện tại.
    • `Set-ExecutionPolicy Bypass -Scope Process` – Chỉ áp dụng cho phiên PowerShell hiện tại, không lưu lại.
Xem thêm:  Hướng Dẫn Chi Tiết Cách Thay Đổi Start Menu Windows 11 Từ Cơ Bản Đến Nâng Cao

Khi thay đổi, PowerShell sẽ yêu cầu xác nhận.

Không có cách vô hiệu hóa hoàn toàn, nhưng

Lỗi này thường xảy ra vì script tải từ internet bị Windows đánh dấu là “từ vùng khác”. Hãy dùng lệnh `Unblock-File <đường dẫn script>` để gỡ bỏ trạng thái này, sau đó chạy lại.

Execution policy có áp dụng cho tất cả người dùng không?

Phụ thuộc vào phạm vi bạn đặt. `LocalMachine` áp dụng cho tất cả người dùng. `CurrentUser` chỉ áp dụng cho người dùng hiện tại. `Process` chỉ áp dụng cho phiên hiện tại.

Làm sao để đặt execution policy từ xa qua Group Policy?

Vào `Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell`. Tìm thiết lập “Turn on Script Execution” và đặt thành “Allow all scripts” hoặc “Allow only signed scripts” tùy nhu cầu.

PowerShell 7 có tuân thủ execution policy không?

PowerShell 7 trên Windows vẫn tuân thủ, nhưng trên macOS và Linux, nó bỏ qua execution policy (mặc định Unrestricted). Do đó, khi viết script đa nền tảng, hãy tự kiểm tra chính sách trong code bằng `Get-ExecutionPolicy`.

Kết Luận

powershell execution policy là gì - Hình 1

PowerShell Execution Policy là công cụ bảo mật quan trọng nhưng thường bị hiểu sai hoặc bỏ qua. Việc nắm vững các mức chính sách, cách kiểm tra và thay đổi đúng cách sẽ giúp bạn vừa bảo vệ hệ thống, vừa làm việc hiệu quả với PowerShell. Hãy luôn áp dụng nguyên tắc an toàn: chỉ hạ chính sách khi thực sự cần, ưu tiên dùng RemoteSigned kết hợp với Unblock-File, và không bao giờ đặt Bypass trên toàn bộ máy tính một cách vĩnh viễn.

Bằng cách hiểu rõ “powershell execution policy là gì” và áp dụng đúng cách, bạn đã tự trang bị cho mình một kiến thức nền tảng vững chắc để làm chủ PowerShell trong môi trường Windows.

Để 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 *