PowerShell nói rằng việc thực thi các tập lệnh bị vô hiệu hóa trên hệ thống này.


1761

Tôi đang cố gắng để chạy một tập tin gọi một tập lệnh từ cmd.exevà tôi nhận được lỗi dưới đây:

Management_Install.ps1 không thể được tải vì việc thực thi các tập lệnh bị vô hiệu hóa trên hệ thống này.

tôi chạy

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

và khi tôi chạy Get-ExecutionPolicytừ, Tôi Unrestrictedtrở lại.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1Không thể tải tệp vì việc thực thi tập lệnh bị vô hiệu hóa trên hệ thống này. Vui lòng xem " get-help about_signing" để biết thêm chi tiết.

Tại dòng: 1 char: 25

  • .\Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [], PSSecurityException

    • FullQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

Hệ thống là Windows Server 2008R2.

Tôi đang làm gì sai?


3
Không nhìn bạn đời, tôi đăng nhập với tư cách Quản trị viên và cũng đã chạy với tư cách là "Quản trị viên" và nhận được kết quả tương tự như trên ...
Conor

2
Đến tận cùng của nó, lỗi đã gây hiểu nhầm, vấn đề nằm ở kịch bản powershell của tôi, cảm ơn!
Conor

Giá trị của nó chỉ ra rằng Chính sách thực thi mang nhiều phạm vi và chạy PowerShell theo các cách khác nhau có thể giúp bạn có các chính sách khác nhau. Để xem danh sách các chính sách, chạy Get-ExecutionPolicy -List.
Bacon Bits

Câu trả lời:


2240

Nếu bạn đang sử dụng Windows Server 2008 R2 thì có cả phiên bản PowerShell x64x86, cả hai đều phải đặt chính sách thực thi của chúng. Bạn đã thiết lập chính sách thực thi trên cả hai máy chủ?

Quản trị viên , bạn có thể đặt chính sách thực thi bằng cách nhập chính sách này vào cửa sổ PowerShell:

Set-ExecutionPolicy RemoteSigned

Để biết thêm thông tin, hãy xem Sử dụng Cmdlet Set-ExecutPolicy .

Khi bạn hoàn tất, bạn có thể đặt chính sách trở về giá trị mặc định của nó với:

Set-ExecutionPolicy Restricted

141
Set-ExecutionPolicy Restricteddường như là cách để hoàn tác nó nếu bạn muốn đặt các quyền trở lại như cũ: technet.microsoft.com/en-us/l Library / ee176961.aspx . Phương pháp bỏ qua tạm thời bằng cách @Jack Edmondstrông an toàn hơn với tôi:powershell -ExecutionPolicy ByPass -File script.ps1
SharpC

33
Để có chính sách an toàn hơn, hãy phạm vi nó cho người dùng thực tế: Set-ExecutPolicy RemoteSign -Scope CurrentUser
Nuno Aniceto

Set-ExecutPolicy RemoteSign không thể là dòng đầu tiên trong tập lệnh của bạn. Nếu có, hãy tô sáng nó và chỉ được chọn INITIALLY trước khi chạy phần còn lại của tập lệnh.
ozzy432836

Tôi đã xem qua một câu hỏi tương tự trên trang web của SF, "chính sách Powershell thực hiện trong SQL Server” hỏi ngày 10 tháng 10 '14. Những câu trả lời có bao gồm Get-ExecutionPolicy -Listtrong đó đã giúp tôi để xem phạm vi khác nhau. Các cmd Get-ExecutionPolicykhông hiển thị tất cả các phạm vi. Import-Module SQLPSHiện đang làm việc với các chính sách đã thay đổi như sau : {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}.
SherlockS Lansheet

Nếu tôi làm điều này, thay đổi có kéo dài chỉ trong thời gian của PowerShell hiện tại không? Hay nó lớn hơn thế?
William Jockusch

709

Bạn có thể bỏ qua chính sách này cho một tệp bằng cách thêm -ExecutionPolicy Bypasskhi chạy PowerShell

powershell -ExecutionPolicy Bypass -File script.ps1

3
Điều này cũng thực sự tiện dụng nếu bạn đang sử dụng tài khoản không phải quản trị viên. Tôi đã thực hiện một lối tắt đến %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPasstrên thanh tác vụ của tôi.
zek19

