|
|
Проблема с запуском скрипта в powershell
Помогите решить проблему. Суть следующая: есть скрипт "start.ps1", который нормально запускается и работает через "ПКМ/Выполнить с помощью PowerShell", но если я попытаюсь запустить сначала сам PowerShell и потом прописать путь к скрипту, то он выдает ошибку.
Код скрипта "start.ps1"
PHP код:
param ( [string]$php = "", [switch]$Loop = $true )
if($php -ne ""){ $binary = $php }elseif(Test-Path "bin\php\php.exe"){ $env:PHPRC = "" $binary = "bin\php\php.exe" }else{ $binary = "php" }
if(Test-Path "PocketMine-MP.phar"){ $file = "PocketMine-MP.phar" }elseif(Test-Path "src\pocketmine\PocketMine.php"){ $file = "src\pocketmine\PocketMine.php" }else{ echo "Couldn't find a valid PocketMine-MP installation" pause exit 1 }
function StartServer{ $command = "powershell " + $binary + " " + $file + " --enable-ansi" iex $command }
$loops = 0
StartServer
while($Loop){ if($loops -ne 0){ echo ("Restarted " + $loops + " times") } $loops++ echo "To escape the loop, press CTRL+C now. Otherwise, wait 5 seconds for the server to restart." echo "" Start-Sleep 5 StartServer }
Собственно, в качестве ошибки он выдает данную строку из самого кода: echo "Couldn't find a valid PocketMine-MP installation", после чего ругается на "pause".
Никак не могу с этим разобраться. По факту, мне нужно это дело запускать Планировщиком, что я сначала и пытался делать, путем запуска powershell.exe с аргументом -File путь\start.ps1 (что не сработало).
|
пути в скрипте указаны относительные, поэтому его работа зависит от текущей директории (в интерфейсе Планировщика заданий это называется Рабочая папка)
|
Да, я уже думал об этом, но тогда почему я не могу вручную через Шелл запустить скрипт указав путь к нему? Ошибка та же, что и в планировщике. К тому планировщик стартует сначала шелл, а потом аргументом прописывается команда на запуск файла по полному пути к файлу. Непонятно все равно.
|
Токмо второе и десятое сообщения там надо пропускать не глядя, ибо такая мифология…
|
Busla, спасибо вам за ответы но, если я не ошибаюсь, то вы говорите совсем не о том. Рабочая папка (текущая директория) здесь не при чем - файл прекрасно находится вручную из Шелл и запускается, но выдает ошибку в самом скрипте. Более того, я даже прописал путь к скрипту в переменной среде в PATH - результат тот же, файл находится, скрипт запускается, но выдает ошибку в работе. При этом запуская скрипт напрямую из папки через "ПКМ-Выполнить с помощью powershell" - скрипт прекрасно работает...
|
Neerdex, ошибаетесь.
Скрипт вам пишет, что не может найти PocketMine.php в подкаталоге той директории, из которой запускаете. Не где скрипт находится, а место в файловой системе, которое вы сейчас рассматриваете, в powershell оно обычно подписано справа от курсора в командной строке.
|
Busla, я извиняюсь, но можно как-то более простым языком объяснить, что делать конкретно? Просто я не совсем понимаю, ведь PocketMine.phar находится в той же директории, что и скрипт.
|
Хм, кажется, я немного продвигаюсь вперед к решению проблемы. Вы, Busla, были правы, простой запуск ps.exe и указание рабочей папки командой cd d:\путь\ и затем start.ps1 - запустило скрипт корректно. Но вот планировщик все никак не хочет слушаться... У меня в нем настроен запуск powershell.ехе, далее в аргументе указываю выполнение команды -command "d:\путь\путь_к_директории_скрипта\" чтобы просто убедиться в правильности первого шага, но шелл выпадает открывается на долю секунды, жалуясь примерно такой ошибкой "в строке начинающейся с cd... отсутствует терминатор бла бла бла" - что-то в этом духе.
Как мне все-таки запустить через планировщик powershell.exe чтобы он выполнил команду cd d:\мой_путь и на этом ждал дальнейших команд?
|
Цитата:
Цитата Neerdex
команды -command "d:\путь\путь_к_директории_скрипта\" »
|
команды собственно и нет - это просто путь к директории
в планировщике, в поле Рабочая папка прописать путь к директории, где лежит ваш скрипт
Цитата:
Цитата Neerdex
Как мне все-таки запустить через планировщик powershell.exe чтобы он выполнил команду cd d:\мой_путь и на этом ждал дальнейших команд? »
|
такое поведение не очень предусмотрено
но конкретно cd можно заменить указанием пути в поле "Рабочая папка"
|
Время: 20:14.
© OSzone.net 2001-