coloque um arquivo .cmd simples na minha subpasta com o meu arquivo .ps1 com o mesmo nome; portanto, por exemplo, um script chamado "foobar" teria "foobar.ps1" e "foobar.cmd". Portanto, para executar o .ps1, tudo o que preciso fazer é clicar no arquivo .cmd do explorer ou executar o .cmd em um prompt de comando. Eu uso o mesmo nome base, porque o arquivo .cmd procurará automaticamente o .ps1 usando seu próprio nome.
::====================================================================
:: 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
O pushd / popd permite iniciar o arquivo .cmd a partir de um prompt de comandos sem precisar mudar para o diretório específico em que os scripts estão localizados. Ele será alterado para o diretório do script e, quando terminar, volte para o diretório original.
Você também pode interromper a pausa se desejar que a janela de comando desapareça quando o script terminar.
Se meu script .ps1 tiver parâmetros, eu os solicito com solicitações da GUI usando o .NET Forms, mas também os flexibilizo o suficiente para aceitar parâmetros, se eu quiser passar por eles. Dessa forma, basta clicar duas vezes no Explorer e não precisar conhecer os detalhes dos parâmetros, pois ele me pedirá o que eu preciso, com caixas de listagem ou outros formulários.