Как получить значение MyModule.psd1 ha sh значений, таких как RootModule, ModuleVersion и HelpInfoURI, из MyModule.psm1? - PullRequest
0 голосов
/ 13 января 2020

Мне нужен некоторый самоанализ, потому что существует много версий одного и того же имени модуля, плавающих в разных каталогах и PSRepositories, и запущенный сценарий 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 га sh входных констант, таких как RootModule, ModuleVersion HelpInfoURI, Path и даже $PrivateData[$PSData].Tags из соответствующего MyModule.psm1? Самоанализ в PowerShell должен быть легким, но мой модуль не знает, что это такое, помогите ему найти себя:)

1 Ответ

1 голос
/ 13 января 2020

Вам просто нужно использовать 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"
...