假设我有一系列命令:
# foo.ps1
do-this
do-that
do-something-totally-different
etc.
接下来,我想停止在活动 shell 中写出这些内容(因为它会修改我的 shell 环境),因此在 bash 中我只需写:
cat foo.ps1 | xargs -I arg eval arg
或类似的规定。
如何使用 Windows Powershell 实现相同的效果?
答案1
要在当前作用域而不是新作用域中运行脚本文件,请使用点源:
. .\foo.ps1
或者,您可以使用Invoke-Expression
PowerShell 的eval
等效程序,它与在提示符下自己输入命令完全相同:
Get-Content .\foo.ps1 -Raw | Invoke-Expression
或者更简洁地说:
gc .\foo.ps1 -raw | iex