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
все еще работает.
Как я могу отредактировать мой уже импортированный модуль, так что изменения доступны сразу...
Спасибо, куча...
Ответы
Ответ 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
и перезагрузите ее.