programing

'Run With PowerShell'을 사용하여 실행할 때 다른 스크립트에서 함수 호출

codeshow 2023. 8. 5. 11:06
반응형

'Run With PowerShell'을 사용하여 실행할 때 다른 스크립트에서 함수 호출

'library' 파일에 'worker' 스크립트에서 호출할 기능이 있습니다.

라이브러리 파일

function ShowMessage($AValue)
{
  $a = new-object -comobject wscript.shell
  $b = $a.popup( $AValue )
}

작업자 파일

. {c:\scratch\b.ps1}

ShowMessage "Hello"

PowerShell IDE에서 'worker' 스크립트를 실행하면 정상적으로 작동하지만 worker 파일을 마우스 오른쪽 버튼으로 클릭하고 'Run with PowerShell'을 선택하면 'ShowMessage' 기능을 찾을 수 없습니다.두 파일이 동일한 폴더에 있습니다.무슨 일이 일어나고 있을까요?

작업자 파일에서 다음으로 변경합니다.

. "c:\scratch\b.ps1"

ShowMessage "Hello"

@RoiDanton이 아래에 언급한 것처럼:

상대 경로 지정 사용 시 주의:경로 앞에 점을 추가하는 것을 잊지 마십시오. ".\b.ps1"

첫 번째 점은 스코프를 수정하는 데 사용되는 연산자이며 이러한 컨텍스트에서는 경로와 관련이 없습니다.도트 원본 표기법을 참조하십시오.

작업자 파일에서 라이브러리 파일을 닷 소스로 만들면 모든 콘텐츠(함수, 변수 등)가 글로벌 범위에 로드되고 라이브러리 파일에서 함수를 호출할 수 있습니다.

=================== Worker file ==========================
# dot-source library script
# notice that you need to have a space 
# between the dot and the path of the script
. c:\library.ps1

ShowMessage -AValue Hello
=================== End Worker file ======================

언급URL : https://stackoverflow.com/questions/8501225/call-a-function-in-another-script-when-executing-using-run-with-powershell

반응형