AI智能
改变未来

PowerShell学习允许未经签名的脚本在你电脑上运行

由于安全的理由,PowerShell被默认设定为只允许签名的脚本运行。运行一下的命令将会允许你运行未经签名的脚本(你必须以管理员权限做这些事情)

Set-ExecutionPolicy RemoteSigned

另一种方法去运行PowerShell脚本是使用

Bypass

powershell.exe -ExecutionPolicy Bypass -File \"c:\\MyScript.ps1\"

或者使用你正在使用的PowerShell命令行或者ISE版本通过运行:

Set-ExecutionPolicy Bypass Process

一个零时的解决方法是运行并传递给PowerShell程序有效的

-ExecutionPolicy

元素。这个方法仅仅在当前PowerShell进程存在时有效,所以不需要管理员权限。

C:\\>powershell -ExecutionPolicy RemoteSigned

还有许许多多的其他方法时可行的。网上的站点通常鼓励你去使用

Set-ExecutionPolicy Unrestricted

。这种方法持续存在直到你改变它,降低了系统的安全性。这不是推荐的方法;而使用

RemoteSigned

是被推荐的,因为它允许本地存储和编写代码,远程的请求需要代码具有来自被信任的用户的证书。
同时,请明白组策略高于运行策略。所以即使运行策略被设置为系统层面的不严格,组策略仍可能在下一次执行时间将其恢复(通常是15分钟)你可以通过运行

Get-ExecutionPolicy -list

来查看不同方面的运行策略。

名称 说明
Restricted 受限制的,可以执行单个的命令,但是不能执行脚本 Windows 8, Windows Server 2012, and Windows 8.1 中默认就是这种策略,所以是不能执行脚本的,执行就会报错,那么如何才能执行呢?Set-ExecutionPolicy -ExecutionPolicy Bypass 就是设置策略为 Bypass 这样就可以执行脚本了。
AllSigned AllSigned 执行策略允许执行所有具有数字签名的脚本
RemoteSigned 当执行从网络上下载的脚本时,需要脚本具有数字签名,否则不会运行这个脚本。如果是在本地创建的脚本则可以直接执行,不要求脚本具有数字签名。
Unrestricted 这是一种比较宽容的策略,允许运行未签名的脚本。对于从网络上下载的脚本,在运行前会进行安全性提示。需要你确认是否执行脚本
Bypass Bypass 执行策略对脚本的执行不设任何的限制,任何脚本都可以执行,并且不会有安全性提示。
Undefined Undefined 表示没有设置脚本策略。当然此时会发生继承或应用默认的脚本策略。

技术文档:

  • Set-ExecutionPolicy

  • about_Execution_Policys

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » PowerShell学习允许未经签名的脚本在你电脑上运行