Neerdex
13-10-2017, 19:27
Помогите решить проблему. Суть следующая: есть скрипт "start.ps1", который нормально запускается и работает через "ПКМ/Выполнить с помощью PowerShell", но если я попытаюсь запустить сначала сам PowerShell и потом прописать путь к скрипту, то он выдает ошибку.
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 (что не сработало).
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 (что не сработало).