2016-10-13 48 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