Hầu hết các câu trả lời hiện có giải thích về Làm thế nào , nhưng rất ít câu giải thích Tại sao . Và trước khi bạn đi xung quanh thực thi mã từ những người lạ trên Internet, đặc biệt là mã vô hiệu hóa các biện pháp bảo mật, bạn nên hiểu chính xác những gì bạn đang làm. Vì vậy, đây là một chi tiết nhỏ hơn về vấn đề này.
Từ trang Chính sách thực thi của TechNet :
Chính sách thực thi Windows PowerShell cho phép bạn xác định các điều kiện theo đó Windows PowerShell tải các tệp cấu hình và chạy các tập lệnh.
Những lợi ích trong đó, như được liệt kê bởi PowerShell Basics - Chính sách thực thi và ký mã , là:
- Kiểm soát thực thi - Kiểm soát mức độ tin cậy để thực thi các tập lệnh.
- Lệnh Highjack - Ngăn chặn lệnh trong đường dẫn của tôi.
- Danh tính - Là tập lệnh được tạo và ký bởi nhà phát triển mà tôi tin tưởng và / hoặc được ký với chứng chỉ từ Cơ quan cấp chứng chỉ mà tôi tin tưởng.
- Tính toàn vẹn - Tập lệnh không thể được sửa đổi bởi phần mềm độc hại hoặc người dùng độc hại.
Để kiểm tra chính sách thực thi hiện tại của bạn, bạn có thể chạy Get-ExecutionPolicy
. Nhưng có lẽ bạn ở đây vì bạn muốn thay đổi nó.
Để làm như vậy, bạn sẽ chạy Set-ExecutionPolicy
lệnh ghép ngắn.
Bạn sẽ có hai quyết định chính khi cập nhật chính sách thực thi.
Loại chính sách thực thi:
Restricted
† - No Script hoặc địa phương, vùng xa hoặc tải về có thể được thực hiện trên hệ thống.
AllSigned
- Tất cả các tập lệnh được chạy yêu cầu phải được ký điện tử.
RemoteSigned
- Tất cả các tập lệnh từ xa (UNC) hoặc tải xuống cần phải được ký.
Unrestricted
- Không có chữ ký cho bất kỳ loại kịch bản được yêu cầu.
Phạm vi thay đổi mới
LocalMachine
† - Chính sách thực hiện ảnh hưởng đến tất cả người dùng của máy tính.
CurrentUser
- Chính sách thực thi chỉ ảnh hưởng đến người dùng hiện tại.
Process
- Chính sách thực thi chỉ ảnh hưởng đến quá trình Windows PowerShell hiện tại.
= Mặc định
Ví dụ : nếu bạn muốn thay đổi chính sách thành RemoteSign chỉ cho Người dùng hiện tại, bạn sẽ chạy lệnh sau:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Lưu ý : Để thay đổi chính sách Thực thi, bạn phải chạy PowerShell As Adminstrator . Nếu bạn đang ở chế độ thông thường và cố gắng thay đổi chính sách thực thi, bạn sẽ gặp phải lỗi sau:
Quyền truy cập vào khóa đăng ký 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' bị từ chối. Để thay đổi chính sách thực thi cho phạm vi mặc định (LocalMachine), hãy khởi động Windows PowerShell với tùy chọn "Chạy với tư cách quản trị viên".
Nếu bạn muốn thắt chặt các hạn chế nội bộ đối với các tập lệnh của riêng bạn chưa được tải xuống từ Internet (hoặc ít nhất là không chứa siêu dữ liệu UNC), bạn có thể buộc chính sách chỉ chạy các tập lệnh đã ký. Để ký các tập lệnh của riêng bạn, bạn có thể làm theo các hướng dẫn trên bài viết của Scott Hanselman về Ký các tập lệnh PowerShell .
Lưu ý : Hầu hết mọi người có thể gặp lỗi này bất cứ khi nào họ mở Powershell vì điều đầu tiên PS cố gắng thực hiện khi khởi chạy là thực thi tập lệnh hồ sơ người dùng của bạn để thiết lập môi trường của bạn theo cách bạn thích.
Các tập tin thường nằm ở:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Bạn có thể tìm vị trí chính xác bằng cách chạy biến powershell
$profile
Nếu không có gì bạn quan tâm trong hồ sơ và không muốn làm phiền với cài đặt bảo mật của mình, bạn có thể xóa nó và powershell sẽ không tìm thấy bất cứ điều gì mà nó không thể thực thi.