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
삽입됨
- AllUsers 모듈 경로가 모듈 경로 앞에
- 다른:
- 사용자가 의도적으로 위치를 제거한
$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)
참고 항목
PowerShell