2014-04-12 74 views
4

有人能告訴我如何在下面的情況下避免這個錯誤?Powershell - 「表達式只允許作爲管道的第一個元素」

$codegenDir = "Z:\Desktop\Song-Renamer" 
$PowerShellRepresentation = dir -path $MyMusicFolder -recurse -include *.mp3,*.m4a,*.wma,*.flac,*.ape | select -ExpandProperty FullName | $codegenDir\codegen.exe -s 10 20 | Out-String | ConvertFrom-Json 

什麼完全困惑我是,如果簡單地省略$ codegenDir(見下文),代碼正常運行。我「理解」我理解首先放置表達式的概念(在管道中的其他項目之前)但我不確定如何重新排列/拆分此代碼,因此有問題的表達式Codegen.exe外部命令行是在管道中第一項(仍然可以通過管道將數據傳遞給它)。

$PowerShellRepresentation = dir -path $MyMusicFolder -recurse -include *.mp3,*.m4a,*.wma,*.flac,*.ape | select -ExpandProperty FullName | .\codegen.exe -s 10 20 | Out-String | ConvertFrom-Json 

理想的情況下,這將是很好做到這一點使用最少的代碼量成爲可能。

回答

5

給的(僅有的差異是&):

$PowerShellRepresentation = dir -path $MyMusicFolder -recurse -include *.mp3,*.m4a,*.wma,*.flac,*.ape | select -ExpandProperty FullName | & $codegenDir\codegen.exe -s 10 20 | Out-String | ConvertFrom-Json 

這裏的a link關於在PowerShell中以不同方式執行命令的technet文章。

相關問題