PowerShell的错误:有没有一种方法来捕获“命令未找到”的错误到自定义功能?
-
22-07-2019 - |
题
<强>背景强>
假设我有能够理解并解释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
不隶属于 StackOverflow