Как открыть тип, импортированный из необходимого модуля? - PullRequest
0 голосов
/ 11 января 2019

в следующем сценарии, включающем 2 модуля, как мне выставить тип test, чтобы он был доступен для Get-Result из MainModule.psm1?

Мой текущий результат Unable to find type [Test]

Сценарий

MainModule имеет ReferenceModule в своих обязательных модулях PSD1.

MainModule имеет функцию с именем Get-Result, которая принимает класс test в качестве параметра.

ReferenceModule содержит определение класса test.

Полный воспроизводимый пример

$MyModulePSD1 = @"
@{
RootModule = 'MyModule.psm1'
ModuleVersion = '0.0.0.1'
GUID = '8428874a-381f-473a-b754-43304df5a219'
RequiredModules = @("$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psd1")
FunctionsToExport  = '*'
}
"@

$ReferenceModulePSD1= @"
@{
RootModule = 'ReferenceModule.psm1'
ModuleVersion = '0.0.0.1'
GUID = '8428874a-381f-473a-b754-22222225a219'
FunctionsToExport  = '*'
}
"@


$MyModulePSM1 = @'
    Function Get-Result([Test]$MyParam) {
        return $true
    }
'@


$ReferenceModulePSM1 = @'
class test {
    [String]$test
}
'@

New-Item -Path "$($Env:USERPROFILE)\desktop\MyModule" -ItemType Directory -Force
New-Item -Path "$($Env:USERPROFILE)\desktop\ReferenceModule" -ItemType Directory -Force

Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psd1" -Value $MyModulePSD1
Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psm1" -Value $MyModulePSM1

Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psm1" -Value $ReferenceModulePSM1
Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psd1" -Value $ReferenceModulePSD1


Import-Module "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psd1" -Force

Get-Result

1 Ответ

0 голосов
/ 11 января 2019

Вы должны ссылаться на справочный модуль, используя ключевое слово «using». Пожалуйста, обратите внимание / отредактируйте мою жестко закодированную папку на рабочем столе. По какой-то причине я не могу объяснить, что там невозможно использовать переменную $Env:USERPROFILE.

$MyModulePSD1 = @"
@{
RootModule = 'MyModule.psm1'
ModuleVersion = '0.0.0.1'
GUID = '8428874a-381f-473a-b754-43304df5a219'
RequiredModules = @("$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psd1")
FunctionsToExport  = '*'
}
"@

$ReferenceModulePSD1= @"
@{
RootModule = 'ReferenceModule.psm1'
ModuleVersion = '0.0.0.1'
GUID = '8428874a-381f-473a-b754-22222225a219'
FunctionsToExport  = '*'
}
"@


$MyModulePSM1 = @'
    using module 'C:\Users\gertjan\Desktop\MyModule\ReferenceModule.psm1'
    Function Get-Result([Test]$MyParam) {
    return $true
}
'@


$ReferenceModulePSM1 = @'
class test {
    [String]$test
}
'@

New-Item -Path "$($Env:USERPROFILE)\desktop\MyModule" -ItemType Directory -Force
New-Item -Path "$($Env:USERPROFILE)\desktop\ReferenceModule" -ItemType Directory -    Force

Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psd1" -Value $MyModulePSD1
Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psm1" -Value $MyModulePSM1

Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psm1" -Value $ReferenceModulePSM1
Set-Content -Path "$($Env:USERPROFILE)\desktop\MyModule\ReferenceModule.psd1" -Value $ReferenceModulePSD1


Import-Module "$($Env:USERPROFILE)\desktop\MyModule\MyModule.psd1" -Force

Get-Result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...