powershell 故障无法加载文件 wf.ps1。未对文件 wf.ps1 进行数字签名。无法在当前系统上运行该脚本。
问题描述:
PS D:\Web> .\wf.ps1
.\wf.ps1 : 无法加载文件 D:\Web\wf.ps1。未对文件 D:\Web\wf.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和 设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1
+ .\wf.ps1
+ ~~~~~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS D:\Web> Set-ExecutionPolicy RemoteSigned
问题解决:
一、确认执行策略是否真的生效
先检查当前策略:
Get-ExecutionPolicy -List
重点看:
CurrentUserLocalMachine
如果看到某个 Scope 还是 Restricted 或被 GroupPolicy 覆盖,那么你刚才改的可能没有生效。
二、如果是公司电脑(被组策略锁死)
如果 MachinePolicy 或 UserPolicy 显示为 Restricted,说明被域策略锁定,你无法修改。
这种情况下可以用临时方式运行脚本:
powershell -ExecutionPolicy Bypass -File .\wf.ps1
这个方式不会修改系统策略,只对当前命令有效。
三、如果脚本是从网络下载的
即使是本地文件,只要来源是:
浏览器下载
微信传输
邮件附件
都会被标记为“来自互联网”。
可以执行:
Unblock-File .\wf.ps1
然后再运行:
.\wf.ps1
四、最推荐的安全方式(只改当前用户)
如果你不想影响系统级策略,可以改成:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
这样只对当前用户生效,更安全。
最稳妥一条命令解决
你可以直接这样运行,不用管策略:
powershell -ExecutionPolicy Bypass -File D:\Web\wf.ps1