다음을 통해 공유


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, 합니다.
  • 있는 경우 PSModulePath :
    • 모듈 경로가 PSModulePath 포함된 경우$PSHOME:
      • AllUsers 모듈 경로가 모듈 경로 앞에 $PSHOME 삽입됨
    • 다른:
      • 사용자가 의도적으로 위치를 제거한 PSModulePath 후에 정의된 대로만 사용 $PSHOME

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은 여러 버전이 발견되면 모듈의 가장 높은 버전 번호를 로드합니다. 특정 버전을 로드하려면 FullyQualifiedNameImport-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() 메서드를 사용하고 값을 직접 편집합니다.

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

$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)

참고하십시오