Pude evitar este error invocando PowerShell de esta manera:
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
Es decir, agregué el -executionpolicy bypass
a la forma en que invoqué el script.
Esto funcionó en Windows 7 Service Pack 1. Soy nuevo en PowerShell, por lo que podría haber advertencias para hacer eso que no conozco.
[Editar 2017-06-26] Seguí usando esta técnica en otros sistemas, incluidos Windows 10 y Windows 2012 R2, sin problemas.
Esto es lo que estoy usando ahora. Esto evita que ejecute accidentalmente el script haciendo clic en él. Cuando lo ejecuto en el programador, agrego un argumento: "programador" y eso pasa por alto el indicador.
Esto también pausa la ventana al final para que pueda ver la salida de PowerShell.
if NOT "%1" == "scheduler" (
@echo looks like you started the script by clicking on it.
@echo press space to continue or control C to exit.
pause
)
C:
cd \Scripts
powershell -executionpolicy bypass -File .\rundps.ps1
set psexitcode=%errorlevel%
if NOT "%1" == "scheduler" (
@echo Powershell finished. Press space to exit.
pause
)
exit /b %psexitcode%