我对PowerShell模块的工作原理感到困惑。
我从一个博客上下载并复制了一个模块。我已经解锁并将.zip解压到%USERPROFILE%\Documents\WindowsPowerShell\Modules\SomeModule
此文件夹中有一个模块使用的.NET程序集,但不包含已编译的CmdLets。相反,命令是.psm1文件中的函数,.psd1文件描述清单。
如果我打开PowerShell,函数是可用的并且可以工作,但是我想添加我自己的函数,所以我添加了它,但是我看不到它。我已经重启了所有PowerShell实例,删除了模块并再次导入。
作为测试,我重命名了一个现有的工作函数。有趣的是,删除并导入函数后,该函数将消失,而不是采用其新名称。如果我将其重命名(仅更改单个字符)并删除/导入,则它会再次出现。
我使用help blahblah
列出一组命令中的所有命令,因为它们都有相同的前缀。清单导出所有(*)函数。显然,我不明白这些类型的脚本模块是如何工作的,即使在我运行Remove-Module之后,这些函数也都列出了!我以前用C#写过一个编译过的模块,它的工作效果和预期的一样。
到底怎么回事?为什么重命名一个函数会导致它消失?谢谢。
发布于 2013-01-08 16:39:35
找到了。这一行出现在我在.psm1文件中忽略的一些内容中。
Export-ModuleMember X, Y, Z
所以,我猜清单可以否决这一点,或者在脚本中取代它的需求?谁知道呢。无论如何,希望这能帮助一些人。
https://stackoverflow.com/questions/14219584
复制相似问题