PowerShell 的执行策略(Execution Policy)配置修改 解决脚本的执行问题

您遇到的问题是因为 PowerShell 的执行策略(Execution Policy)设置阻止了脚本的运行。默认情况下,为了安全考虑,PowerShell 在 Windows 上的执行策略可能是 RestrictedAllSigned,这会阻止运行任何未经签名的脚本。

要解决这个问题,您可以更改执行策略以允许运行脚本。请注意,更改执行策略可能会影响系统的安全性,因此请确保只在信任的环境中进行操作。

以下是如何更改执行策略的步骤:

  1. 打开 PowerShell 作为管理员

    • 搜索 PowerShell 并右键点击它选择“以管理员身份运行”。
  2. 查看当前执行策略

    Get-ExecutionPolicy
    

    若要获取影响当前会话的所有执行策略,并按优先级顺序显示它们,请执行以下操作:

    Get-ExecutionPolicy -List
    
  3. 更改执行策略

    • 要允许运行所有本地脚本,可以将执行策略更改为 RemoteSigned,这意味着可以运行未签名的本地脚本,但需要签名才能从网络中运行。
    • 如果您确定脚本是安全的,也可以将其更改为 Unrestricted,但这通常不推荐,因为它会降低安全性。

    例如,要将执行策略设置为 RemoteSigned,可以运行以下命令:

    Set-ExecutionPolicy RemoteSigned
    

    如果您使用的是 Unrestricted,则命令如下:

    Set-ExecutionPolicy Unrestricted
    

    注意:在某些情况下,您可能还需要确认更改,可以使用 -Force 参数来避免提示:

    Set-ExecutionPolicy RemoteSigned -Force
    
  4. 重新启动 PowerShell

    • 关闭当前的 PowerShell 窗口并重新打开一个新的实例。
  5. 激活虚拟环境

    • 再次尝试激活虚拟环境:
    .venv\Scripts\activate
    

如果您不需要永久更改执行策略,也可以通过临时更改策略来激活虚拟环境:

$policy = (Get-ExecutionPolicy)
Set-ExecutionPolicy RemoteSigned -Scope Process
.venv\Scripts\activate
Set-ExecutionPolicy $policy -Scope Process

上述命令首先保存当前的执行策略,然后临时将其更改为 RemoteSigned 以便激活虚拟环境,最后恢复原来的执行策略。

PowerShell 执行策略

PowerShell 执行策略如下:

  • AllSigned

    • 脚本可以运行。
    • 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。
    • 在运行来自尚未分类为可信或不可信的发布者的脚本之前会提示你。
    • 存在运行已签名的恶意脚本的风险。
  • Bypass

    • 不阻止任何操作,并且没有任何警告或提示。
    • 此执行策略专为将 PowerShell 脚本内置到较大应用程序中的配置,或以 PowerShell 为具有自己的安全模型的程序的基础的配置而设计。
  • Default

    • 设置默认执行策略。
    • Restricted(适用于 Windows 客户端)。
    • RemoteSigned(适用于 Windows 服务器)。
  • RemoteSigned

    • Windows 服务器计算机的默认执行策略。
    • 脚本可以运行。
    • 需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。
    • 在本地计算机上编写且不是从 Internet 下载的脚本不需要数字签名。
    • 如果脚本已解除阻止(例如通过使用 Unblock-File cmdlet),则运行从 Internet 下载且未签名的脚本。
    • 存在运行来自 Internet 以外来源的未签名脚本以及可能存在恶意的签名脚本的风险。
  • Restricted

    • Windows 客户端计算机的默认执行策略。
    • 允许单个命令,但不允许脚本。
    • 阻止运行所有脚本文件,包括格式和配置文件 (.ps1xml)、模块脚本文件 (.psm1) 和 PowerShell 配置文件 (.ps1)。
  • Undefined

    • 当前作用域内没有设置执行策略。
    • 如果所有范围内的执行策略均为 Undefined,则对于 Windows 客户端,有效执行策略为 Restricted;对于 Windows Server,有效执行策略为 RemoteSigned。
  • Unrestricted

    • 未签名的脚本可以运行。 存在运行恶意脚本的风险。
    • 在运行非来自本地 Intranet 区域的脚本和配置文件之前警告用户。

备注

在不区分通用命名约定 (UNC) 路径和 Internet 路径的系统上,可能不允许使用 RemoteSigned 执行策略运行由 UNC
路径标识的脚本。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰山AI

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值