programing

PowerShell 가져오기 모듈 대 도트 소싱

lastcode 2023. 8. 30. 21:44
반응형

PowerShell 가져오기 모듈 대 도트 소싱

주요 PowerShell 스크립트에서 일부 기능을 분리하려면 다음과 같이 기록할 수 있습니다..ps1파일과 도트 소스가 같거나 내가 그것을 a로 만들 수 있습니다..psm1다음을 사용하여 동일한 항목을 가져옵니다.Import-Module.

어떤 것이 더 낫고 왜?

모듈은 라이브러리에 가장 적합합니다.모듈에서 내보내는 내용을 더 잘 제어할 수 있습니다.즉, PSM1 파일의 모든 스크립트 변수는 기본적으로 비공개이며 가져올 때 모듈 외부에서는 볼 수 없습니다.마찬가지로 모든 기능은 공용입니다.그러나 PSM1 파일에서 Export-ModuleMember를 사용하여 모듈에서 내보내는 변수, 함수, 별칭, cmdlet 등을 정확하게 제어할 수 있습니다.세션에서 모듈을 제거할 수도 있습니다. 이는 도트 소싱과 큰 차이입니다.PS1 스크립트.또 다른 차이점은 모듈 기능은 모듈 이름과 "\"를 함수 이름 앞에 붙이면 동일한 이름의 모듈 기반 기능에 쉽게 액세스할 수 있다는 것입니다(예: PSCX\Get-Uptime).ISE에서 이 접두사는 인텔리전트 지원도 호출합니다.

저는 일반적으로 모듈과 함께 가는 것을 추천합니다. :-)

도트 소싱 + 스크립트와 모듈은 두 가지 다른 것입니다.모듈은 스크립트에서 사용하는 함수와 cmdlet을 수집/그룹화하는 데 유용합니다.대화식으로 사용할 기능이 있는 경우(콘솔에서 함수라고 함) 모듈이 적합할 수 있습니다.

실행할 하나의 큰 스크립트가 있는 경우예를 들어 "파일 공유 마이그레이션" 또는 작업 스케줄러를 사용하여 정기적으로 호출하는 단일 스크립트를 예로 들 수 있습니다. 그러면 도트 소싱이 더 쉬워집니다.

당신이 어떤 도움을 필요로 하느냐에 따라 다르겠죠.요약:.

  • 이 상황(script/job)=에서 함수/키워드만 사용하는 경우 도트 소스를 사용합니다.
  • 다른 스크립트에서도 사용되는 공통 함수/스크립트를 사용하거나 일부 함수를 대화형으로 호출하려는 경우.사용 모듈.

다른 답변 외에도 몇 가지 모듈 기능이 있습니다.

  • PowerShell V3에서는 전화를 걸 필요가 없습니다.Import-Module모듈의 내보낸 명령을 사용합니다.이 기능은 명령을 대화식으로 사용할 때 특히 유용합니다.PowerShell은 사용 가능한 모든 모듈 명령과 그 도움말을 캐시하고 인식합니다.Get-Help SomeCommand 도움말에는 .)Get-Help about_SomeModule그러나).

  • 도트 소스 함수와 스크립트 모듈 함수의 동작에는 몇 가지 미묘한 차이가 있습니다.모두 나열하는 것은 쉽지 않습니다. 여기 단 하나의 예가 있습니다. Powershell 스크립트 블록 변수 범위 및 모듈에 대한 이상한 동작, 제안 사항이 있습니까?스크립트 모듈을 사용하는 것은 때때로 고통스럽습니다. 특히 원치 않는 차이를 발견하고 문제가 너무 늦게 발생할 때입니다. 즉, 개발 초기에는 간단한 것이 잘 작동하지만 나중에는 복잡한 것이 잘못되기 시작합니다.

일반적으로 모듈은 잘 작동하지 않는 경우를 제외하고 사용합니다.그 중 하나는 스크립트 모듈 함수에 전달된 사용자 스크립트 블록을 호출하는 것입니다.

언급URL : https://stackoverflow.com/questions/14882332/powershell-import-module-vs-dot-sourcing

반응형