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 区域中的脚本和配置文件之前警告用户。