由于安全的理由,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