about_Environment_Provider — 환경 변수를 다루는 PowerShell 환경 공급자
about_Environment_Provider — 환경 변수를 다루는 PowerShell 환경 공급자
PowerShell의 Environment 공급자(작업 이름 about_Environment_Provider)를 소개할게요. 이 공급자는 Windows 환경 변수를 가져오고, 추가하고, 바꾸고, 지우는 일을 전부 담당해요. Env:라는 드라이브로 접근하는데, 환경 변수를 다루는 일은 이 공급자를 통해 아주 자연스럽게 처리할 수 있어요.
본문
공급자 이름(Provider name)
- Environment
드라이브(Drives)
Env:
기능(Capabilities)
ShouldProcess
간단한 설명(Short description)
Windows 환경 변수에 접근할 수 있게 해준다는 짧은 요약이에요.
자세한 설명(Detailed description)
PowerShell Environment 공급자를 쓰면 환경 변수와 그 값을 가져오고(get), 추가하고(add), 바꾸고(change), 지우고(clear/delete) 할 수 있어요.
환경 변수는 프로그램이 실행되는 환경을 설명하는 동적으로 이름이 붙는 변수예요. Windows와 PowerShell은 시스템·프로세스 실행에 영향을 주는 지속적인 정보를 저장하기 위해 환경 변수를 사용해요. PowerShell 변수와 달리 환경 변수는 스코프(범위) 제약을 받지 않아요.
Environment 드라이브는 현재 사용자 세션에 특화된 환경 변수들이 모여 있는 평평한(flat) 네임스페이스예요. 환경 변수에는 하위 항목(child item)이 없어요.
Environment 공급자는 이 문서에서 다루는 다음 cmdlet들을 지원해요.
각 환경 변수는 System.Collections.DictionaryEntry 클래스의 인스턴스예요. 변수 이름은 딕셔너리 키, 변수 값은 딕셔너리 값으로 저장돼요.
이 공급자가 내보내는 형식(Types exposed by this provider)
환경 변수는 [System.Collections.DictionaryEntry] 형식으로 노출돼요. 자세한 형식 정보는 System.Collections.DictionaryEntry 문서를 참고하면 돼요.
환경 드라이브 둘러보기(Navigating the environment drive)
Environment 공급자는 데이터 저장소를 Env: 드라이브로 노출해요. 환경 변수를 다루려면 위치를 Env: 드라이브로 바꾸거나(Set-Location Env:), 다른 PowerShell 드라이브에서 작업하면 돼요. 다른 위치에서 환경 변수에 접근할 때는 경로에 Env: 드라이브 이름을 사용하면 돼요.
Set-Location Env:
파일 시스템 드라이브로 돌아가려면 드라이브 이름을 입력하면 돼요. 예를 들면 이렇게요:
Set-Location C:
Environment 공급자는 다른 PowerShell 드라이브에서도 쓸 수 있어요. 다른 위치에서 환경 변수에 접근할 땐 경로에 Env: 드라이브 이름을 넣어 주면 돼요.
Environment 공급자는 $Env: 라는 변수 접두사로도 환경 변수를 노출해요. 아래 명령은 ProgramFiles 환경 변수의 내용을 보여줘요. $Env: 변수 접두사는 어느 PowerShell 드라이브에서든 사용할 수 있어요.
PS C:\> $Env:ProgramFiles
C:\Program Files
$Env: 변수 접두사를 쓰면 환경 변수의 값도 바꿀 수 있어요. 다만 이렇게 바꾼 변경 사항은 현재 PowerShell 세션이 살아 있는 동안에만 적용돼요.
참고 — PowerShell은 익숙한 방식으로 공급자 경로를 다루도록 **별칭(alias)**을 제공해요.
dir,ls는 이제Get-ChildItem의 별칭이고,cd는Set-Location의,pwd는Get-Location의 별칭이에요.
환경 변수 가져오기(Getting environment variables)
아래 명령은 현재 세션의 모든 환경 변수를 나열해요. 이 명령은 어느 PowerShell 드라이브에서든 사용할 수 있어요.
Get-Item -Path Env:
Environment 공급자는 컨테이너가 없기 때문에 위 명령을 Get-ChildItem과 함께 써도 결과는 동일해요.
Get-ChildItem -Path Env:
선택한 환경 변수 가져오기(Get a selected environment variable)
아래 명령은 windir 환경 변수를 가져와요.
Get-ChildItem -Path Env:windir
변수 접두사 형식으로도 같은 걸 할 수 있어요.
$Env:windir
환경 변수 만들기(Create an environment variable)
아래 명령은 값이 "Non-Admin"인 USERMODE 환경 변수를 만들어요. -Path 매개변수 값이 Env: 드라이브에 새 항목을 만들지 지정하고, 새 환경 변수는 현재 PowerShell 세션이 활성화된 동안에만 쓸 수 있어요.
PS C:\> New-Item -Path Env: -Name USERMODE -Value Non-Admin
환경 변수 바꾸기(Changing an environment variable)
환경 변수 이름 바꾸기(Rename an environment variable)
아래 명령은 Rename-Item cmdlet으로 아까 만든 USERMODE 환경 변수의 이름을 USERROLE로 바꿔요. 시스템이 쓰는 환경 변수 이름은 바꾸지 마세요. 변경은 현재 세션에만 영향을 주지만, 그래도 시스템이나 프로그램이 오작동할 수 있어요.
Rename-Item -Path Env:USERMODE -NewName USERROLE
환경 변수 값 바꾸기(Change an environment variable)
아래 명령은 Set-Item cmdlet으로 USERROLE 환경 변수의 값을 "Administrator"로 바꿔요.
Set-Item -Path Env:USERROLE -Value Administrator
환경 변수 복사하기(Copy an environment variable)
아래 명령은 USERROLE 환경 변수의 값을 USERROLE2 환경 변수로 복사해요.
Copy-Item -Path Env:USERROLE -Destination Env:USERROLE2
환경 변수 제거하기(Remove an environment variable)
아래 명령은 현재 세션에서 USERROLE2 환경 변수를 삭제해요.
Remove-Item -Path Env:USERROLE2
Clear-Item으로 환경 변수 제거하기(Remove an environment variable with Clear-Item)
아래 명령은 USERROLE 환경 변수의 값을 비워서(clear) 삭제해요.
Clear-Item -Path Env:USERROLE
파이프라인 사용하기(Using the pipeline)
공급자 cmdlet은 파이프라인 입력을 받아들여요. 파이프라인을 쓰면 한 공급자 cmdlet의 데이터를 다른 공급자 cmdlet으로 넘겨 작업을 단순하게 만들 수 있어요. 파이프라인을 공급자 cmdlet과 함께 쓰는 방법을 더 알고 싶다면, 이 문서 곳곳에서 언급한 cmdlet 참조 문서를 확인해 보세요.
도움말 받기(Getting help)
Windows PowerShell 3.0부터는 공급자 cmdlet이 파일 시스템 드라이브에서 어떻게 동작하는지 설명하는 맞춤형 도움말 항목을 받을 수 있어요.
파일 시스템 드라이브에 맞춰진 도움말 항목을 보려면 파일 시스템 드라이브에서 Get-Help 명령을 실행하거나, Get-Help의 -Path 매개변수로 파일 시스템 드라이브를 지정하면 돼요.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path Env:
관련 항목으로는 about_Providers가 있어요.