如何排查PowerShell模块清单(psd1)无法加载模块的问题?
PowerShell模块psd1导致无法自动加载的问题
你的问题出在psd1文件缺少指定主模块文件的配置项。
当没有psd1时,PowerShell会自动加载模块文件夹中与文件夹同名的psm1文件;但一旦存在psd1模块清单,PowerShell就会严格按照清单配置加载模块——你的清单只定义了版本、作者、导出函数这类元数据,却没告诉PowerShell要加载哪个psm1文件,所以模块元数据能通过Test-ModuleManifest验证,但实际的模块代码根本没被加载。
需要在psd1中添加RootModule字段(PowerShell 5.1及以上版本推荐)或ModuleToProcess字段(兼容旧版本),明确指定你的psm1文件名。假设你的psm1文件名叫DisplaySettings.psm1,修改后的psd1如下:
@{ ModuleVersion = '1.0.0' GUID = '30197a8a-2ad7-446d-9cfd-5ce440efde93' Author = 'Me' CompanyName = 'Us' Copyright = '(c) Us. All rights reserved.' Description = 'Get and Set Display Settings' PowerShellVersion = '7.0' RootModule = 'DisplaySettings.psm1' # 新增该行,替换为你的实际psm1文件名 FunctionsToExport = @( 'Set-DisplayResolution', 'Set-DisplayRefreshRate', 'Get-DisplayResolution' ) CmdletsToExport = @() }
添加后,PowerShell就能根据清单找到并加载对应的psm1文件,模块即可正常工作。
内容的提问来源于stack exchange,提问作者theking2
相关产品推荐
相关产品推荐

