У меня есть следующий скрипт PowerShell, который ищет в каталоге модуль PowerShell).Все найденные модули будут импортированы и сохранены в списке (используя опцию -PassThru).Скрипт перебирает импортированные модули и вызывает функцию, определенную в модуле:
# Discover and import all modules
$modules = New-Object System.Collections.Generic.List[System.Management.Automation.PSModuleInfo]
$moduleFiles = Get-ChildItem -Recurse -Path "$PSScriptRoot\MyModules\" -Filter "Module.psm1"
foreach( $x in $moduleFiles ) {
$modules.Add( (Import-Module -Name $x.FullName -PassThru) )
}
# All configuration values
$config = @{
KeyA = "ValueA"
KeyB = "ValueB"
KeyC = "ValueC"
}
# Invoke 'FunctionDefinedInModule' of each module
foreach( $module in $modules ) {
# TODO: Check function 'FunctionDefinedInModule' exists in module '$module '
& $module FunctionDefinedInModule $config
}
Теперь я хотел бы сначала проверить, определена ли функция в модуле, прежде чем ее вызовут.Как осуществить такую проверку?
Причина добавления проверки, если необходимо исключить исключение при вызове несуществующей функции:
& : The term ‘FunctionDefinedInModule’ is not recognized as the name of a cmdlet, function, script file, or operable program