我需要一些自省,因为同一模块名称的许多版本在不同的目录和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
中获取RootModule
,ModuleVersion
,HelpInfoURI
,Path
甚至$PrivateData[$PSData].Tags
等MyModule.psm1
哈希条目常量的值?在PowerShell中进行自省必须很容易,但是我的模块不知道它是什么,请帮助它找到自己:)
您只需要将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"