保存为runps1.bat文件
添加或删除ps1文件右键菜单->按指定powershell版本运行脚本
无视执行策略 - ExecutionPolicy
非右键菜单执行语法: runps1.bat "ps1脚本路径" "powershell指定版本[当前版本留空]"
无参数运行则视为 添加/删除右键菜单.
调试win7 ps2.0兼容代码使用.- @echo off
- REM %1为空,以管理员身份运行bat,退出
- if "%~1"=="" start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
- REM %~1为REM,添加或删除注册表,退出
- if "%~1"=="REM" (
- reg delete "HKCR\Microsoft.PowerShellScript.1\Shell\以powershell 2.0运行" /f >nul 2>nul && (
- echo 删除ps1文件右键菜单 "以powershell 2.0 版本运行" 成功
- reg delete "HKCR\Microsoft.PowerShellScript.1\Shell\以powershell 当前版本运行" /f >nul 2>nul
- echo 删除ps1文件右键菜单 "以powershell 当前版本运行" 成功
- ) || (
- reg add "HKCR\Microsoft.PowerShellScript.1\Shell\以powershell 2.0运行\command" /ve /t REG_SZ /d "\"%~0\" \"%%1\" \"2.0\"" /f >nul 2>nul
- echo 添加ps1文件右键菜单 "以powershell 2.0 版本运行" 成功
- reg add "HKCR\Microsoft.PowerShellScript.1\Shell\以powershell 当前版本运行\command" /ve /t REG_SZ /d "\"%~0\" \"%%1\"" /f >nul 2>nul
- echo 添加ps1文件右键菜单 "以powershell 当前版本运行" 成功
- )
- pause&exit
- )
- REM %1文件不存在,退出
- if not exist "%~1" (echo 脚本文件不存在! %~1 &pause&exit)
- REM %1文件存在,读取ps版本参数%2
- if not "%~2"=="" set "psVer=-version %~2"
- REM 运行powershell脚本
- cd /d "%~dp1"
- powershell %psVer% -c "Get-Content '%~1' | Out-String | Invoke-Expression"
- pause&exit
复制代码
|