PowerShell boy和cmdlet丢失的情况!

首先,模块在PowerShell v2.0规则!在2.0版本中,这是仅次于remoting的第二个我最喜欢的特性。而且,随着CTP3的发布,模块变得更好、更快、更强……毕竟,我们可以重建他。我们有技术…哦,等等,话题不对!

无论如何,我完全计划深入研究一些新特性,就像我对events所做的那样。但是,首先我想分享我前几天经历的一个有趣的小模块怪癖。

基本上,我正在将我的脚本转储到一个模块中。这个脚本相当复杂,有一组用于设置执行环境的代码。换句话说,就是模块应该做的事情。

其中一些环境执行代码加载了所需的类型或单元。我努力将这些命令转移到新生成的模块清单文件中。但是,由于某些原因,忘记了脚本中加载的命令Quest.ActiveRoles.ADManagement管理单元。

没什么大不了的,对吧?可能没有,但在我使用Import-Module非常奇怪的事情发生了。基本上,当我试图从模块执行一个函数时,我得到了一个错误。出现故障的命令正在使用Get-QADObject从Active Directory检索一些信息。为了解决这个问题,我决定只执行cmdlet而不使用任何花哨的过滤忍者代码,然而,PowerShell友好地解释道:

Get-QADObject不能识别为cmdlet、函数、可操作程序或脚本文件。

啊....好吧……然后我检查以确保Quest.ActiveRoles.ADManagementsnapin被加载使用Get-PSSnapin。毕竟,我刚刚导入的模块应该已经加载了Quest.ActiveRoles.ADManagement管理单元。果然,snapin被加载了。接下来,我执行以下命令,以查看在PowerShell控制台中是否可以使用Quest cmdlet。

get命令* qad系统*

没有什么结果!无法访问cmdlet。换句话说,模块的核心概念现在正带着邪恶的笑容盯着我!来自Quest管理单元的cmdlet是被隔离的,这是由于模块试图防止全局作用域被冲突的函数、变量、别名等所污染。在这种情况下,唯一的问题是,任务管理单元是不合适的,从我的控制台会话,除非我首先删除它,然后添加它回来。

游手好闲的人……我将需要在另一篇文章中深入探讨这个问题,我相信这可能是一个更大的问题。

如果你喜欢这篇文章,可以看看泰森的其他文章:

如果你愿意,你也可以看看泰森的最新出版物:

最后,参观微软子网浏览更多来自互联网的新闻、博客和观点。或者报名参加每两周微软简报(点击新闻/微软新闻警报)

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对最重要的话题发表评论。
相关:

版权©2009Raybet2

工资调查:结果在