windows系统执行ps1(powershell)脚本文件无法识别命令的问题

常规解决办法

大家有时在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


 

你可能感兴趣的:(windows)