Powershell Start-Process работает, но не из сценария .ps1

Если я вставлю это в синее окно Powershell, он будет работать нормально и запустит программу.

Start-Process “C:\Program Files (x86)\Engine Pro\engine.exe” -ArgumentList "#21#”;

но если я попытаюсь запустить ту же команду в сценарии, сценарий run.ps1, который запускается из запланированной задачи в Windows, он ничего не сделает

PowerShell.exe -windowstyle hidden -NoProfile -ExecutionPolicy Bypass C:\run.ps1

Имеет ли это какое-то отношение к -ExecutionPolicy Bypass? Должен ли я также иметь в сценарии политику выполнения? Я действительно не знаю, что это такое. Я знаю, что такое -windowstyle hidden, но -NoProfile -ExecutionPolicy Bypass Я не уверен, почему это есть, просто нашел его на другой странице, но все работает, за исключением запуска программы из сценария.

Спасибо.


person Kurt Lane    schedule 24.12.2018    source источник
comment
Ваша команда использует двойные кавычки Unicode (не ASCII); если вы не сохраните свои *.ps1 файлы как UTF-8 с спецификацией (или как UTF-16LE), PowerShell неверно их интерпретирует.   -  person mklement0    schedule 24.12.2018
comment
В зависимости от вашей версии PowerShell (ниже 6 на ядро) по умолчанию используется -Command, а не -File, поэтому вам может потребоваться PowerShell.exe -windowstyle hidden -NoProfile -ExecutionPolicy Bypass -File C:\run.ps1   -  person    schedule 24.12.2018
comment
Весь сценарий работает со всем, но когда я пытаюсь запустить программу из сценария, он просто не замечает. Я использую и редактирую файл с помощью программы кодирования ATOM 1.33.1 x64. Добавление -File ничего не дало. Я подумал, что это может быть BitDefender, но я отключил его, и программа не запускается. Я попытался запустить notepad.exe из сценария, но он тоже не запускается. Не уверен, что происходит.   -  person Kurt Lane    schedule 24.12.2018
comment
Глупый, это был символ &. Я уже видел это в сотнях веток. & Start-Process "C:\Program Files (x86)\Engine Pro\engine.exe" -ArgumentList "#21#"; работал, потребовалось время, чтобы разобраться. Спасибо всем   -  person Kurt Lane    schedule 24.12.2018


Ответы (1)


person    schedule
comment
Оператор вызова (&) здесь лишний. - person Bill_Stewart; 25.12.2018
comment
Чтобы уточнить комментарий @ Bill_Stewart: Отсутствие & перед вашим Start-Process вызовом не может быть источником вашей проблемы, как описано в вашем вопросе, потому что не имеет значения, помещаете ли вы & перед Start-Process. & требуется только необходимо, если имя / путь команды указаны в кавычках и / или через ссылку на переменную. - person mklement0; 25.12.2018
comment
О, даже с битом -ArgumentList? Строка над ней - это точная линия, которую я использую, и она работает. Так что сейчас я не собираюсь дурачиться. Интересно, в чем тогда была проблема? Похоже, что я решил ее исправить. Я скоро вернусь к этому, мне нужно было попытаться заставить это работать до Рождества, и я кое-что исправил. Скрипт теперь запускает программу, как я и хотел. Спасибо за вашу поддержку. Возможно, это была защита от угроз Bit Defender, я отключил ее, а затем поставил исключение для Powershell.exe и x64 Powershell.exe. Я тоже заметил, что это блокирует его. - person Kurt Lane; 26.12.2018