3
Lưu ý rằng Microsoft Technet cách điệu nó là "Bypass", không phải "ByPass". Xem: technet.microsoft.com/nl-nl/l Library / hh849812.aspx
Jelle Geerts

1
Điều này không hiệu quả với tôi, tôi nhận được sự cho phép tương tự như thể tôi gọi nó bình thường. Gọi một ps1 từ .bat bằng cách thực type script.ps1 | powershell -hiện công việc mặc dù.
Một số_Guy

8
Mục đích của Chính sách thực thi là để ngăn mọi người bấm đúp vào .ps1và vô tình chạy thứ gì đó mà họ không có ý định. Điều này sẽ xảy ra với .batcác tệp
Kolob Canyon

Bạn tiết kiệm ngày của tôi cảm ơn bạn cho câu trả lời.
Arpit Patel

162

Tôi gặp vấn đề tương tự và lưu ý rằng mặc định cmdtrên Windows Server 2012 , đang chạy x64.

Đối với Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 hoặc Windows Server 2012 , hãy chạy các lệnh sau với tư cách Quản trị viên :

x86 (32 bit)
Mở C:\Windows\SysWOW64\cmd.exe
Chạy lệnhpowershell Set-ExecutionPolicy RemoteSigned

x64 (64 bit)
Mở C:\Windows\system32\cmd.exe
Chạy lệnhpowershell Set-ExecutionPolicy RemoteSigned

Bạn có thể kiểm tra chế độ bằng cách sử dụng

  • Trong CMD: echo %PROCESSOR_ARCHITECTURE%
  • Trong Powershell: [Environment]::Is64BitProcess

Tham khảo:
MSDN - Chính sách thực thi Windows PowerShell
Windows - Giải thích thư mục 32 bit so với 64 bit


133

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-ExecutionPolicylệ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.


8
Tôi cảm thấy điều quan trọng cần lưu ý là mặc dù chính sách thực thi là một biện pháp bảo mật, nhưng đó không phải là một chính sách nhằm ngăn người dùng thực thi mã PowerShell. Chính sách thực thi là một cái gì đó nhằm bảo vệ các tập lệnh của bạn và xác định ai đã viết, sửa đổi hoặc phê duyệt chúng và đó là tất cả. Thật tầm thường khi xoay quanh chính sách thực thi với một cái gì đó đơn giản như Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -.
Bacon Bits

1
Với sự tồn tại của -ExecutionPolicy ByPassmặc dù, mục đích của chính sách này là gì? Có phải chỉ để ngăn người dùng vô tình mở bảng điều khiển powershell và chạy tập lệnh độc hại? Kẻ tấn công không thể sử dụng một tập lệnh thực thi hay tập lệnh bó nếu họ muốn khắc phục điều này? Ngay cả sau khi đọc bình luận @BaconBits, tôi không chắc chính sách này có ý nghĩa gì để ngăn chặn ...
Ajedi32

2
@ Ajedi32 Nói rằng tôi có một nhiệm vụ chạy tập lệnh trên mạng chia sẻ. Khi tôi gọi tập lệnh của mình, tôi muốn quy trình của mình xác minh rằng tập lệnh đã được ký. Tôi muốn mã của mình kiểm tra lại xem tập lệnh tôi sẽ chạy có phải là mã tôi tin tưởng để chạy không. Tôi không quan tâm nếu bạn có thể chạy mã của tôi. Dừng lại đó là quyền truy cập 'công việc. Tôi chỉ muốn ngăn bạn làm cho tôi chạy mã mà tôi đã không viết. Quyền truy cập có nghĩa là hệ điều hành ngăn bạn sửa đổi mã của tôi khi bạn đăng nhập. Chính sách ký và thực thi mã có nghĩa là tập lệnh của tôi chưa được sửa đổi khi tôi chạy nó.
Bacon Bits

40

Trong Windows 7:

Chuyển đến Menu Bắt đầu và tìm kiếm "Windows PowerShell ISE".

Nhấp chuột phải vào phiên bản x86 và chọn "Chạy với tư cách quản trị viên".

Trong phần trên cùng, dán Set-ExecutionPolicy RemoteSigned; chạy tập lệnh. Chọn "Có".

