1

我对 PowerShell 模块的工作方式感到困惑。

我从博主那里下载并复制了一个模块。我已将 .zip 解压缩并解压缩到 %USERPROFILE%\Documents\WindowsPowerShell\Modules\SomeModule

此文件夹中是模块使用的 .NET 程序集,但不包含已编译的 CmdLets。相反,命令是 .psm1 文件中的函数,而 .psd1 文件描述清单。

如果我打开 PowerShell,这些功能可用并且可以工作,但我想添加我自己的功能,所以我添加了它,但是我看不到它。我重新启动了所有 PowerShell 实例,删除了模块并再次导入。

作为测试,我重命名了一个现有的工作函数。有趣的是,在 remove 和 import 之后,该函数消失了,而不是采用了它的新名称。如果我将其重命名(仅更改一个字符)并删除/导入,则它会再次出现。

help blahblah用来列出一组中的所有命令,因为它们都具有相同的前缀。清单导出所有 (*) 函数。显然我不明白这些类型的脚本模块是如何工作的,即使在我运行 Remove-Module 之后,这些功能都列出来了!我之前在 C# 中编写了一个编译模块,并且按预期工作。

这是怎么回事?为什么重命名函数会导致它消失?谢谢。

4

1 回答 1

1

找到了。这一行出现在我在 .psm1 文件中忽略的一些内容中。

Export-ModuleMember X, Y, Z

那么,我想清单可以否决这一点或在脚本中替换对它的需求?谁知道。无论如何,希望这对某人有所帮助。

于 2013-01-08T16:39:34.977 回答