解决Win10Powershell禁止运行脚本
一、需求
有时需要在电脑安装或卸载一些脚本,可是又没有执行脚本的权限
目的:卸载bun 执行powershell -c ~.bun\uninstall.ps1脚本
二、解决问题
1.打开Win10Powershell窗口方法
(1)以管理员的身份运行PowerShell(可以通过在桌面,按住shift+鼠标右键)
点击在此处打开Powershell窗口(S),打开PowerShell窗口
(2)也可以点击开始菜单,找到Powershell,右键“Windows PowerShell”选择“以管理员身份运行,打开Win10Powershell窗口
(3)点击开始菜单,找到Windows PowerShell,直接打开(此方式行不通)
2.查看当前用户组的执行策略
(1)可以运行命令:Get-ExecutionPolicy -List 查看当前用户的执行策略
1 |
|
可以看到CurrentUser(当前用户)的执行策略为Restricted(受限制的)
我们在官网查看下该策略的具体内容,可以看到不允许脚本运行,所以才有了“无法加载文件uninstall.ps1,因为此系统上禁止运行脚本。
策略类别
组策略 | 执行策略 |
---|---|
允许所有脚本 | Unrestricted |
允许本地脚本和远程签名脚本 | RemoteSigned |
仅允许签名脚本 | AllSigned |
(2)还可以输入以下命令直接查看当前用户的执行策略:
1 |
|
如果返回 Restricted,说明脚本运行被禁止。
3.更改执行策略
(1)你可以将执行策略设置为允许运行脚本。推荐选择以下选项之一:
仅运行已签名的脚本(建议):
设置为 AllSigned,这要求所有脚本(包括 profile.ps1)必须有数字签名。
命令:
1 |
|
优点:提高安全性,只有经过签名的脚本可以运行。
注意:如果你自己编写了 profile.ps1,需要对其进行签名(可使用自签名证书)。
(2)允许运行所有脚本(不推荐用于生产环境):
设置为 Unrestricted,允许运行所有脚本(包括未签名的)。
命令:
1 |
|
缺点:降低安全性,可能存在运行恶意脚本的风险,仅在开发或测试环境中使用。
(3)仅运行本地脚本(推荐折中方案):
设置为 RemoteSigned,允许运行本地未签名的脚本,但需要远程脚本有签名。
命令:
1 |
|
优点:兼顾安全性和便利性,适合大多数用户。
说明:
-Scope CurrentUser 只影响当前用户,不影响其他用户。
-Force 跳过确认提示
4.因为.bun\uninstall.ps1脚本未签名,所以选择策略Unrestricted
在Win10Powershell窗口内输入以下命令回车
1 |
|
5.验证更改
再次运行以下命令确认策略已更改:
1 |
|
如果返回结果显示为 Unrestricted,说明设置成功。
6.卸载bun
执行powershell -c ~.bun\uninstall.ps1脚本
还是在Win10Powershell窗口内输入以下脚本回车
1 |
|
验证卸载bun是否成功
1 |
|
返回结果没显示bun版本号说明卸载成功
7.注意事项
安全性:避免将执行策略设置为 Unrestricted 除非你完全信任你的环境。
管理员权限:如果需要为所有用户更改策略,使用 -Scope LocalMachine 代替 -Scope CurrentUser,但需以管理员身份运行。
重置策略:如果想恢复默认设置,可以重新设置为 Restricted:
1 |
|
参考:Windows中打开powershell后,出现报错无法加载文件 xxxx,因为在此系统上禁止运行脚本。解决方案详解!
PowerShell中无法加载ps1脚本文件,因为在此系统上禁止运行脚本
欢迎光临本站!
本站主要记录一些个人所学的内容。