假設我有一系列命令:
# 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