这可能吗?我终于决定开始设置我的个人 .NET 开发环境,以更接近地模仿我设置 *NIX 开发环境的方式,这意味着要认真学习 Powershell。
我目前正在编写一个通过文件系统递归的函数,设置工作目录以便构建东西。困扰我的一件小事是,如果我 Ctrl+C 退出该函数,它会将我留在脚本上次所在的任何位置。我试过设置一个 trap
运行时将目录更改为起点的块,但这似乎仅适用于(并触发)异常。
如果这是一种以 Unix 为根的语言,我会为 SIGINT
设置一个信号处理程序。 ,但我在 Powershell 中找不到任何类似的搜索。戴上我的 .NET 上限,我想象有某种事件可以附加处理程序,如果我不得不猜测,它会是 $host
的事件。 ,但我找不到 System.Management.Automation.Internal.Host.InternalHostUserInterface
的任何规范文档,并且我能够搜索的任何轶事都没有帮助。
也许我错过了一些完全明显的东西?
最佳答案
你的意思是这样的吗?
try
{
Push-Location
Set-Location "blah"
# Do some stuff here
}
finally
{
Pop-Location
}
查看文档 here.特别是那一段:“无论 Try 块是否遇到终止错误,Finally 块语句都会运行。Windows PowerShell 在脚本终止之前或当前块超出范围之前运行 finally 块。即使您使用 CTRL,Finally 块也会运行+C 停止脚本。如果 Exit 关键字从 Catch 块中停止脚本,Finally 块也会运行。”
关于powershell - 如何在 PowerShell 中捕获信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179032/