PowerShell报错:因为在此系统上禁止运行脚本

date
Oct 3, 2021
slug
set-execution-policy
status
Published
tags
Windows
PowerShell
summary
报错的解决方法和背后原因,主要是Windows上PowerShell的执行策略
type
Post

解决方法

  • 右键打开开始菜单选择Windows PowerShell(管理员)
  • 查看当前的执行策略
get-ExecutionPolicy
结果显示Restricted,为默认的设置, 不允许脚本运行。
  • 在终端设置执行策略
set-ExecutionPolicy RemoteSigned
输入“y”确认更改执行策略。

原因

在 Windows 计算机上powershell对于脚本的执行有着严格的安全限制。通过管理员权限更改本地电脑执行策略为“RemoteSigned”,使得脚本得以执行。

PowerShell 执行策略

这些策略的强制仅在 Windows 平台上发生。 PowerShell 执行策略如下所示:

AllSigned

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

Bypass

  • 不阻止任何操作,并且没有任何警告或提示。
  • 此执行策略适用于以下配置:将 PowerShell 脚本内置于更大的应用程序或配置,其中 PowerShell 是具有其自己的安全模型的程序的基础。

Default

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

RemoteSigned

  • Windows server 计算机的默认执行策略。
  • 脚本可以运行。
  • 要求来自受信任的发布者的脚本和配置文件的数字签名,这些脚本和配置文件是从 internet 下载的,其中包括电子邮件和即时消息程序。
  • 不需要在本地计算机上编写的脚本上的数字签名,也不需要从 internet 下载。
  • 如果未对脚本进行阻止,则运行从 internet 下载的脚本,而不是未签名的脚本,例如通过使用 Unblock-File cmdlet。
  • 从 internet 以外的源运行未签名脚本的风险,以及可能是恶意的签名脚本。

Restricted

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

Undefined

  • 当前作用域中没有设置执行策略。
  • 如果所有作用域中的执行策略都是 Undefined ,则有效的执行策略 Restricted 适用于 Windows 服务器 Windows 客户端和 RemoteSigned 。

Unrestricted

  • 非 Windows 计算机的默认执行策略无法更改。
  • 未签名的脚本可以运行。 存在运行恶意脚本的风险。
  • 在运行不在本地 intranet 区域中的脚本和配置文件之前警告用户。

参考

  1. Powershell ExecutionPolicy 执行策略 - wswind - 博客园
  1. powershell--脚本运行权限政策及‘禁止执行脚本’解决方法 - 特立独行的狗 - 博客园
  1. Get-ExecutionPolicy (Microsoft.PowerShell.Security) - PowerShell | Microsoft Docs
  1. 关于执行策略 - PowerShell | Microsoft Docs
 

© Toby Chung 2021 - 2022