Итак, если вы посмотрите на пример, который я разместил здесь:
https://stackoverflow.com/a/55064995/7710456
Я немного подробнее остановлюсь на этом.
Я еще раз посмотрю на негои создал манифест модуля для всех модулей, и все эти модули должны соответствовать стандартам для модулей PowerShell (в папке с тем же именем, что и у модуля PowerShell, в месте, которое присутствует в PSModulePath)
Write-BazFunctions.psm1:
Function Write-Baz {
return "Baz"
}
Write-BarFunctions.psm1:
Function Write-Bar {
return "Bar"
}
Function Write-BarBaz {
$bar = Write-Bar;
$baz = Write-Baz;
return ("{0}{1}" -f $bar, $baz)
}
Write-FooFunctions.psm1
Function Write-Foo {
return "Foo"
}
Function Write-FooBar {
$foo = Write-Foo
$bar = Write-Bar
return ("{0}{1}" -f $foo, $bar)
}
Function Write-FooBarBaz {
$foobar = Write-FooBar
$baz = Write-Baz
return ("{0}{1}" -f $foobar, $baz)
}
Function Write-FooBazBar {
$foo = Write-Foo
$bar = Write-Bar
$baz = Write-Baz
return ("{0}{1}{2}" -f $foo, $bar, $baz)
}
Сейчас - различия.В манифесте для функций Write-BarFunctions (примечание требуется, не вложено):
RequiredModules = @('Write-BazFunctions')
обратите внимание на другое отличие от моего исходного ответа, указанного выше, я нацеливался на файлы psm1 напрямую, а вместо этого ссылался на них только по имени модуля.
Как только я это сделал, я смог импортировать функции Write-FooFunctions, и все функции стали доступны.Поскольку Write-BarBaz в Write-BarFunctions вызывает Write-Baz из Write-BazFunctions, вы можете видеть, что это позволит вложенным модулям ссылаться друг на друга.