无法加载PowerShell模块



我创建了一个 *.psm1和 *.psd1文件。该名称与文件相同的目录(文件夹(中。此目录在c:Program FilesWindowsPowerShellModules...

Import-module报告无错误,Get-Module在后面显示模块。Test-ModuleManifest返回正确的清单。但是,CMDLET本身并未被PowerShell认可。还注意到Test-ModuleManifest是否不显示任何导出的命令(这是正常的?(。

文件安全性很好,当我将 *.psm1放在自动加载文件夹中时,它会按预期工作。

已经检查了通常的错误和错误以及广泛的谷歌搜索。PS画廊中的几个模块已成功进口。这家商店中没有人能够弄清楚缺少什么。

此故障发生在几个不同的平台上,所有窗口(7或10(都带有AMD和Intel Cores。

有人遇到这个问题吗?您能解决这个问题吗?

这是我的ModuleManifest,由New-ModuleManifest&用iSe修改。

#模块的模块'convert-f2c'##生成者:我##生成:4/25/2017#@{#与此清单关联的脚本模块或二进制模块文件。#rootModule =''#此模块的版本号。  moduleversion ='1.0'#支持的PSEDITION#compatibleSeditions = @((#用于唯一标识此模块的ID  GUID ='252B9222-9BC8-4634-B658-DD234B483152'#该模块的作者  作者='我'#该模块的公司或供应商  CompanyName ='我的公司'#此模块的版权语句  版权='(c(2017我。版权所有。'#该模块提供的功能的描述  描述='将华氏度转换为摄氏温度'#本模块需要的Windows Powershell引擎的最低版本#powerShellversion =''#该模块需要的Windows PowerShell主机的名称#PowerShellHostName =''#本模块需要的Windows PowerShell主机的最低版本#PowerShellHostversion =''#此模块需要的Microsoft .NET框架的最低版本。这先决条件仅适用于PowerShell桌面版。#dotnetframeworkversion =''#此要求的最低版本的通用语言运行时(CLR(模块。此先决条件仅适用于PowerShell桌面版。#clrversion =''#处理器体系结构(无,x86,AMD64(此模块需要#processorarchitecture =''#必须在全球环境中导入的模块导入此模块#必需modules = @((#在导入此模块之前必须加载必须加载的组件#必需Assemblies = @((#脚本文件(.ps1(在呼叫者的环境中运行之前导入此模块。#scriptStoprocess = @((导入此模块时要加载的#类型文件(.ps1xml(#typestoprocess = @((#format文件(.ps1xml(导入此模块时要加载#formatstoprocess = @((#要导入作为指定模块的嵌套模块的模块rootmodule/Moduletoprocess#NestedModules = @((#从该模块导出的功能,为了获得最佳性能,请勿使用通配符,不要删除条目,如果没有,请使用空数组功能要出口。  FunctionStoExport ='convert-f2c'#要从该模块导出的cmdlet,为了获得最佳性能,请勿使用通配符,不要删除条目,如果没有,请使用空数组cmdlet将出口。  cmdletstoexport = @((#要从此模块导出的变量  variablestoexport = @((#从此模块导出的别名,为了获得最佳性能,请勿使用通配符,不要删除条目,如果没有,请使用空数组别名出口。  aliasestoexport ='*'#DSC资源将从此模块导出#dscresourcestoexport = @((#用此模块包装的所有模块的列表#modulelist = @(convert-f2c.psm1(#与此模块打包的所有文件列表#filelist = @((#私人数据传递到指定的模块rootmodule/Moduletoprocess。这也可能包含一个psdata hashtablePowerShell使用的其他模块元数据。PrivatedAta = @{    psdata = @{        #应用于此模块的标签。这些有助于模块发现 在线画廊。        #标签= @((        #该模块许可证的URL。        #Clishuri =''        #该项目主要网站的URL。        #projecturi =''        #代表此模块的图标的URL。        #iconuri =''        #该模块的发行          发行版='初始创建,首先表现为模块 作者'    }#psdata hashtable的结尾}#私人哈希塔的结尾#该模块的HelpInfo URI#helpinfouri =''#从此模块导出的命令的默认前缀。覆盖 使用import -module -prefix的默认前缀。#DefaultCommandPrefix =''}

如果您有这些文件用于模块:

  • myModule.psd1
  • myModule.psm1
  • extramodule.psm1

您需要更新此行:

##NestedModules = @((

nestedModules = @('myModule','extramodule'(

并确保您的FunctionsToExport要么列出您的所有功能,也可以使用FunctionsToExport = '*'将它们全部导出。

我通过设置设置rootmodule参数。这样做不是在任何文献或参考文献中,而是现在适当的功能。

# Script module or binary module file associated with this manifest.
  RootModule = 'ModuleName (no extension)'

在清单文件中的rootmodule参数中指定全路径(up to'.psm1'(没有解决问题,因为ExportedCommands属性仍然为空属性。。

运行Import-Module MyFirstModule -Verbose说它正在从路径'.psd1'而不是'.psm1'加载模块。

以'.psm1'结尾的全路径运行Import-Module,正确加载了模块(即模块函数出现在ExportedCommands中(,但是在这种情况下,当您运行Get-Module时,ModuleType是脚本,而不是表现出来。因此,我想当清单文件位于模块目录中并且未正确识别时,问题似乎就会发生。

最新更新