powershell文件执行提示“无法加载文件,因为在此系统上禁止运行脚本“”是什么意思?

image.png

/test.ps1 : 无法加载文件 C:\Users\admin\documents\test.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go
.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ ./test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

解决了:
命令行输入set-ExecutionPolicy RemoteSigned回车,然后输入Y回车即可
image.png

将结果输出到文件
echo $env:path | Out-File -filepath d:/1.txt

阅读 2.6k
1 个回答

因为出于安全考虑,Powershell 有五个执行策略安全级别,从强到弱分别是:

  • Restricted:允许手动输入并执行单个命令,但阻止运行所有 .ps 脚本;
  • AllSigned:所有脚本都需要有数字签名才能运行;
  • RemoteSigned:远程脚本需要有数字签名才能运行,本地脚本则不需要;
  • Unrestricted:远程脚本不需要签名也可以运行,但运行前需要用户确认。
  • Bypass:没有任何限制,随便运行。

其实还有一个级别,叫 Default,但它不是一个特定的级别,而是会根据操作系统来决定默认值。对于普通 Windows 而言(无论是教育版、家庭版还是专业版等等),它等同于 Restricted ;对于 Windows Server 而言(有一种 Windows 操作系统就叫 Windows Server),它等同于 RemoteSigned

所以你的肯定是普通的 Windows,默认值就是 Restricted,不允许任何脚本运行。

P.S.1 怎么调整执行策略我看你已经自己找到了,不再赘述。

P.S.2 其实更安全的做法是使用数字签名,这样即便是本地脚本你也可以有选择地只信任那些确实是你自己编写的脚本:https://docs.microsoft.com/zh...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进