2016-10-13 44 views
5

运行灵药应用程序当我在PowerShell中键入iex -S mix我得到这个错误:无法从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与elixir有什么关系? –

+0

'-s'应该是什么? iex是“Invoke-Expression”的别名,没有任何以'S'开头的参数。 – briantist

+0

@PaulHicks yes iex代表交互式灵药,我试图运行它不调用 - 表达式 –

回答

8

问题是iex是Powershell中的别名,Invoke-Expression的缩写。如果您尝试运行命令iex.exe,iex.batiex.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如何决定哪些命令微软technet library运行。

+2

啊好的呼叫;我错过了最后一个重要的推论,他可能试图打电话给其他人。我会补充一点,使用Get-Command iex会显示PowerShell试图运行的是什么,并且会为他清除它,并且会包含指向[about_Command_Precedence]的链接(https://technet.microsoft .COM/EN-US /库/ hh848304.aspx)。 – briantist

+0

按照建议完成。 –

+3

做得很好;也许还要提到'-All'以优先级降序显示给定命令的所有形式。 Quibble:你不一定需要一个完整的_path_;在这种情况下,增加_extension_就足够了;即使用完整的_filename_:'iex.bat'。 – mklement0

5

对于其他人谁可能会看到这样的疑问:

简短的回答 - 从运行PowerShell的类型iex.bat内IEX。在这种特殊情况下iex.bat -S mix