Không thể tải ps1 vì tập lệnh đang chạy bị tắt trên hệ thống này


109

Tôi cố gắng chạy powershelltập lệnh từ c #.

Đầu tiên tôi đặt ExecutionPolicyđể Unrestrictedvà kịch bản đang chạy ngay bây giờ từ PowerShell ISE.

Bây giờ đây là c # mã của tôi:

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}

Và đầu ra là:

Không thể tải ps1 vì tập lệnh đang chạy bị tắt trên hệ thống này. Để biết thêm thông tin, hãy xem about_Execution_Policies tại http://go.microsoft.com/fwlink/?LinkID=135170 .


1
Bạn đã thử đặt phạm vi chính sách thành Máy cục bộ chưa? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Totem

6
Chạy Get-ExecutionPolicy -Listvà chỉnh sửa câu hỏi của bạn với kết quả. Lệnh này sẽ hiển thị cho bạn các Scope khác nhau và cài đặt ExecutionPolicy của chúng.
James C.

Điều đó dường như không hiệu quả, tôi sợ, nhưng nói rõ ràng, điều này KHÔNG ở cấp dòng lệnh, vì tôi có thể chạy trên máy tính từ xa mà không gặp vấn đề gì.
yorkshireflatcap

Câu trả lời:


334

Điều này có thể là do người dùng hiện tại có một không xác định ExecutionPolicy.

Bạn có thể thử những cách sau:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

2
Làm !! Cảm ơn !
Rakhi Dhavale

2
Tôi gặp sự cố này với Bưu kiện và tôi đã giải quyết được câu trả lời của bạn, cảm ơn bạn!
Ângelo Polotto

10
BTW, điều này nên được thực thi trong Powershell, không phải cmd của windows.
Eric Wang

Cám ơn rất nhiều!! Các bạn nam nên thử món này trước nhé!
Fes Nguyen

3
@HDJEMAI, tôi đoán điều này phụ thuộc vào ngữ cảnh bạn đang chạy cái này. Unrestrictednghĩa là bạn có thể chạy tất cả các tập lệnh. Một tùy chọn khác cho điều này là đặt chính sách thực thi RemoteSignedvì điều này sẽ cho phép Allow local scripts and remote signed scriptsnhưng tùy thuộc vào ứng dụng và ứng dụng đang làm gì, điều này vẫn có thể gây ra lỗi tương tự. Tôi nghĩ rằng cách tiếp cận của bạn hợp lệ về mặt bảo mật và bạn luôn có thể đọc chính sách này trước khi sử dụng Get-ExecutionPloicy. Mặc dù điều này đang được nói rằng phạm vi là người dùng hiện tại nên rủi ro theo ý kiến ​​của tôi là nhỏ. Tôi hi vọng cái này giúp được.
Tom

26

Mở powershell ở chế độ quản trị và chạy lệnh sau

Set-ExecutionPolicy RemoteSigned


23

Chạy mã này trong powershell hoặc cmd của bạn

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
Hoạt động cho các ngôn ngữ khác (chỉnh sửa một ứng dụng Ionic ngay bây giờ)!
Chiwda

Làm việc cho tôi cũng vậy, chạy bên trong thiết bị đầu cuối VIsual Studio Code để có thể chạy lệnh
Typescript

8

Nếu bạn đang sử dụng mã studio trực quan:

  1. Mở thiết bị đầu cuối
  2. Chạy lệnh: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Sau đó chạy lệnh protractor conf.js

Điều này liên quan đến việc thực thi tập lệnh kiểm tra thước đo liên quan và tôi gặp phải vấn đề tương tự và nó đã được giải quyết như thế này.


7

Ba bước sau được sử dụng để sửa lỗi Running Scripts bị tắt trên lỗi Hệ thống này

Bước 1: Để khắc phục loại sự cố này, chúng ta phải khởi động trình bao điện ở chế độ quản trị viên.

Bước 2: Gõ lệnh sau set-ExecutionPolicy RemoteSigned Step3: Nhấn Y để xác nhận của bạn.

Truy cập phần sau để biết thêm thông tin https://youtu.be/J_596H-sWsk


3

Chính sách thực thi PowerShell được đặt mặc định thành Hạn chế. Bạn có thể thay đổi các chính sách thực thi PowerShell bằng lệnh ghép ngắn Set-ExecutionPolicy. Để chạy tập lệnh bên ngoài, hãy đặt chính sách thành RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned Dưới đây là danh sách bốn chính sách thực thi khác nhau trong PowerShell

Hạn chế - Không thể chạy tập lệnh. AllSigned - Chỉ có thể chạy các tập lệnh do nhà xuất bản đáng tin cậy ký. RemoteSigned - Các tập lệnh đã tải xuống phải được ký bởi một nhà xuất bản đáng tin cậy. Không hạn chế - Tất cả các tập lệnh Windows PowerShell đều có thể chạy được.


3

mở cửa sổ powershell ở chế độ quản trị viên và chạy lệnh sau và công việc của nó VOILA !!

Set-ExecutionPolicy RemoteSigned


1

Một giải pháp khác là Xóa ng.ps1 khỏi thư mục C: \ Users% username% \ AppData \ Roaming \ npm \ và xóa bộ nhớ cache npm


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.