powershell - 如何在 PowerShell 中捕获信号?

标签 powershell

这可能吗?我终于决定开始设置我的个人 .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/

相关文章:

PowerShell 中的函数重载

json - 如何在PowerShell中将HashTable正确转换为JSON?

regex - 使用 Powershell 替换 INI 文件中的整行

c# - 通过 C# .NET 获取没有父级的 AD 组

powershell - 自动化 Runbook 中的 Start-AzureStorageBlobCopy 错误

powershell - 在 PowerShell 的 Active Directory 中测试计算机对象是否存在

powershell - 带有CSV文件的Powershell随机团队生成器

powershell - Ping IP 地址范围

powershell - 表达式或语句 powershell 中的意外标记 'if'

Azure AD :Powershell script to create roles based on groups