Udało mi się ominąć ten błąd, wywołując PowerShell w następujący sposób:
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
Oznacza to, że dodałem -executionpolicy bypass
do sposobu wywoływania skryptu.
To działało w systemie Windows 7 z dodatkiem Service Pack 1. Jestem nowy w programie PowerShell, więc mogą istnieć zastrzeżenia dotyczące robienia tego, których nie jestem świadomy.
[Edytuj 2017-06-26] Nadal bez problemu korzystam z tej techniki w innych systemach, w tym Windows 10 i Windows 2012 R2.
Oto, czego teraz używam. Dzięki temu nie mogę przypadkowo uruchomić skryptu, klikając go. Kiedy uruchamiam go w programie planującym, dodaję jeden argument: „harmonogram”, który omija monit.
To również zatrzymuje okno na końcu, więc mogę zobaczyć dane wyjściowe 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%