====== Лаунчер для PowerShell скриптов ====== ===== Описание (README) ===== **run_the_same_name_ps1.bat** - скрипт который запускает PowerShell (*.ps1) скрипты с таким же названием как у *.bat файла в каталоге рядом. С возможностью передачи аргументов без проверки на запуск с правами администратора. Повышение прав, если необходимо, должно быть запрошено в самом PowerShell скрипте.\\ **Пример:** browser.bat будет запущен browser.ps1 ===== Расширенная версия (рекомендуется) ===== ++++Текст кода "run_the_same_name_ps1.bat" (расширенная версия)| @echo off rem File: run_the_same_name_ps1.bat rem Purpose: launcher for PowerShell script with the same base name as this .bat rem (finds pwsh or falls back to Windows PowerShell) rem Author: takraztak rem ================================================== setlocal rem try PowerShell 7 (pwsh) in Program Files set "PS_EXE=%ProgramFiles%\PowerShell\7\pwsh.exe" if exist "%ProgramFiles(x86)%" ( if not exist "%PS_EXE%" set "PS_EXE=%ProgramFiles(x86)%\PowerShell\7\pwsh.exe" ) rem fallback to Windows PowerShell if pwsh not found if not exist "%PS_EXE%" set "PS_EXE=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" rem final fallback: rely on PATH (just the name) if not exist "%PS_EXE%" ( set "PS_EXE=pwsh.exe" ) rem path to the PowerShell script with the same base name as this .bat set "PS1=%~dp0%~n0.ps1" rem Quote paths and forward all args "%PS_EXE%" -NoProfile -ExecutionPolicy Bypass -File "%PS1%" %* endlocal pause exit /b ++++ ===== Мини версия ===== ++++Текст кода "run_the_same_name_ps1.bat" (мини версия)| @echo off setlocal set "PS_EXE=%ProgramFiles%\PowerShell\7\pwsh.exe" if not exist "%PS_EXE%" set "PS_EXE=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" set "PS1=%~dp0%~n0.ps1" "%PS_EXE%" -NoProfile -ExecutionPolicy Bypass -File "%PS1%" %* endlocal pause exit ++++ ===== Версия с запросом повышения прав ===== Если в скрипте PowerShell (*.ps1) не реализован запрос на повышение прав для выполнения, но оно требуется, то можно запускать через этот скрипт.\\ Рекомендуется запрос на повышение прав делать через сам скрипт PowerShell.\\ ++++Текст кода "run_the_same_name_ps1.bat" (с запросом повышения прав выполнения)| @echo off setlocal title PowerShell Script Launcher :: ========================================================== :: UNIVERSAL PS1 LAUNCHER :: Runs a PowerShell script with the same name as this BAT :: Compatible with PowerShell 5.x and 7+ :: Author: takraztak :: ========================================================== :: --- Admin rights check --- net session >nul 2>&1 if %errorlevel% neq 0 ( echo. echo [!] Administrator privileges required. Restarting... powershell -NoLogo -NoProfile -Command "Start-Process '%~f0' -Verb RunAs" exit /b ) cls echo. echo ========================================================== echo UNIVERSAL PS1 LAUNCHER echo ========================================================== echo. :: --- Determine PowerShell executable --- set "PS_EXE=%ProgramFiles%\PowerShell\7\pwsh.exe" if not exist "%PS_EXE%" set "PS_EXE=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" :: --- Determine script name (same as BAT) --- set "PS1=%~dp0%~n0.ps1" if not exist "%PS1%" ( echo [ERR] PowerShell script not found: echo %PS1% echo. echo Create a file with the same name and .ps1 extension. echo Example: echo %~n0.ps1 echo. pause exit /b 1 ) echo [OK] Using PowerShell: %PS_EXE% echo [OK] Executing script : %PS1% echo ---------------------------------------------------------- echo. :: --- Run script --- "%PS_EXE%" -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%PS1%" %* echo. echo ---------------------------------------------------------- echo [DONE] Script finished. echo ========================================================== echo. endlocal pause exit /b ++++