【问题标题】:PowerShell module changes not visiblePowerShell 模块更改不可见
【发布时间】:2012-12-22 13:51:26
【问题描述】:

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

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

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

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

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

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

发生了什么事?为什么重命名函数会导致它消失?谢谢。

【问题讨论】:

    标签: powershell powershell-3.0


    【解决方案1】:

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

    Export-ModuleMember X, Y, Z

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

    【讨论】:

    • 正确,模块清单能够推翻 Export-ModuleMember 指定的内容,或者您​​可以将其视为能够更多地限制可用成员。但是,它不能扩大可用成员(即导出未由 Export-ModuleMember 导出的私有成员)IIRC。
    猜你喜欢
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2020-02-10
    相关资源
    最近更新 更多