題 如何啟用PowerShell腳本的執行?


當我嘗試執行PowerShell腳本時,出現此錯誤:

無法加載文件C:\ Common \ Scripts \ hello.ps1,因為在此系統上禁用了腳本的執行。有關詳細信息,請參閱“get-help about_signing”。
  在行:1 char:13
  +。\ hello.ps1 <<<<
      + CategoryInfo:NotSpecified:(:) [],PSSecurityException
      + FullyQualifiedErrorId:RuntimeException


190
2018-02-08 18:41


起源




答案:


  1. 使用“以管理員身份運行”選項啟動Windows PowerShell。只有計算機上Administrators組的成員才能更改執行策略。

  2. 輸入以下命令啟用運行未簽名的腳本

    set-executionpolicy remotesigned
    

這將允許運行您在本地計算機上編寫並簽名的未簽名腳本 來自Internet的腳本。

也可以看看 運行腳本 在Microsoft TechNet庫中。


295
2018-02-08 18:44



+1代表remotesigned而不是unrestricted。您可以運行本地腳本,而不會讓自己暴露在其他任何地方的危險之中。 - DarrellNorton
謝謝 - 這篇文章幫助了我。但是我還有其他問題,因為我沒有在win8下以“管理員”的身份運行PowerShell - sergeantKK
這會永久性地改變策略,還是每次重新啟動計算機時都必須這樣做? - Ray
有沒有辦法啟用執行 具體 powershell腳本?所以也許我只是想允許 hello.ps1 從OP,或用戶的盒子上的Microsoft.PowerShell_profile.ps1? (我認為這可以說屬於公認的廣泛的OP問題(哈,我現在看到的也是你的!)。如果你覺得這是一個新問題,我可以問它。) - ruffin
@ruffin請問你另外一個問題嗎?然後你可以在這裡鏈接它。 - Pavel Chuchuva


默認執行策略設置為受限制,您可以通過鍵入以下內容來查看:

Get-ExecutionPolicy

您應鍵入以下內容以使其進入無限制模式:

Set-ExecutionPolicy unrestricted

希望這可以幫助


60
2018-02-08 18:43



-1。這是太開放,只是執行。 RemoteSigned更好。 - TomTom
如果您希望用戶從Internet複製和粘貼惡意腳本,則需要簽名才有意義。如果你假設用戶不是傻瓜,那麼“remotesigned”不會增加任何安全性並使生活變得困難。 - Guss


在我用於開發腳本的機器上,我將使用-unrestricted如上所述。但是,當我將腳本部署到最終用戶計算機時,我將使用-executionpolicy開關調用powershell:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

50
2018-01-14 00:46



您可能希望將此技巧與.CMD文件中的多語言技巧相結合。看到 stackoverflow.com/a/8597794/5314 - Jay Bazuzi
太好了!我一直在部署由winrar製作的sfx rarlabs.com - MDMoore313
這個技巧讓我從Git Bash(MINGW32 bash)運行powershell腳本 - Kamil Szot


我們可以通過以下命令獲取當前ExecutionPolicy的狀態:

Get-ExecutionPolicy;

默認情況下是 受限。為了允許執行PowerShell腳本,我們需要將此ExecutionPolicy設置為 旁路 要么 無限制

我們可以將當前用戶的策略設置為 Bypass 要么 Unrestricted 通過使用以下任何PowerShell命令:

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

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

無限制 policy加載所有配置文件並運行所有腳本。如果運行從Internet下載的未簽名腳本,則會在運行前提示您獲得權限。

而在 旁路 策略,沒有任何內容被阻止,腳本執行期間沒有警告或提示。繞過ExecutionPolicy比Unrestricted更輕鬆。


8
2017-09-07 07:06





根據Windows版本和配置,您可能會收到以下警告,即使在 Unrestricted 模式:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

解決方案是使用“繞​​過”策略,使用以下命令啟用:

Set-ExecutionPolicy Bypass

來自 文件

旁路:沒有任何東西被阻止,沒有任何警告或提示。

這顯然是不安全的,請了解所涉及的風險。


4
2018-01-21 10:01



這是我能夠讓我的腳本在PowerShell 2.0的WINE環境中運行的唯一方法。謝謝。 - Wyatt8740


一個註冊密鑰:
Windows註冊表編輯器版本5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \政策\微軟\的Windows \ PowerShell中]   “EnableScripts”= dword:00000001“ExecutionPolicy”=“旁路”

和:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

確實也有效。


1
2017-11-29 10:10





reg鍵工作的原因是因為它正在執行PS命令所做的事情。命令將更改寫入reg鍵。命令比創建註冊表或挖掘註冊表更快更容易。


-2
2018-04-05 13:49



這是錯誤的:其他答案中提到的密鑰會更改powershells執行策略,然後啟用powershell腳本。 - Patrick R.