为什么Import-Module在AppData \ Local \ Temp中创建.psd1和.psm1文件?

问题描述

我在Documents \ PowerShell \ Modules中安装了一个二进制模块(MyModule.dll和随附的MyModule.psd1)。在.psd1文件中,使用FunctionsToExport键导出功能的子集。

当我使用Import-Module将其导入到当前会话中时,将在AppData \ Local \ Temp中创建MyModule.psm1和MyModule.psd1。 .psm1文件不包含实际代码(这很好,因为我不希望代码以纯文本形式显示)。它的内容只是我没有创建的一些样板文本:

# Internal PowerShell function. Use F5 for debugging internal functions. F10 or F11 (single step) is not supported.

问题是这个新的MyModule.psd1,它具有我安装的.psd1中的某些数据,但明显缺少FunctionsToExport项。结果,所有功能都被导出到会话中。此外,当我使用Get-Module时,我同时看到了二进制模块和脚本模块。例如:

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     0.0.11.0              MyModule                            {Function1,Function2,Fu…
Binary     0.0.11                MyModule

我想要的是导入我的二进制模块,并将单个模块导入到会话中,该会话仅导出我在已安装的psd1文件中定义的命令。我不需要这些AppData \ Local \ Temp版本。

有人可以向我解释这里发生了什么以及我如何实现自己的目标吗?我已经阅读了一些有关PowerShell兼容性(https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_windows_powershell_compatibility?view=powershell-7)的文章,但我认为它不适用,因为:

  1. 该模块未安装在%windir%\ system32 \ WindowsPowerShell \ v1.0 \ Modules中。
  2. 我在已安装的.psd1清单中定义了CompatiblePSEditions = @('Core')。

我现在很茫然。预先感谢您指出了正确方向的指针。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)