Lặp lại các bước này cho phiên bản 64-bit của Powershell ISE (phiên bản không phải là x86).

Tôi chỉ làm rõ các bước mà @Chad Miller đã gợi ý. Cảm ơn Chad!


39

Cũng chạy lệnh này trước khi tập lệnh cũng giải quyết vấn đề:

set-executionpolicy unrestricted

27
-1 - Thực hiện theo nguyên tắc cho phép ít nhất. Ít nhất là đặt chính sách thành RemoteSignedtrước khi xóa tất cả các hạn chế đối với chính sách bảo mật của bạn. Nếu điều đó không hiệu quả, thì hãy đánh giá lại điểm đau của bạn là gì và tại sao nó không hoạt động. Bạn có thể đặt unrestrictedlàm phương án cuối cùng, nhưng nó không phải là điểm khởi đầu của bạn.
KyleMit

3
Cảm ơn đã chỉ ra tùy chọn này quá. Với tất cả sự tôn trọng nhu cầu bảo mật cho mục đích sản xuất, trong thời điểm nhu cầu về khả năng tạo mẫu nhanh rất cao, tất cả các chính sách và bảo mật thực sự cản trở việc hoàn thành công việc.
tishma

1
Về việc tạo mẫu lại nhận xét, tôi sợ rằng đây là lý do tại sao mã crappy được đưa vào sản xuất. Tất nhiên đây chỉ là một ví dụ tầm thường, nhưng nếu bạn không thể giải quyết một cái gì đó tầm thường này trong quá trình phát triển, thì thật đáng lo ngại khi phát hành. Ngoài ra, đối với mã bespoke và nếu bạn có thể, hãy biết môi trường đích - chúng tôi đặt phần lớn các hệ thống nội bộ của chúng tôi là Remotesigned.
Trix

33

Nếu bạn ở trong môi trường mà bạn không phải là quản trị viên, bạn có thể đặt Chính sách thực thi chỉ dành cho bạn và nó sẽ không yêu cầu quản trị viên.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

hoặc là

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Bạn có thể đọc tất cả về nó trong mục trợ giúp.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

Làm việc rất tốt cho tôi trong Windows 8, ngay cả khi Set-ExecutionPolicy Unrestrictedmột quản trị viên dường như không "không hạn chế" đủ để thực sự giúp đỡ.
patridge

1
Tôi tin rằng những gì bạn có thể gặp phải là GPO hoặc thứ gì đó khác ghi đè lên cài đặt của bạn về mức độ ExecutPolicy "LocalMachine". Bạn không thể ghi đè những gì Chính sách miền có tại chỗ bằng lệnh Set-ExecutPolicy. Tuy nhiên, nhưng đặt mức truy cập "Người dùng hiện tại", bạn và chỉ bạn sẽ có Chính sách thực thi được chỉ định. Điều này là do máy tính nhìn vào CurrentUser để biết chính sách thực thi trước khi nó nhìn vào cài đặt LocalMachine.
Micah 'Ninja Powershell'

1
Set-ExecutPolicy -Scope "CurrentUser" -ExecutPolicy "Unrestricted" là giải pháp duy nhất hiệu quả với tôi. Cảm ơn bạn
Paulj

32

RemoteSign: tất cả các tập lệnh bạn tự tạo sẽ được chạy và tất cả các tập lệnh được tải xuống từ Internet sẽ cần phải được ký bởi nhà xuất bản đáng tin cậy.

OK, thay đổi chính sách bằng cách gõ:

Set-ExecutionPolicy RemoteSigned

Như được đề xuất trong các bài đăng khác: nên bao gồm "-Scope CurrentUser" cho một chính sách an toàn hơn, khi điều đó có ý nghĩa.
clusterdude

32

Chúng ta có thể có được trạng thái hiện tại ExecutionPolicybằng lệnh dưới đây:

Get-ExecutionPolicy;

Theo mặc định, nó bị hạn chế . Để cho phép thực thi các tập lệnh PowerShell, chúng ta cần đặt ExecutPolicy này là Bypass hoặc Unrestricted .

