poner un archivo .cmd simple en mi subcarpeta con mi archivo .ps1 con el mismo nombre, por lo que, por ejemplo, un script llamado "foobar" tendría "foobar.ps1" y "foobar.cmd". Entonces, para ejecutar el .ps1, todo lo que tengo que hacer es hacer clic en el archivo .cmd desde el explorador o ejecutar el .cmd desde el símbolo del sistema. Uso el mismo nombre base porque el archivo .cmd buscará automáticamente el .ps1 usando su propio nombre.
::====================================================================
:: 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 le permite iniciar el archivo .cmd desde el símbolo del sistema sin tener que cambiar al directorio específico donde se encuentran los scripts. Cambiará al directorio de secuencia de comandos y, cuando finalice, vuelva al directorio original.
También puede detener la pausa si desea que la ventana de comandos desaparezca cuando finalice el script.
Si mi script .ps1 tiene parámetros, los solicito con avisos de GUI usando .NET Forms, pero también hago que los scripts sean lo suficientemente flexibles como para aceptar parámetros si quiero pasarlos. De esta manera, puedo hacer doble clic en el Explorador y no tener que conocer los detalles de los parámetros, ya que me pedirá lo que necesito, con cuadros de lista u otros formularios.