Подтвердить что ты не робот

Powershell: редактирование уже импортированного модуля

Прежде чем импортировать модуль powershell (MyModule.psm1), я написал в нем одну функцию:

Function T1()
{
    Write-Host "T1 is just called" -ForegroundColor red
}

В моем MyModule.psd1:

@{

    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '2.0'

    # Name of the Windows PowerShell host required by this module
    PowerShellHostName = ''

    # Minimum version of the Windows PowerShell host required by this module
    PowerShellHostVersion = '2.0'

    # Modules that must be imported into the global environment prior to importing this module
    RequiredModules = @()

    # Script files (.ps1) that are run in the caller environment prior to importing this module
    ScriptsToProcess = @()

    # Modules to import as nested modules of the module specified in ModuleToProcess
    NestedModules = @()

    # Functions to export from this module
    FunctionsToExport = '*'

    # Cmdlets to export from this module
    CmdletsToExport = '*'

    # Variables to export from this module
    VariablesToExport = '*'

    # List of all modules packaged with this module
    ModuleList = @()

    # List of all files packaged with this module
    FileList = @()

}

Это импортировано отлично, когда я скопировал оба файла в:

C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule

и я могу запустить T1 в сеансе powershell.

Но теперь я хотел добавить новую функцию в том же модуле i.e.:

Function T2()
{
    Write-Host "Its now T2.." -ForegroundColor red
}

Даже после перезапуска моей сессии Powershell она никогда не распознает T2, однако T1 все еще работает.

Как я могу отредактировать мой уже импортированный модуль, так что изменения доступны сразу...

Спасибо, куча...

4b9b3361

Ответ 1

Как только модуль был импортирован, изменения в нем не распознаются, так как модуль загружается в память. Тем не менее, я всегда мог выполнить Remove-Module foo, а затем Import-Module foo загрузить новые функции.

Все, что сказал, ваш PSD1 файл выглядит неправильно. Он должен иметь поле ModuleToProcess, установленное в "MyModule.psm1". Затем, когда вы выполняете Import-Module MyModule или Import-Module .\mymodule.psd1, PowerShell найдет и загрузит связанный файл MyModule.psm1. Интересно, что это заставляет вас запускать некоторые кеширование PowerShell?

Ответ 2

Используйте команду -Force с Import-Module и перезагрузите ее.