Supongamos que tengo una serie de comandos:
# foo.ps1
do-this
do-that
do-something-totally-different
etc.
A continuación, quiero dejar de tener que escribirlos en el shell activo (porque modifica mi entorno de shell), así que en bash simplemente escribiría:
cat foo.ps1 | xargs -I arg eval arg
O algo por el estilo.
¿Cómo logro el mismo efecto con Windows PowerShell?
Respuesta1
Para ejecutar un archivo de script en el ámbito actual en lugar de en un ámbito nuevo, utiliceabastecimiento de puntos:
. .\foo.ps1
Alternativamente, puede usar Invoke-Expression
, el equivalente de PowerShell eval
, que debería ser exactamente igual a escribir los comandos usted mismo cuando se le solicite:
Get-Content .\foo.ps1 -Raw | Invoke-Expression
O más concisamente:
gc .\foo.ps1 -raw | iex