如何更改执行策略以在 PowerShell 上运行脚本
如何更改执行策略以在 PowerShell 上运行脚本
在Windows系统中,PowerShell的执行策略默认设置可能会阻止脚本的运行。本文将详细介绍如何通过PowerShell命令行和系统设置两种方式更改执行策略,以允许脚本在系统中运行。
要更改 PowerShell 执行策略,请打开PowerShell(管理员)并运行“设置执行策略远程签名”设置执行以允许脚本的命令。这“设置执行策略 AllSigned”命令允许来自受信任发布者的脚本。或者“设置执行策略不受限制”命令允许脚本不受限制。
您还可以运行“设置执行策略受限”撤消更改并阻止脚本运行。
最后,您可以通过更改 Windows 11 和 10 设置应用程序中的策略来允许 PowerShell 脚本。
在视窗11(或 10),默认情况下,当您尝试在 PowerShell 上运行脚本时,它将失败并显示“无法加载,因为该系统上禁用了运行脚本”错误信息。这是因为PowerShell具有“执行策略”安全功能,可以控制如何加载配置文件和运行脚本,以防止恶意代码在系统上运行。
如果必须在 Windows 11(或 10)上运行脚本,您可以更改本地计算机、当前用户或会话的执行策略。
当您为本地计算机和当前用户设置 PowerShell 执行策略时,该信息将存储在注册表中。如果您为特定会话配置策略,该策略将保存在内存中,并在您关闭会话时丢失。
根据微软,执行策略不限制动作。您可以通过在命令行界面 (CLI) 中键入脚本来绕过该策略。该策略旨在帮助用户防止运行恶意脚本。
在这个指导,我将教您如何更改执行策略以在 Windows 11 或 10 上的 PowerShell 上成功运行脚本。
从 PowerShell 更改 Windows 11 上的执行策略
要更改 Windows 11(或 10)上的 PowerShell 执行策略,请使用以下步骤:
- 打开开始在 Windows 11 上。
- 搜索电源外壳,右键单击顶部结果,然后选择以管理员身份运行选项。
- 键入以下命令确认当前执行策略,然后按进入:
Get-ExecutionPolicy
- (可选)键入以下命令查看有效的 PowerShell 执行策略,然后按进入:
Get-ExecutionPolicy -List
- 键入以下命令以更改 PowerShell 执行策略以允许脚本在 Windows 11 上运行,然后按进入:
Set-ExecutionPolicy RemoteSigned
- (可选)键入以下命令以更改执行策略以阻止脚本运行并按进入:
Set-ExecutionPolicy Restricted
完成这些步骤后,您可以再次执行该脚本,它现在应该可以在 Windows 11 上成功运行。如果您不想再允许脚本在您的计算机上运行, 您可以运行步骤中提到的可选命令。
如果要更改执行策略以运行当前用户或本地计算机的脚本,则需要使用“Scope”选项,如下所示:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
或者
Set-ExecutionPolicy-ExecutionPolicyRemoteSigned-ScopeLocalMachine
。
在 Windows 11 上,您可以从四种不同的执行策略中进行选择以允许或拒绝脚本:
- 受限制的 -阻止任何脚本文件运行。
- 远程签名 —允许在计算机上创建脚本。但是,如果没有可信签名,在其他设备上创建的脚本将无法运行。
- 全部签名 —允许所有脚本运行。但是,前提是受信任的发布者已包含签名。
- 无限制——无限制地运行任何脚本。
如果您需要运行没有所需参数且不返回输出的脚本,则无需更改执行策略。相反,您可以使用
PowerShell.exe -File "FILENAME" -ExecutionPolicy Bypass
命令绕过限制。
从“设置”更改 Windows 11 上的执行策略
在 Windows 11 和 10 上,您还可以通过从“设置”应用更改命令控制台的配置来允许脚本在 PowerShell 上运行。
从 Windows 11 开始
要从“设置”应用更改 PowerShell 执行策略,请使用以下步骤:
- 打开设置。
- 点击系统。
- 单击对于开发商页。
- 单击电源外壳环境。
- 打开“更改执行策略以允许本地 PowerShell 脚本 [...]”拨动开关。
如果您不再需要此功能,您可以使用相同的步骤来阻止脚本,但在步骤5,关闭“更改执行策略以允许本地 PowerShell 脚本 [...]”拨动开关。
从 Windows 10
要从“设置”应用更改 PowerShell 执行策略,请使用以下步骤:
- 打开设置。
- 点击更新与安全。
- 单击对于开发商页。
- 检查“更改执行策略以允许本地 PowerShell 脚本 [...]”PowerShell 设置选项。
- 单击申请按钮。
如果您不再需要此功能,您可以使用相同的步骤来阻止脚本,但在步骤4,清除“更改执行策略以允许本地 PowerShell 脚本 [...]”选项并应用更改。
完成这些步骤后,该设置会将 PowerShell 的执行策略设置为“RemoteSigned”。此策略将允许您无需签名即可运行脚本,但需要对远程脚本进行签名。
更改执行策略以允许未经数字签名的脚本
如果您有在另一台计算机上创建或从 Internet 下载的 PowerShell 脚本,如果您尝试运行该脚本,您可能会得到“无法加载文件 [...].ps1。文件 [...].ps1 未经过数字签名。您无法在当前系统上运行此脚本”或“该脚本不会在系统上执行”错误信息。但是,只要您知道该脚本可以安全使用并且是从可信来源获取的,您就可以更改“过程”范围策略以成功运行它。
PowerShell 脚本未经过数字签名错误/图片:Mauro Huculak
要更改 PowerShell 执行策略以运行未经数字签名的“.ps1”脚本,请使用以下步骤:
- 打开开始。
- 搜索电源外壳,右键单击顶部结果,然后选择以管理员身份运行选项。
- 键入以下命令进行更改以允许带有数字签名的 PowerShell 脚本,然后按进入:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
完成这些步骤后,您可以使用以下命令运行脚本文件
.\Your-PowerShell-Script.ps1
当前会话期间的命令。关闭 PowerShell 会话后,执行策略将恢复到原来的状态,以防止其他脚本运行。
如果您必须运行另一个脚本文件,可以重复上述步骤。
2024 年 10 月 10 日更新:本指南已更新,以确保准确性并反映流程的变化。