常规解决办法
大家有时在powershell窗口执行命令行的时候会提示无法识别该命令
原因是在部分系统上面脚本的执行权限是禁止的
我们可以输入 get-executionpolicy 来查看当前执行策略
- Restricted: 脚本不能运行(默认设置)
- RemoteSigned: 在本地创建的脚本可以运行,网上下载的脚本无法运行(拥有数字证书签名例外)
- AllSigned: 仅当脚本由受信任的发布者签名时才能运行
- Unrestricted: 允许所有脚本运行
我们可以使用 set-executionpolicy remotesigned 来将我们的执行策略改为RemoteSigned
然后系统会提示我们是否更改,输入 yes 即可
有些更改不了是需要用管理员权限运行
一键解决
编写bat脚本去调用ps1脚本文件
下面的脚本代码包含两部分
- 第一部分是管理员运行bat
- 第二部分是利用 -executionpolicy remotesigned 参数去执行ps1脚本文件,这样就不需要用上面的方式去处理了,上面的方式还需要人工参与的
@REM 管理员运行powershell脚本
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
@REM REM 安装scoop和系统软件
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -executionpolicy remotesigned -file %~dp0install_scoop_and_soft.ps1 --Force