Execute um script do powershell exatamente como um comando em lote

0

Como posso obter o efeito de executar um script do powershell a partir de um comando em lote.

por exemplo. Eu tenho alguns comandos em lote no PATH específicos para o meu usuário, eu uso estes para fazer usando a linha de comando & git mais fácil para o meu trabalho.

No entanto, ainda não adquiri o hábito de aprender PowerShell, por isso não gosto de usar o PowerShell se puder ajudá-lo.

No entanto, à medida que as coisas migram, mais e mais scripts parecem ser scripts do PowerShell.

Como posso criar um arquivo em lotes 'atalho', que encaminha todos os argumentos passados para ele, para um script PowerShell com o mesmo nome?

Por exemplo Eu tenho um script do Powershell chamado stree.ps1

Start-Process "C:\Users\ryan.leach\AppData\Local\SourceTree\SourceTree.exe" -ArgumentList "-f $((Resolve-Path $args[0]).toString())"

que lançará o SourceTree com o argumento correspondente a um caminho passado.

Como posso criar um stree.bat que chama stree.ps1 encaminhando todos os argumentos para stree.ps1, sem ter que atualizar stree.bat se pequenas alterações forem feitas no stree.ps1?

    
por Ryan The Leach 28.06.2018 / 09:34

1 resposta

1

Se você executar stree.ps1 no PowerShell desta forma:

stree some_argument

então seu stree.bat deve se parecer com:

PowerShell -Command "stree some_argument"

Veja o documentação para mais detalhes.

Editar: eu não testei, mas presumo que você passaria os argumentos da mesma forma que com qualquer outro script em lote:

PowerShell -Command "stree %*"

e, em seguida, execute:

stree.bat some_argument some_other_argument

Editar 2: Ok, eu testei e funciona como esperado.

    
por 28.06.2018 / 11:01