~~NOTOC~~ ===== q105 在 Windows 上执行 Powershell 脚本报错 ===== 如果运行脚本时遇到这样的错误: 无法加载文件,因为在此系统上禁止运行脚本。 ==== 具体现象 ==== > .\get_hdwkey.ps1 .\get_hdwkey.ps1 : 无法加载文件 C:\Users\lxkt\Desktop\PWmatLICENSE_win\get_hdwkey.ps1,因为在此系统上禁止运行脚本。有 关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + .\get_hdwkey.ps1 + ~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess PS C:\Users\lxkt\Desktop\PWmatLICENSE_win> (上面路径里的 ''lxkt'' 只是示例电脑上的用户名,你自己电脑上会显示你自己的用户名,这是正常的,跟报错原因无关) 这是 Windows 系统出于安全考虑,默认禁止运行未经数字签名的 PowerShell 脚本,属于很常见的现象,按下面方法处理即可。 ==== 解决方案 ==== 方法1: 更改执行策略(推荐, 一劳永逸) 以管理员身份运行 PowerShell(在开始菜单搜索 PowerShell,右键选择"以管理员身份运行"),然后执行: # 设置为允许运行本地脚本 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # 需要输入 ''Y'' 确认 或 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force 执行第一条命令后,如果提示需要确认,输入字母 ''Y'' 再按回车即可;也可以直接用第二条带 ''-Force'' 的命令,会自动确认不再询问。设置好之后,重新打开一个新的(非管理员也可以)终端窗口,再执行原来的脚本,应该就能正常运行了。 方法2: 临时绕过(仅本条命令) 如果你不想永久修改系统设置,也可以只针对这一次执行用下面方法绕过: powershell -ExecutionPolicy Bypass -File .\get_hdwkey.ps1 或者 powershell -ExecutionPolicy Unrestricted -File .\get_hdwkey.ps1 注意这种方式只对这一次执行生效,下次再运行别的脚本可能还会遇到同样的报错,如果嫌麻烦,还是建议用方法1一次性解决。 ~~DISCUSSION:off~~