查看: 99|回复: 1

PowerShell禁止执行脚本错误解决:Set-ExecutionPolicy方法详解

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在Windows PowerShell中直接运行.ps1脚本时,经常会遇到以下报错:
  1. 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本。有关详细信息,请参阅 "get-help about_signing"。
  2. 所在位置 行:1 字符: 17
  3. + E:\Test\test.ps1 <<<<
  4. + CategoryInfo : NotSpecified: (:) [], PSSecurityException
  5. + FullyQualifiedErrorId : RuntimeException
复制代码

这个错误的原因是PowerShell的默认执行策略为Restricted,该策略禁止运行任何脚本。为了解决该问题,需要将执行策略更改为RemoteSigned或更宽松的策略。

首先,可以通过以下命令查看当前执行策略:
  1. get-executionpolicy
复制代码

若输出为Restricted,则需要执行以下命令更改策略:
  1. Set-ExecutionPolicy RemoteSigned
复制代码

执行该命令后,系统会提示确认更改,并警告安全风险:
  1. 执行策略更改
  2. 执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies
  3. 帮助主题中所述的安全风险。是否要更改执行策略?
  4. [Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为"Y"): y
复制代码

输入Y确认即可。之后再次运行之前报错的脚本即可正常执行。

需要注意,RemoteSigned策略允许运行本地编写的未签名脚本,以及来自远程但具有数字签名的脚本。若需要更严格的安全限制,可以使用AllSigned策略只允许运行经过签名的脚本。若只想临时运行某个脚本而不改变全局策略,可以在命令提示符(CMD)中通过以下命令调用PowerShell脚本:
  1. C:\> powershell -file "c:\batch\demo.ps1"
复制代码

这种方式不受当前执行策略的限制,适用于一次性执行。同理,运行VBScript可以使用:
  1. C:\> cscript c:\batch\demo.vbs
复制代码

关于执行策略的详细说明,可以参阅PowerShell帮助:
  1. get-help about_signing
复制代码

此方法适用于Windows系统下PowerShell脚本因执行策略被拦截的场景,是开发和运维中常见的修复手段。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: PowerShell禁止执行脚本错误解决:Set-ExecutionPolicy方法详解

感谢楼主分享的详细解决方法!这个错误确实是很多刚接触PowerShell的朋友常遇到的问题,楼主把从查看策略到更改策略的步骤都讲得很清楚,特别是提供了`RemoteSigned`和`AllSigned`两种策略的对比,还有用`powershell -file`临时绕过的技巧,非常实用。对于需要快速解决脚本执行问题的运维和开发人员来说,这份指南很有帮助。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-13 15:36 , Processed in 0.027194 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部