1. 程式人生 > 其它 >無法載入檔案*.ps1,因為在此係統上禁止執行指令碼。有關詳細資訊,請參閱

無法載入檔案*.ps1,因為在此係統上禁止執行指令碼。有關詳細資訊,請參閱

官網解釋

長說明

PowerShell 執行策略是一項安全功能,用於控制 PowerShell 載入配置檔案和執行指令碼的條件。 此功能有助於防止惡意指令碼的執行。

在Windows計算機上,你可以為本地計算機、當前使用者或特定會話設定執行策略。 還可使用組策略設定為計算機和使用者設定執行策略。

本地計算機和當前使用者的執行策略儲存在登錄檔中。 無需在 PowerShell 配置檔案中設定執行策略。 特定會話的執行策略僅儲存在記憶體中,在關閉會話時將丟失。

執行策略不是限制使用者操作的安全系統。 例如,當用戶無法執行指令碼時,可以通過在命令列中鍵入指令碼內容來輕鬆繞過策略。 相反,執行策略可幫助使用者設定基本規則,並防止使用者無意中違反這些規則。

在非Windows計算機上,預設執行策略為 Unrestricted 且無法更改。 cmdlet Set-ExecutionPolicy 可用,但 PowerShell 顯示一條控制檯訊息,指出它不受支援。 雖然 Get-ExecutionPolicy 在 Unrestricted 非 Windows Bypass 平臺上返回 ,但行為確實匹配,因為這些平臺不實現Windows 安全中心區域。

PowerShell 執行策略

這些策略僅在其他平臺上Windows實施。 PowerShell 執行策略如下所示:

AllSigned

  • 指令碼可以執行。
  • 要求所有指令碼和配置檔案都由受信任的釋出者簽名,包括在本地計算機上編寫的指令碼。
  • 在從尚未分類為受信任或不受信任的釋出者執行指令碼之前,提示你。
  • 執行已簽名但惡意的指令碼的風險。

Bypass

  • 不阻止任何操作,並且沒有任何警告或提示。
  • 此執行策略適用於將 PowerShell 指令碼內建到較大應用程式中的配置,或用於 PowerShell 是具有其自己的安全模型的程式基礎的配置。

Default

  • 設定預設執行策略。
  • Restricted 對於 Windows 客戶端。
  • RemoteSigned Windows伺服器。

RemoteSigned

  • 伺服器計算機的預設Windows策略。
  • 指令碼可以執行。
  • 需要受信任的釋出者對從 Internet 下載的指令碼和配置檔案(包括電子郵件和即時訊息程式)進行數字簽名。
  • 對於在本地計算機上編寫且未從 Internet 下載的指令碼,不需要數字簽名。
  • 如果指令碼未受阻止(例如使用 cmdlet),則執行從 Internet Unblock-File 下載且未簽名的指令碼。
  • 從 Internet 來源(而不是 Internet)執行未簽名指令碼的風險,以及可能是惡意的已簽名指令碼的風險。

Restricted

  • 客戶端計算機的預設Windows策略。
  • 允許單個命令,但不允許指令碼。
  • 阻止執行 .ps1xml .psm1 所有指令碼檔案,包括格式化和配置檔案 () 、模組指令碼檔案 () 和 PowerShell 配置檔案 () .ps1 。

Undefined

  • 當前作用域中未設定執行策略。
  • 如果所有作用域中的執行策略 Undefined 都是 ,Restricted 則有效執行策略適用於 Windows 客戶端,RemoteSigned 適用於 Windows 伺服器。

Unrestricted

  • 非計算機的預設執行Windows無法更改。
  • 未簽名的指令碼可以執行。 存在執行惡意指令碼的風險。
  • 在執行不是來自本地 Intranet 區域中的指令碼和配置檔案之前,警告使用者。

 備註

在未區分通用命名約定 (UNC) 路徑與 Internet 路徑的系統上,可能不允許 UNC 路徑標識的指令碼使用 RemoteSigned 執行策略執行。

執行策略範圍

可以設定僅在特定範圍內有效的執行策略。

的有效值為 Scope 、MachinePolicy****UserPolicy、Process****CurrentUser 和 LocalMachine。 LocalMachine 是設定執行策略時的預設選項。

這些值 Scope 按優先順序列出。 優先的策略在當前會話中有效,即使設定了限制性更強、優先順序較低的策略。

有關詳細資訊,請參閱 Set-ExecutionPolicy

MachinePolicy

由 組策略計算機的所有使用者設定。

UserPolicy

由 組策略當前使用者的設定。

Process

範圍 Process 僅影響當前 PowerShell 會話。 執行策略儲存在環境變數 中 $env:PSExecutionPolicyPreference,而不是登錄檔中。 關閉 PowerShell 會話後,將刪除變數和值。

CurrentUser

執行策略僅影響當前使用者。 它儲存在登錄檔 HKEY_CURRENT_USER項中 。

LocalMachine

執行策略會影響當前計算機上所有使用者。 它儲存在登錄檔 HKEY_LOCAL_MACHINE項中 。

使用 PowerShell 管理執行策略

若要獲取當前 PowerShell 會話的有效執行策略,請使用 Get-ExecutionPolicy cmdlet。

以下命令獲取有效執行策略:

Get-ExecutionPolicy

更改執行策略

若要更改計算機上 PowerShell 執行Windows,請使用 Set-ExecutionPolicy cmdlet。 更改會立即生效。 無需重啟 PowerShell。

如果為 範圍 LocalMachine 或 CurrentUser 設定執行策略,則更改將儲存在登錄檔中,並一直有效,直到再次更改它。

如果為範圍設定執行策略 Process ,該策略不會儲存在登錄檔中。 將保留執行策略,直到當前程序和任何子程序關閉。

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

解決方案

1.管理員開啟PowerShell

2. 執行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

文件連結:https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2