помістіть простий .cmd файл у свою підпапку з моїм файлом .ps1 з тим самим іменем, так, наприклад, сценарій під назвою "foobar" мав би "foobar.ps1" і "foobar.cmd". Отже, щоб запустити .ps1, все, що мені потрібно зробити, - це натиснути файл .cmd від провідника або запустити .cmd з командного рядка. Я використовую те саме базове ім'я, оскільки .cmd файл автоматично шукатиме .ps1, використовуючи власне ім’я.
::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
@echo off
for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
pushd "%SCRIPT_PATH%"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
set SCRIPT_PATH=
pause
Pushd / popd дозволяє запускати .cmd файл із командного рядка без необхідності переходити до конкретного каталогу, де розташовані сценарії. Він зміниться в каталог сценаріїв, після завершення поверніться до початкового каталогу.
Ви також можете зняти паузу, якщо ви хочете, щоб вікно команди зникло після завершення сценарію.
Якщо мій скрипт .ps1 має параметри, я підказую для них підказки GUI, використовуючи .NET Forms, але також роблю сценарії достатньо гнучкими, щоб приймати параметри, якщо я хочу передати їх замість. Таким чином я можу просто двічі клацнути по ньому від Explorer і не повинен знати деталі параметрів, оскільки він запитає, що мені потрібно, зі списками або іншими формами.