about_Environment_Variables

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

항목

about_Environment_Variables

간단한 설명

Windows PowerShell®에서 Windows 환경 변수에 액세스하는 방법에 대해 설명합니다.

자세한 설명

환경 변수는 운영 체제 환경에 대한 정보를 저장합니다. 이 정보에는 운영 체제 경로, 운영 체제에서 사용되는 프로세서 수 및 임시 폴더의 위치와 같은 정보가 포함됩니다.

환경 변수는 운영 체제 및 다른 프로그램에서 사용되는 데이터를 저장합니다. 예를 들어 WINDIR 환경 변수에는 Windows 설치 디렉터리의 위치가 포함됩니다. 프로그램은 이 변수의 값을 쿼리하여 Windows 운영 체제 파일의 위치를 확인합니다.

Windows PowerShell에서는 레지스트리에 설정된 변수를 포함하여 Windows 환경 변수 및 특정 세션에 대해 설정된 변수를 보고 변경할 수 있습니다. Windows PowerShell 환경 공급자는 환경 변수를 쉽게 보고 변경할 수 있도록 하여 이 프로세스를 간소화합니다.

Windows PowerShell에서 다른 유형의 변수와 달리 환경 변수 및 해당 값은 모듈 멤버가 실행되는 세션 및 로컬 백그라운드 작업과 같은 자식 세션에 의해 상속됩니다. 따라서 환경 변수가 부모와 자식 세션 모두에 필요한 변수를 저장하는 데 매우 적합해집니다.

WINDOWS POWERSHELL 환경 공급자

Windows PowerShell 환경 공급자에서는 Windows PowerShell 드라이브(Env: 드라이브)에서 Windows PowerShell의 Windows 환경 변수에 액세스할 수 있습니다. 이 드라이브는 파일 시스템 드라이브와 매우 유사합니다. Env: 드라이브로 이동하려면 다음을 입력합니다.

  Set-Location Env:

그런 다음 Env: 드라이브의 내용을 표시합니다. 다음을 입력합니다.

  Get-ChildItem

Env: 드라이브의 환경 변수는 다른 모든 Windows PowerShell 드라이브에서 볼 수 있으며, Env: 드라이브로 이동하여 환경 변수를 보고 변경할 수 있습니다.

환경 변수 개체

Windows PowerShell에서 각 환경 변수는 System.Collections.DictionaryEntry 클래스의 인스턴스인 개체로 표시됩니다.

각 DictionaryEntry 개체에서 환경 변수의 이름은 사전 키입니다. 변수의 값은 사전 값입니다.

Windows PowerShell에서 환경 변수를 표시하려면 변수를 나타내는 개체를 가져온 다음 개체 속성의 값을 표시합니다. Windows PowerShell에서 환경 변수를 변경하려면 DictionaryEntry 개체와 관련된 메서드를 사용합니다.

Windows PowerShell에서 환경 변수를 나타내는 개체의 속성 및 메서드를 표시하려면 Get-Member cmdlet을 사용합니다. 예를 들어 Env: 드라이브에 있는 모든 개체의 메서드 및 속성을 표시하려면 다음을 입력합니다.

  Get-Item -Path Env:* | Get-Member

환경 변수 표시

항목 명사(항목 cmdlet)을 포함하는 cmdlet을 사용하여 환경 변수의 값을 표시하고 변경할 수 있습니다. 환경 변수에는 자식 항목이 없으므로 Get-Item과 Get-ChildItem의 출력이 동일합니다.

환경 변수를 참조하려면 Env: 드라이브 이름을 입력하고 그다음에 변수의 이름을 입력합니다. 예를 들어 COMPUTERNAME 환경 변수의 값을 표시하려면 다음을 입력합니다.

  Get-Childitem Env:Computername

모든 환경 변수의 값을 표시하려면 다음을 입력합니다.

  Get-ChildItem Env:

기본적으로 Windows PowerShell에서는 환경 변수를 검색되는 순서대로 표시합니다. 환경 변수 목록을 변수 이름으로 정렬하려면 Get-ChildItem 명령의 출력을 Sort-Object cmdlet으로 파이프합니다. 예를 들어 모든 Windows PowerShell 드라이브에서 다음을 입력합니다.

  Get-ChildItem Env: | Sort Name

Set-Location cmdlet을 사용하여 Env: 드라이브로 이동할 수도 있습니다.

  Set-Location Env:

Env: 드라이브에 있는 경우 경로에서 Env: 드라이브 이름을 생략할 수 있습니다. 예를 들어 모든 환경 변수를 표시하려면 다음을 입력합니다.

  Get-ChildItem

Env: 드라이브 내에서 COMPUTERNAME 변수의 값을 표시하려면 다음을 입력합니다.

  Get-ChildItem ComputerName

또한 Windows PowerShell에서 식 파서를 사용하면 cmdlet을 사용하지 않고 환경 변수의 값을 표시하고 변경할 수 있습니다. 환경 변수의 값을 표시하려면 다음 구문을 사용합니다.

  $Env:<variable-name>

예를 들어 WINDIR 환경 변수의 값을 표시하려면 Windows PowerShell 명령 프롬프트에서 다음 명령을 입력합니다.

  $Env:windir

이 구문에서 달러 기호($)는 변수를 나타내고 드라이브 이름은 환경 변수를 나타냅니다.

환경 변수 변경

환경 변수를 영구적으로 변경하려면 제어판의 시스템(고급 탭 또는 고급 시스템 설정 항목)을 사용하여 변경 내용을 레지스트리에 저장합니다.

