Лаунчер для PowerShell скриптов
Описание (README)
run_the_same_name_ps1.bat - скрипт который запускает PowerShell (*.ps1) скрипты с таким же названием как у *.bat файла в каталоге рядом. С возможностью передачи аргументов без проверки на запуск с правами администратора.
Повышение прав, если необходимо, должно быть запрошено в самом PowerShell скрипте.
Пример:
browser.bat
будет запущен
browser.ps1
Расширенная версия (рекомендуется)
Текст кода "run_the_same_name_ps1.bat" (расширенная версия)
- 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
Мини версия
Версия с запросом повышения прав
Если в скрипте PowerShell (*.ps1) не реализован запрос на повышение прав для выполнения, но оно требуется, то можно запускать через этот скрипт.
Рекомендуется запрос на повышение прав делать через сам скрипт PowerShell.
Текст кода "run_the_same_name_ps1.bat" (с запросом повышения прав выполнения)
- 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