Chúng tôi có thể đặt chính sách cho Người dùng hiện tại là Bypasshoặc Unrestrictedbằng cách sử dụng bất kỳ lệnh PowerShell nào dưới đây:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Chính sách không hạn chế tải tất cả các tệp cấu hình và chạy tất cả các tập lệnh. Nếu bạn chạy một tập lệnh không dấu được tải xuống từ Internet, bạn sẽ được nhắc cho phép trước khi nó chạy.

Trong khi đó trong chính sách Bỏ qua , không có gì bị chặn và không có cảnh báo hoặc lời nhắc nào trong khi thực thi tập lệnh. Bypass ExecutionPolicythoải mái hơn Unrestricted.


4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; AKA cách nhanh chóng và bẩn thỉu để nói với VS2015 ngừng phàn nàn và chạy kịch bản đẫm máu của tôi. cảm ơn. phao cứu sinh.
Eon

1
Dấu chấm phẩy ở cuối các lệnh của bạn là không cần thiết.
Bill_Stewart

23

Tôi đang sử dụng Windows 10 và không thể chạy bất kỳ lệnh nào. Lệnh duy nhất cung cấp cho tôi một số manh mối là:

[x64]

  1. Mở C: \ Windows \ SysWOW64 \ cmd.exe [với tư cách quản trị viên]
  2. Chạy lệnh> powershell Set-ExecutPolicy Không bị giới hạn

Nhưng điều này đã không làm việc. Nó đã được giới hạn. Có lẽ các chính sách bảo mật mới cho Windows10. Tôi đã có lỗi này:

Set-ExecutPolicy: Windows PowerShell đã cập nhật chính sách thực thi của bạn thành công, nhưng cài đặt bị ghi đè bởi chính sách được xác định ở phạm vi cụ thể hơn. Do ghi đè, trình bao của bạn sẽ giữ nguyên chính sách thực thi hiệu quả hiện tại của nó là ...

Vì vậy, tôi tìm thấy một cách khác ( giải pháp ):

  1. Mở lệnh chạy / Bảng điều khiển ( Win+ R)
  2. Loại: gpedit.msc ( Trình chỉnh sửa chính sách nhóm )
  3. Duyệt đến Chính sách máy tính cục bộ -> Cấu hình máy tính -> Mẫu quản trị -> Cấu phần Windows -> Windows Powershell .
  4. Bật " Bật thực thi tập lệnh "
  5. Đặt chính sách khi cần thiết. Tôi đặt của tôi thành " Cho phép tất cả các tập lệnh ".

Bây giờ hãy mở PowerShell và tận hưởng;)


Đây có phải là bản cài đặt độc lập hay bạn được kết nối với một nhóm làm việc hoặc miền?
MEMark

Tại sao mở cmd để làm điều đó? Chỉ cần mở ISE (với tư cách là quản trị viên) và gõSet-ExecutionPolicy RemoteSigned
Kolob Canyon

OMG này cuối cùng đã sửa hộp win10 của tôi, @kolob set-execpolicy là không đủ
xer0x

Bạn không nên sử dụng Unrestricted. Cách tốt hơn là sử dụngRemoteSigned
Kolob Canyon

@ xer0x, miễn là bạn chạy powershell với tư cách quản trị viên
Kolob Canyon

10

Đặt chính sách thực thi là môi trường cụ thể. Nếu bạn đang cố thực thi tập lệnh từ x86 ISE đang chạy, bạn phải sử dụng Power86ell x86 để đặt chính sách thực thi. Tương tự, nếu bạn đang chạy ISE 64 bit, bạn phải đặt chính sách với PowerShell 64 bit.


10

Win+ Rvà gõ lệnh sao chép dán và nhấn OK:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

Và thực hiện kịch bản của bạn.

Sau đó hoàn nguyên các thay đổi như:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"

10

Bạn cũng có thể bỏ qua điều này bằng cách sử dụng lệnh sau:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Bạn cũng có thể đọc bài viết này của Scott Sutherland giải thích 15 cách khác nhau để bỏ qua PowerShell Set-ExecutionPolicynếu bạn không có đặc quyền của quản trị viên:

15 cách để vượt qua chính sách thực thi PowerShell


Đây có lẽ là một trong những hướng dẫn hấp dẫn hơn để khắc phục sự cố và hiểu hạn chế này.
Osvaldo Mercado

