PowerShell có một số chế độ thực thi xác định loại mã nào được phép chạy, điều này được điều chỉnh bởi một khóa sổ đăng ký tồn tại trong HKLM. Có 4 chế độ thực thi khác nhau, chúng là:
- Bị giới hạn: Chính sách thực hiện mặc định, không chạy các tập lệnh, chỉ các lệnh tương tác.
- Tất cả đã ký: Chạy tập lệnh; tất cả các tập lệnh và tệp cấu hình phải được ký bởi một nhà xuất bản mà bạn tin cậy; sẽ mở ra cho bạn nguy cơ chạy các tập lệnh đã ký (nhưng độc hại), sau khi xác nhận rằng bạn tin cậy nhà xuất bản.
- Đã ký từ xa: Các tập lệnh cục bộ chạy không có chữ ký. Bất kỳ tập lệnh tải xuống nào cần chữ ký kỹ thuật số, ngay cả đường dẫn UNC.
- Không hạn chế: Chạy tập lệnh; tất cả các tập lệnh và tệp cấu hình được tải xuống từ các ứng dụng giao tiếp như Microsoft Outlook, Internet Explorer, Outlook Express và Windows Messenger chạy sau khi xác nhận rằng bạn hiểu tệp có nguồn gốc từ Internet; không cần chữ ký số; sẽ mở ra cho bạn nguy cơ chạy các tập lệnh độc hại chưa được tải xuống từ các ứng dụng này
Chính sách thực thi mặc định của PowerShell được gọi là Hạn chế. Ở chế độ này, PowerShell chỉ hoạt động như một trình bao tương tác. Nó không chạy các tập lệnh và chỉ tải các tệp cấu hình được ký bởi một nhà xuất bản mà bạn tin cậy. Nếu bạn nhận được lỗi đỏ khó chịu, nguyên nhân có thể xảy ra nhất là bạn đang cố chạy một tập lệnh chưa ký. Điều an toàn nhất cần làm là thay đổi Chính sách thực thi thành không hạn chế, chạy tập lệnh của bạn và sau đó thay đổi nó trở lại để hạn chế.
Để thay đổi nó thành không bị giới hạn, hãy chạy lệnh sau từ PowerShell hành chính:
Set-ExecutionPolicy Unrestricted
Bạn sẽ được hỏi nếu bạn chắc chắn rằng bạn muốn thay đổi chính sách thực thi nhấn nút nhập một lần nữa.
Set-ExecutionPolicy Restricted
Một lần nữa bạn sẽ được hỏi nếu bạn chắc chắn rằng bạn muốn thay đổi chế độ thực hiện, hãy tiếp tục và nhấn enter.