Suponha que eu tenha uma série de comandos:
# foo.ps1
do-this
do-that
do-something-totally-different
etc.
Em seguida, quero parar de escrever isso no shell ativo (porque isso modifica meu ambiente de shell), então no bash eu apenas escreveria:
cat foo.ps1 | xargs -I arg eval arg
Ou algo nesse sentido.
Como consigo o mesmo efeito com o Windows Powershell?
Responder1
Para executar um arquivo de script no escopo atual em vez de em um novo escopo, usefornecimento de pontos:
. .\foo.ps1
Como alternativa, você pode usar o equivalente Invoke-Expression
do PowerShell eval
, que deve ser exatamente o mesmo que digitar os comandos no prompt:
Get-Content .\foo.ps1 -Raw | Invoke-Expression
Ou mais concisamente:
gc .\foo.ps1 -raw | iex