У меня есть основной скрипт, который я запускаю.Что он делает, так это читает каталог, заполненный другими сценариями PowerShell, точка включает их все и запускает предопределенный метод в каждой части, состоящей из первой части имени файла с разделителями точками.Пример:
- Выполнить master.ps1
- Точечные источники Master.ps1. \ Resource \ sub.ps1
- Sub.ps1 определил функцию с именем 'dosub'
- Master.ps1 запускает 'dosub', используя выражение-выражение
Также в sub.ps1 определена функция 'sayomething'.В 'dosub' реализован вызов 'sayomething'.
Моя проблема в том, что я все время получаю сообщение об ошибке:
Термин "sayomething" не распознается как имя командлета, функции, файла сценария или работоспособной программы.Проверьте правильность написания имени или, если путь был указан, убедитесь, что путь правильный и попробуйте снова.
Почему метод dosub не может найти метод sayomething, которыйопределен в том же файле?
master.ps1:
$handlersDir = "handlers"
$handlers = @(Get-ChildItem $handlersDir)
foreach ( $handler in $handlers ) {
. .\$handlersDir\$handler
$fnParts = $handler.Name.split(".")
$exp = "do" + $fnParts[0]
Invoke-Expression $exp
}
sub.ps1:
function saysomething() {
Write-Host "I'm here to say something!"
}
function dosub() {
saysomething
Write-Host "In dosub!"
}