Windows PowerShell에서 환경 변수를 변경하면 변경 내용은 현재 세션에만 영향을 줍니다. 이 동작은 Windows 기반 환경의 Set 명령 및 UNIX 기반 환경의 Setenv 명령 동작과 유사합니다.

또한 변수의 값을 변경할 수 있는 권한이 있어야 합니다. 충분한 권한 없이 값을 변경하려고 하면 명령이 실패하고 Windows PowerShell에서 오류를 표시합니다.

다음 구문을 사용하여 cmdlet을 사용하지 않고 변수의 값을 변경할 수 있습니다.

          $Env:<variable-name> = "<new-value>"

예를 들어 Path 환경 변수의 값에 ";c:\temp"를 추가하려면 다음 구문을 사용합니다.

  $Env:path = $env:path + ";c:\temp"

또한 Set-Item, Remove-Item 및 Copy-Item과 같은 항목 cmdlet을 사용하여 환경 변수의 값을 변경할 수 있습니다. 예를 들어 Set-Item cmdlet을 사용하여 Path 환경 변수의 값에 ";c:\temp"를 추가하려면 다음 구문을 사용합니다.

          Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

이 명령에서는 값이 하나의 단위로 해석되도록 값을 괄호로 묶습니다.

환경 변수 변경 내용 저장

모든 Windows PowerShell 세션에서 환경 변수의 값을 만들거나 변경하려면 Windows PowerShell 프로필에 변경 내용을 추가합니다.

예를 들어 모든 Windows PowerShell 세션에서 Path 환경 변수에 C:\Temp 디렉터리를 추가하려면 Windows PowerShell 프로필에 다음 명령을 추가합니다.

  $Env:Path = $Env:Path + ";C:\Temp"

CurrentUser,AllHosts 프로필과 같은 기존 프로필에 명령을 추가하려면 다음을 입력합니다.

  Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = $Env:Path + ";C:\Temp"'

기본 설정을 저장하는 환경 변수

Windows PowerShell 기능에서는 환경 변수를 사용하여 사용자 기본 설정을 저장할 수 있습니다. 이러한 변수는 기본 설정 변수처럼 작동하지만 해당 변수가 만들어진 세션의 자식 세션에서 상속됩니다. 기본 설정 변수에 대한 자세한 내용은 about_preference_variables를 참조하세요.

기본 설정을 저장하는 환경 변수는 다음과 같습니다.

PSEXECUTIONPOLICYPREFERENCE

현재 세션에 대해 설정된 실행 정책을 저장합니다. 이 환경 변수는 단일 세션에 대한 실행 정책을 설정하는 경우에만 존재합니다. 이 설정은 두 가지 방법으로 수행할 수 있습니다.

-- PowerShell.exe를 사용하여 명령줄에서 세션을 시작하고 ExecutionPolicy 매개 변수를 사용하여 세션에 대한 실행 정책을 설정합니다.

-- Set-ExecutionPolicy cmdlet을 사용합니다. 값이 "Process"인 Scope 매개 변수를 사용합니다.

자세한 내용은 about_Execution_Policies를 참조하세요.

PSMODULEPATH

기본 모듈 디렉터리에 대한 경로를 저장합니다. 모듈의 전체 경로를 지정하지 않으면 Windows PowerShell은 지정된 디렉터리에서 모듈을 찾습니다.

$Env:PSModulePath의 기본값은 다음과 같습니다.

                $home\Documents\WindowsPowerShell\Modules; $pshome\Modules

Windows PowerShell은 레지스트리에서 "$pshome\Modules"의 값을 설정합니다. Windows PowerShell을 시작할 때마다 "$home\Documents\WindowsPowerShell\Modules"의 값을 설정합니다.

또한 Program Files 디렉터리와 같은 다른 디렉터리에 모듈을 설치하는 설치 프로그램은 PSModulePath의 값에 해당 위치를 추가할 수 있습니다.

현재 세션에 대한 기본 모듈 디렉터리를 변경하려면 다음 명령 형식을 사용하여 PSModulePath 환경 변수의 값을 변경합니다.

예를 들어 PSModulePath 환경 변수의 값에 "C:\Program Files\Fabrikam\Modules" 디렉터리를 추가하려면 다음을 입력합니다.

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

명령의 세미콜론(;)은 목록에서 앞에 나오는 경로와 새 경로를 구분해줍니다.

모든 세션에서 PSModulePath의 값을 변경하려면 이전 명령을 Windows PowerShell 프로필에 추가하거나 Environment 클래스의 SetEnvironmentVariable 메서드를 사용합니다.

다음 명령은 GetEnvironmentVariable 메서드를 사용하여 PSModulePath의 컴퓨터 설정을 가져오고 SetEnvironmentVariable 메서드를 사용하여 C:\Program Files\Fabrikam\Modules 경로를 값에 추가합니다.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";C:\Program Files\Fabrikam\Modules", "Machine")

사용자 설정에 경로를 추가하려면 대상 값을 User로 변경합니다.

            $path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "User")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";$home\Documents\Fabrikam\Modules", "User")

System.Environment 클래스의 메서드에 대한 자세한 내용은 MSDN의 "Environment 메서드"(https://go.microsoft.com/fwlink/?LinkId=242783)를 참조하세요.

또한 값을 변경하는 명령을 프로필에 추가하거나 제어판의 시스템을 사용하여 레지스트리에서 PSModulePath 환경 변수의 값을 변경할 수도 있습니다.

자세한 내용은 about_Modules를 참조하세요.

참고 항목

Environment(공급자)

about_Modules