Странное поведение Import-Module - PullRequest
0 голосов
/ 10 декабря 2018

У меня очень странное поведение в PowerShell.

Я использую следующие сценарии:

HelloWorld.psm1:

function Write-HelloWorld {
    "Hello world"
}
Export-ModuleMember -Function Write-HelloWorld

test2.psm1:

Import-Module .\HelloWorld.psm1 -Force

test1.ps1:

Import-Module .\HelloWorld.psm1 -Force

"Is HelloWorld loaded: " + ($null -eq (Get-Module HelloWorld))

Import-Module .\test2.psm1 -Force

"Is HelloWorld loaded: " + ($null -eq (Get-Module HelloWorld))

Когда я запускаю test1.ps1, получается:

Is HelloWorld loaded: False
Is HelloWorld loaded: True

Модуль HelloWorld выгружается при импорте test2.psm1.Мне это не кажется логичным ... Я понимаю, что область действия модуля HelloWorld локальна в test2.psm1, но я ожидаю, что он не выгружает его в конце, потому что он уже был импортирован ранее.

Есть идеи?

1 Ответ

0 голосов
/ 10 декабря 2018

С import-module MSDN.

"Этот параметр [-force] заставляет модуль загружаться или перезагружаться поверх текущего."

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/import-module?view=powershell-6

Я предполагаючто поскольку HelloWorld находится в вашем test2, он навязывается текущему модулю HelloWorld, а поскольку его область действия находится внутри test2, он обнаруживает, что он существует в текущем модуле.

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