나는 실행중인 주 스크립트가 있습니다. 이 작업은 다른 powershell 스크립트로 채워진 디렉토리를 통해 읽히며, 점은 모두 포함하고 점으로 구분 된 파일 이름의 첫 번째 부분으로 구성된 미리 정의 된 메소드를 실행합니다. 예 :점으로 표시된 파일에서 로컬 함수 호출
- 실행
- Master.ps1 도트 소스를 master.ps1 \ 리소스 \의 sub.ps1 Sub.ps1는
- Master.ps1 실행 'dosub'dosub '라는 함수를 정의하고있다 . 'Invoke-Expression 사용
subps.p1에서 정의 된 함수는'saysomething '입니다. 구현 된 '도저'는 'sayomething'에 대한 호출입니다.
The term 'saysomething' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
왜 'dosub'방법은 동일한 파일에 정의 된 방법 'saysomething'를 찾을 수 없습니다 :
내 문제는 내가 오류가 계속입니까?
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!"
}
귀하의 예를 나를 위해 일합니다. 귀하가 게시 한 내용이 귀하의 시스템과 정확히 일치합니까? – zdan