PowerShell'i şu şekilde çalıştırarak bu hatayı atlayabildim:
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1
Yani, -executionpolicy bypass
senaryoyu çağırma şeklime ekledim .
Bu, Windows 7 Service Pack 1'de çalıştı. PowerShell'de yeniyim, bu yüzden bunu yapmanın farkında olmadığım uyarılar olabilir.
[Düzenleme 2017-06-26] Bu tekniği Windows 10 ve Windows 2012 R2 dahil diğer sistemlerde sorunsuz kullanmaya devam ettim.
İşte şimdi kullandığım şey. Bu, betiğe tıklayarak yanlışlıkla komut dosyasını çalıştırmamı engelliyor. Bunu zamanlayıcıda çalıştırdığımda bir bağımsız değişken ekliyorum: "zamanlayıcı" ve bu komut istemini atlıyor.
Bu aynı zamanda pencereyi sonunda duraklatıyor, böylece PowerShell'in çıktısını görebiliyorum.
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%