2016-10-13 2 views
5

Когда я типа iex -S mix в PowerShell я получаю эту ошибку:Не удается запустить эликсира приложение от PowerShell

Invoke-Expression : A positional parameter cannot be found that accepts argument 'mix'. 
At line:1 char:1 
+ iex S mix 
+ ~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand 

Что такое правильный способ написания «-S микс» после того, как команда «Iex», чтобы получить тот же эффект, набравший его в cmd? Это проблема, когда я не понимаю синтаксиса PowerShell, который, как я полагаю.

+0

Является ли 'iex' чем-то связанным с эликсиром? –

+0

Что именно означает '-s'? 'iex', который является псевдонимом для' Invoke-Expression', не имеет параметров, которые называются или начинаются с 'S'. – briantist

+0

@PaulHicks yes iex означает интерактивный эликсир, я пытался запустить его не Invoke-Expression –

ответ

8

Проблема в том, что iex является псевдонимом в Powershell, сокращенном для Invoke-Expression. Если вы пытаетесь запустить команду iex.exe, iex.bat или iex.cmd, вам придется указать ее каким-то уникальным способом: достаточно явного (или полного) пути или даже просто добавить расширение приложения. Таким образом, Powershell не будет пытаться запустить Invoke-Expression.

Get-Command может очистить такого рода вещи для вас:

PS C:\Dir> Get-Command iex 

CommandType  Name            ModuleName 
-----------  ----            ---------- 
Alias   iex -> Invoke-Expression 

PS C:\Dir> Get-Command cmd 

CommandType  Name            ModuleName 
-----------  ----            ---------- 
Application  cmd.exe 

Это не представляется возможным перечислить как тип команды и путь в то же время: если вы хотите увидеть какой iex есть что, вы можете использовать эту форму:

PS C:\Dir> Get-Command -All iex -Syntax 
Invoke-Expression 
C:\windows\iex.bat 

вы можете узнать больше о том, как Powershell решает, какую команду работать в компании Microsoft technet library.

+2

Ah good call; Я пропустил последний важный вывод о том, что он, вероятно, пытался назвать что-то еще. Я бы добавил, что использование команды Get-Command iex показало бы то, что пытался запустить PowerShell, и это очистило бы его, и я бы включил ссылку на [about_Command_Precedence] (https://technet.microsoft .com/EN-US/библиотека/hh848304.aspx). – briantist

+0

Выполнено как предложено. –

+3

Красиво сделано; возможно, также упомянуть '-All', чтобы показать _all_ формы данной команды в порядке убывания приоритета. Quibble: вам не обязательно нужен полный _path_; в данном случае добавление _extension_ является достаточным; т. е. используя полное _filename_: 'iex.bat'. – mklement0

5

Для кого-то, кто может увидеть этот вопрос:

Короткий ответ - чтобы запустить Iex изнутри Powershell типа iex.bat. В данном конкретном случае iex.bat -S mix

Смежные вопросы