5
  1. Mở PowerShell với tư cách Quản trị viên và chạy Set-ExecutPolicy -Scope CurrentUser
  2. Cung cấp RemoteSign và nhấn Enter
  3. Chạy Set-ExecutPolicy -Scope CurrentUser
  4. Cung cấp không giới hạn và nhấn Enter

5

bạn có thể thử điều này và chọn Tùy chọn "Tất cả"

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

3

Trong trình chỉnh sửa PowerShell ISE, tôi thấy chạy dòng lệnh sau được phép trước.

Set-ExecutionPolicy RemoteSigned -Scope Process

2

Trong PowerShell 2.0, chính sách thực thi được đặt thành tắt theo mặc định.

Từ đó trở đi, nhóm PowerShell đã có nhiều cải tiến và họ tin tưởng rằng người dùng sẽ không phá vỡ nhiều thứ trong khi chạy tập lệnh. Vì vậy, từ PowerShell 4.0 trở đi, nó được bật theo mặc định.

Trong trường hợp của bạn, nhập Set-ExecutionPolicy RemoteSignedtừ bảng điều khiển PowerShell và nói có.


2

Tôi đã có cùng một vấn đề ngày hôm nay. Chính sách thực thi 64 bit không bị hạn chế, trong khi 32 bit bị hạn chế.

Đây là cách thay đổi chính sách 32 bit từ xa:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

2

Đến đường dẫn đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellvà thiết lập ExecutionPolicyđể RemoteSigned.


1
1. Mở PowerShell với tư cách Quản trị viên và chạy Set-ExecutPolicy -Scope CurrentUser 2. Cung cấp RemoteSign và nhấn Enter 3. Chạy Set-ExecutPolicy -Scope CurrentUser 4. Cung cấp không giới hạn và nhấn Enter
Ramanujam Allam

2

Tôi nhận được một cảnh báo khác khi tôi cố gắng chạy Set-ExecutionPolicy RemoteSigned

Tôi đã giải quyết bằng lệnh này

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

1

Nếu bạn ở đây vì chạy nó với Ruby hoặc Chef và sử dụng `` thực thi hệ thống, hãy thực thi như sau:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

Lệnh đó là để lấy Thư mục "MyDocument".

-ExecutionPolicy Unrestricted không lừa

Tôi hy vọng nó hữu ích cho người khác.


Có nên kèm theo `` thực sự ở đó không?
Peter Mortensen

1

Một số câu trả lời chỉ ra chính sách thực thi. Tuy nhiên, một số điều đòi hỏi "quản trị viên runas" cũng có. Điều này an toàn nhất ở chỗ không có thay đổi vĩnh viễn đối với chính sách thực thi và có thể vượt qua giới hạn quản trị viên trong quá khứ. Sử dụng với lịch trình để bắt đầu một đợt với:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

từ cả Jack Edmonds ở trên và Peter Mortensen / Dhana của bài đăng Làm thế nào để chạy một ứng dụng là "chạy với tư cách quản trị viên" từ dấu nhắc lệnh?


1

Tôi thấy dòng này hoạt động tốt nhất cho một trong các máy chủ Windows Server 2008 R2 của tôi . Một vài người khác không gặp vấn đề gì nếu không có dòng này trong tập lệnh PowerShell của tôi:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

1

Mở bảng điều khiển Powershell với tư cách quản trị viên, sau đó đặt chính sách thực thi

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 

0

Bạn có thể sử dụng một cách đặc biệt để bỏ qua nó:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

Nó chuyển nội dung của tập lệnh powershell sang powershell.exe và thực thi nó bỏ qua chính sách thực thi.


0

Điều này đã giải quyết vấn đề của tôi

Mở Windows PowerShellCommand và chạy bên dưới truy vấn để thay đổiExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

nếu nó yêu cầu xác nhận thay đổi, nhấn 'Y' và nhấn enter.



0
  1. Quyền hạn mở như quản trị
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

sử dụng lệnh này



-2

Mở cửa sổ PowerShell với tư cách Quản trị viên . Nó sẽ làm việc.


Nó không hoạt động. Tuy nhiên, chạy powershell Set-ExecutPolicy RemoteSign đã hoạt động.
Thronk
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.