Lar*_*old 5 error-handling powershell exception
回到我(有限的)java编程时代,我记得这个很好的功能,如果我试图进行可能抛出异常的调用,java会要求我处理该异常或将其传递给可能的东西.
无论如何,我正在写一段与Active Directory中的对象混淆的PowerShell代码,所以我想要非常非常小心.我偶尔会遇到远程超时错误,这引出了我更普遍的问题:
"我怎么能提前知道哪些cmdlet可以抛出异常表明危险情况,以及那些可能的异常列表是什么?"
我想知道每个cmdlet的异常列表是否太长,无法解决所有可能性.我也不想只编写一个通用的异常处理程序,因为PowerShell似乎在错误处理的一般意义上做得很好.
确定每个cmdlet可以发生的所有异常列表的最佳方法是什么?这甚至可行/可行吗?
谢谢!
嘿,我觉得你从那里开始走错了路.陪审团非常关注Java的检查异常是否是一个好主意.
那就是说,你问的很难回答.在Java中,编译器通过静态分析可以清楚地知道哪些方法抛出(或者至少它们声明它们会抛出什么异常); 这是一个仅存在于编译器进程空间中的封闭系统.在分布式异构系统的现实世界中,没有通用的检查异常框架.PowerShell cmdlet存在于win32进程中的.NET应用程序域的域中,但它们使用诸如Active Directory之类的钝语协议与外部服务器上的支持系统进行通信,这些协议在实现和一般概念上都是分开的.特殊条件可能会从一个域"流动"到另一个域,但它们会在它们冒泡到你之前在所有方向上变形,包裹和组合,这是控制台上的不良用户.简而言之,答案是否定的.通用Cmdlets(get-item,get-childitem)不知道底层提供者系统导致错误的倾向,也不能可靠地知道这一点.
但是,如果您有一个专用的Active Directory模块(如Microsoft的ActiveDirectory模块或Quest的QAD模块),那么他们可能已经列出了在支持系统中出现异常情况时其cmdlet将出现的异常.可以在模块(或管理单元)帮助文件中或基于每个cmdlet找到此帮助(最有可能).尝试运行以下命令:
ps> get-help do-something -full | more
Run Code Online (Sandbox Code Playgroud)
这将显示完整的调用语法以及开发人员感觉良好足以祝福您的任何注释.特别注意页脚; 在这里,您通常会找到一个更常见的帮助主题,例如"about_thesecmdlets",您可以查看:get-help about_thesecmdlets
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |