如何从源脚本退出powershell?

Bog*_*mac 4 powershell powershell-2.0

考虑“outer.ps1”:

"in outer.ps1"
. .\inner.ps1
"in outer.ps1 after sourcing inner.ps1"
Run Code Online (Sandbox Code Playgroud)

来源“inner.ps1”,它刚刚退出:

exit 0
Run Code Online (Sandbox Code Playgroud)

当我运行“outer.ps1”时,输出表明出口只从“inner.ps1”返回:

in outer.ps1
in outer.ps1 after sourcing inner.ps1
Run Code Online (Sandbox Code Playgroud)

是否可以从inner.ps1退出powershell进程?我不想抛出异常,这将是一个正常的终止。

Kei*_*ill 5

您可以改用它:

[Environment]::Exit(0)
Run Code Online (Sandbox Code Playgroud)

但请注意 - 它会完全退出 PowerShell 控制台。那是一个相当大的锤子。:-)

更好的方法是在 outer.ps1 中使用陷阱处理程序,例如:

trap { exit 0 }
Run Code Online (Sandbox Code Playgroud)

并在inner.ps1中做一个投掷,例如:

throw "Inner.ps1 done!"
Run Code Online (Sandbox Code Playgroud)