다음을 통해 공유


about_PSModulePath

간단한 설명

이 문서에서는 환경 변수의 용도 및 사용에 대해 $env:PSModulePath 설명합니다.

자세한 설명

환경 변수에는 $env:PSModulePath 폴더 위치 목록이 포함됩니다. PowerShell은 각 폴더에서 모듈(.psd1 또는 .psm1) 파일을 재귀적으로 검색합니다.

기본적으로 할당된 $env:PSModulePath 유효 위치는 다음과 같습니다.

  • CurrentUser 범위에 설치된 모듈은 에 $HOME\Documents\WindowsPowerShell\Modules저장됩니다.
  • AllUsers 범위에 설치된 모듈은 에 $env:ProgramFiles\WindowsPowerShell\Modules저장됩니다.
  • Windows PowerShell $PSHOME\Modules과 함께 제공되는 모듈(예 $env:SystemRoot\System32\WindowsPowerShell\1.0\Modules: .)

PowerShell PSModulePath 생성

$env:PSModulePath 은 PowerShell이 시작될 때마다 생성됩니다. 값은 PowerShell 버전 및 실행 방법에 따라 다릅니다.

Windows PowerShell 시작

Windows PowerShell은 다음 논리를 사용하여 시작 시 생성합니다 PSModulePath .

  • 존재하지 않는 경우 PSModulePath CurrentUser, AllUsers$PSHOME 모듈 경로를 결합합니다.
  • 있는 경우 PSModulePath :
    • 모듈 경로가 $PSHOME 포함된 경우PSModulePath:
      • AllUsers 모듈 경로가 모듈 경로 앞에 $PSHOME 삽입됨
    • 다른:
      • 사용자가 의도적으로 위치를 제거한 $PSHOME 후에 정의된 대로만 사용 PSModulePath

CurrentUser 모듈 경로는 사용자 범위 $env:PSModulePath 가 없는 경우에만 접두사로 지정됩니다. 그렇지 않으면 사용자 범위 $env:PSModulePath 가 정의된 대로 사용됩니다.

모듈 검색 동작

PowerShell은 PSModulePath각 폴더에서 모듈(.psd1또는.psm1) 파일을 재귀적으로 검색합니다. 이 검색 패턴을 사용하면 동일한 모듈의 여러 버전을 다른 폴더에 설치할 수 있습니다. 예시:

    Directory: C:\Program Files\WindowsPowerShell\Modules\PowerShellGet

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           8/14/2020  5:56 PM                1.0.0.1
d----           9/13/2019  3:53 PM                2.1.2

기본적으로 PowerShell은 여러 버전이 발견되면 모듈의 가장 높은 버전 번호를 로드합니다. 특정 버전을 로드하려면 FullyQualifiedName 매개 변수와 함께 사용합니다Import-Module. 자세한 내용은 Import-Module을 참조 하세요.

PSModulePath 수정

대부분의 경우 기본 모듈 위치에 모듈을 설치해야 합니다. 그러나 환경 변수의 PSModulePath 값을 변경해야 할 수도 있습니다.

예를 들어 현재 세션에 C:\Program Files\Fabrikam\Modules 대한 디렉터리를 $env:PSModulePath 일시적으로 추가하려면 다음을 입력합니다.

$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"

모든 세션의 PSModulePath 값을 변경하려면 값을 저장하는 레지스트리 키를 편집합니다 PSModulePath . 값은 PSModulePath 레지스트리에 연결되지 않은 문자열로 저장됩니다. 값을 확장된 문자열로 영구적으로 저장 PSModulePath 하지 않도록 하려면 하위 키에서 GetValue() 메서드를 사용하고 값을 직접 편집합니다.

다음 예제에서는 확장되지 않은 문자열을 확장하지 않고 환경 변수 값 PSModulePath 에 경로를 추가 C:\Program Files\Fabrikam\Modules 합니다.

$key = (Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)

사용자 설정에 대한 경로를 추가하려면 다음 코드를 사용합니다.

$key = (Get-Item 'HKCU:\Environment')
$path = $key.GetValue('PSModulePath','','DoNotExpandEnvironmentNames')
$path += ';%ProgramFiles%\Fabrikam\Modules'
$key.SetValue('PSModulePath',$path,[Microsoft.Win32.RegistryValueKind]::ExpandString)

참고 항목