无法从PowerShell运行elixir应用程序

Gra*_*mes 8 powershell elixir

当我输入iex -S mixPowerShell时,我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

在'iex'命令之后编写'-S mix'以获得在cmd中输入相同效果的正确方法是什么?我不相信PowerShell语法,这是一个问题.

Pau*_*cks 10

问题是它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
Run Code Online (Sandbox Code Playgroud)

似乎无法同时列出命令类型和路径:如果要查看哪个iex是哪个,可以使用以下格式:

PS C:\Dir> Get-Command -All iex -Syntax
Invoke-Expression
C:\windows\iex.bat
Run Code Online (Sandbox Code Playgroud)

您可以找到有关Powershell如何决定在Microsoft的technet库中运行哪个命令的更多信息.

  • 做得很好; 也许还会提到`-All`来显示给定命令的_all_形式,按优先级的降序排列.狡辩:你不一定需要一个完整的_path_; 在手头的情况下,添加_extension_就足够了; 即,使用完整的_filename_:`iex.bat`. (3认同)
  • 好的电话; 我错过了最后一个重要的推论,他可能试图打电话给别的东西.我想补充一点,使用`Get-Command iex`将准确显示PowerShell正在尝试运行的内容,这将为他清除它,并且我将包含指向[about_Command_Precedence]的链接(https://technet.microsoft .COM/EN-US /库/ hh848304.aspx). (2认同)

Ono*_*cci 8

对于其他可能会看到此问题的人:

简短回答 - 从Powershell类型中运行iex iex.bat.在这种特殊情况下iex.bat -S mix