PowerShell的错误:有没有一种方法来捕获“命令未找到”的错误到自定义功能?

StackOverflow https://stackoverflow.com/questions/1445412

<强>背景

假设我有能够理解并解释small_commands诸如函数的powershell:

todolist.additem/title=shopping/body=get milk

进一步假设我调用该函数是这样的:

myfunc [small_command goes here]

<强>问题: 有没有办法,我可以在small_command型,仍然有PowerShell的调用MYFUNC,即使我忘了前面加上“MYFUNC”小命令的方法吗?这样看来,如果有一种方法来捕获“命令未找到”可以工作的错误。

后面这个问题的总体思路是:从命令恢复的能力不是通过将问题的命令行来,可以试着从我的输入错误“恢复”功能发现错误。

注意: 也欢迎是这种方法或替代的思路的任何评论。

有帮助吗?

解决方案

您可以使用陷阱语句,并指定哪些异常你捕捉陷阱CommandNotFound

& {
    trap [Management.Automation.CommandNotFoundException] 
    {
        "Code to Run here"; 
        (get-history);
        continue
    } 
    NotACommand
    }

此代码将设置为CommandNotFoundException一个陷阱,当它击中NotACommand“命令”,它会调用陷阱声明并运行在具有“代码在这里运行”的块中的代码,然后它会继续。

我不知道会访问该扔execption命令行的唯一的事。也许使用get-历史。

其他提示

您需要别名/脚本每个small_command ...运行myfun small_command ...

别名也许会有帮助,与主脚本看着$MyInvocation,如果不通过别名映射改写。

不幸的是,在没有的powershell“最后沟”命令钩。我已经要求球队虽然考虑这样的功能,但它仍有待观察,如果V3将包含这样的功能。

这就是说,可以通过添加一些代码到提示功能,其每一个交互式命令之后调用模仿此行为。你可以测试$?系统变量,表示最后的命令$成功^。当然这种技术只会工作交互,并捕获所有的参数是困难的。

-Oisin

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top