Выполнить программу с аргументами

#powershell #powershell-3.0

#powershell #powershell-3.0

Вопрос:

Я хочу создать сценарий PowerShell для вызова Python3. Теперь в оболочке это было бы довольно просто, но, похоже, я не могу преобразовать следующее в PS:

 ../py/python3 myscript.py $@
  

Я заблудился где-то в лабиринте Start-Process , get-item , построения пути, …
Есть ли какой-нибудь ПРОСТОЙ способ сделать это в PowerShell?

Ответ №1:

PowerShell — это оболочка, поэтому по большей части запуск программ — это то, что она делает хорошо. Я предполагаю, что вы конвертируете сценарий оболочки Unix, который откуда $@ берется. Эквивалентом в PowerShell для этого, вероятно, будет $args или @args :

 ../py/python3 myscript.py $args
  

Внутри скрипта $args содержит аргументы для этого скрипта. Однако внутри блока сценария или функции он будет содержать аргументы для этого блока сценария или функции, поэтому будьте осторожны при абстрагировании элементов в вашем сценарии.

Ответ №2:

вызвать-выражение -команду «../py/python3 myscript.py » $@

Комментарии:

1. Это дает мне: Invoke-Expression : A positional parameter cannot be found that accepts argument '$@'

2. Прежде всего, это неправильно, как отмечает @abergmeier. Во-вторых, не существует случая проблемы с запуском программы из PowerShell, которую вы улучшаете , используя iex . Вы только накладываете на нее другие проблемы.