Pergunta

Alguém poderia me dizer como evitar esse erro nas circunstâncias abaixo?

$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

O que me intriga completamente é que se simplesmente omitir $codegenDir (veja abaixo), o código funciona corretamente.Eu "acho" que entendo o conceito de colocar a expressão em primeiro lugar (à frente de outros itens no pipeline.Mas não tenho certeza de como reorganizar/dividir esse código para que a expressão em questão a linha de comando externa Codegen.exe é o primeiro item no pipeline (e ainda será capaz de passar dados para ele via pipeline).

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

Idealmente, seria bom fazer isso usando a menor quantidade de código possível.

Foi útil?

Solução

Experimente o seguinte (a única diferença é o &):

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

Aqui está um link para um artigo do technet sobre a execução de comandos no PowerShell de diferentes maneiras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top