无法加载PowerShell模块

时间:2017-04-25 15:32:24

标签: powershell module

我创建了一个* .psm1和* .psd1文件。驻留在与文件同名的目录(文件夹)中。此目录位于c:\Program Files\WindowsPowerShell\Modules\...

Import-module报告没有错误,Get-Module显示该模块。 Test-ModuleManifest返回正确的清单。但是,Powershell无法识别cmdlet本身。还要注意的是Test-ModuleManifest没有显示任何导出的命令(这是正常的吗?)。

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

已经检查了常见的错误和错误以及广泛的Google搜索。 PS Gallery中的几个模块已成功导入。这个商店里没有人能够找出遗漏的东西。

这种故障发生在几个不同的平台上,所有平台都是Windows(7或10),同时包含AMD和Intel内核。

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

这是我的ModuleManifest,由New-ModuleManifest&生成用ISE修改。

# Module manifest for module 'Convert-F2C'
#
# Generated by: me
#
# Generated on: 4/25/2017
#

@{

# Script module or binary module file associated with this manifest.
# RootModule = ''

# Version number of this module.
  ModuleVersion = '1.0'

# Supported PSEditions
# CompatiblePSEditions = @()

# ID used to uniquely identify this module
  GUID = '252b9222-9bc8-4634-b658-dd234b483152'

# Author of this module
  Author = 'me'

# Company or vendor of this module
  CompanyName = 'my company'

# Copyright statement for this module
  Copyright = '(c) 2017 Me. All rights reserved.'

# Description of the functionality provided by this module
  Description = 'Converts Fahrenheit to Celsius temperatures'

# Minimum version of the Windows PowerShell engine required by this module
# PowerShellVersion = ''

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This 
prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this 
module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to 
importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to 
importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in 
RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use 
wildcards and do not delete the entry, use an empty array if there are no 
functions to export.
  FunctionsToExport = 'Convert-F2C'

# Cmdlets to export from this module, for best performance, do not use 
wildcards and do not delete the entry, use an empty array if there are no 
cmdlets to export.
  CmdletsToExport = @()

# Variables to export from this module
  VariablesToExport = @()

# Aliases to export from this module, for best performance, do not use 
wildcards and do not delete the entry, use an empty array if there are no 
aliases to export.
  AliasesToExport = '*'

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @(Convert-F2c.psm1)

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in 
RootModule/ModuleToProcess. This may also contain a PSData hashtable with 
additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in 
 online galleries.
        # Tags = @()

        # A URL to the license for this module.
        # LicenseUri = ''

        # A URL to the main website for this project.
        # ProjectUri = ''

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
          ReleaseNotes = 'Initial creation, first manifested module by 
 author'

    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the 
 default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}

3 个答案:

答案 0 :(得分:2)

如果你有这些文件模块:

  • MyModule.psd1
  • MyModule.psm1
  • ExtraModule.psm1

您需要更新此行:

# NestedModules = @()

对此:

NestedModules = @('MyModule','ExtraModule')

确保您的FunctionsToExport列出了所有功能,或者您可以使用FunctionsToExport = '*'将所有功能全部导出。

答案 1 :(得分:1)

我通过设置RootModule参数让它工作。执行此操作不在任何文献或参考文献中,但模块现在可以正常运行。

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

答案 2 :(得分:0)

在清单文件的RootModule参数中指定完整路径(最多为'.psm1')不能解决问题,因为ExportedCommands属性仍然为空。

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

以完整路径(以'.psm1'结尾)运行Import-Module时,模块已正确加载(即模块功能出现在ExportedCommands中),但是在这种情况下,运行Get-Module时, ModuleType是脚本,而不是清单。因此,我想当清单文件位于模块目录中且无法正确识别时,似乎会出现此问题。