如何从MyModule.psm1中检索MyModule.psd1哈希值(例如RootModule,ModuleVersion和HelpInfoURI的值?

问题描述 投票:0回答:1

我需要一些自省,因为同一模块名称的许多版本在不同的目录和PSRepository中浮动,并且正在运行的PS脚本需要知道当前正在运行的版本。

[给出样板的Powershell .\MyModule\MyModule.psd1清单和.\MyModule\MyModule.psm1模块,如何从MyModule.psd1内部引用MyModule.psm1中的值?

# MyModule.psd1: 

@{
# Script module or binary module file associated with this manifest.
RootModule = 'MyModule.psm1'

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

# Author of this module
Author = 'MeMyselfI'
}

和模块MyModule.psm1:

#MyModule.psm1   

write-host "$RootModule VERSION: $ModuleVersion by $Author"
write-host "For help, please see $HelpInfoURI"
write-host "$PrivateData[PSData].Tags"

[如何从相应的MyModule.psd1中获取RootModuleModuleVersionHelpInfoURIPath甚至$PrivateData[$PSData].TagsMyModule.psm1哈希条目常量的值?在PowerShell中进行自省必须很容易,但是我的模块不知道它是什么,请帮助它找到自己:)

powershell module manifest
1个回答
0
投票

您只需要将Get-Module与模块名称一起使用,就可以从那里访问所有这些值。

$ModuleInfos = Get-Module -Name MyModule

write-host "$($ModuleInfos.RootModule) VERSION: $($ModuleInfos.Version) by $($ModuleInfos.Author)"
write-host "For help, please see $($ModuleInfos.HelpInfoUri)"
write-host $ModuleInfos.PrivateData.PSData.Item('Tags')

您也可以从任何Powershell控制台窗口中的任何位置执行此操作,前提是您的模块已被导入(不过,从psm1内,您不需要导入模块)。

这里是实现相同目的的另一种方法(从psm1文件中)

$ModuleInfos = Import-PowerShellDataFile -Path "$PsScriptRoot\MyModule.psd1"
© www.soinside.com 2019 - 2024. All rights reserved.