Windows PowerShell에서는 개체에 대한 작업을 수행합니다. Windows PowerShell에서는 이름이 기본적으로 지정되는 개체인 변수를 만들어 출력을 나중에 사용하기 위해 저장할 수 있습니다. 다른 셸에서 변수에 대한 작업을 수행하는 데 익숙한 경우 Windows PowerShell 변수는 텍스트가 아닌 개체라는 사실에 주의해야 합니다.
변수 이름은 항상 $ 문자로 시작되며 모든 영숫자 문자와 밑줄을 사용할 수 있습니다.
변수 만들기
변수를 만들려면 다음과 같이 유효한 변수 이름을 입력해야 합니다.
PS> $loc PS>
이 경우 $loc에 지정된 값이 없기 때문에 아무 결과도 표시되지 않습니다. 동일한 단계에서 변수를 만드는 작업과 변수에 값을 할당하는 작업을 수행할 수 있습니다. Windows PowerShell은 변수가 없으면 변수를 만들기만 하고, 변수가 있으면 기존 변수에 지정된 값을 할당합니다. $loc 변수에 현재 위치를 저장하려면 다음과 같이 입력하십시오.
$loc = Get-Location
이 명령을 입력하면 출력이 $loc에 보내지기 때문에 아무 결과도 표시되지 않습니다. 출력이 표시된다면 이는 달리 리디렉션되지 않은 데이터가 항상 화면에 표시되기 때문에 발생하는 의도하지 않은 결과입니다. 다음과 같이 $loc를 입력하면 현재 위치가 표시됩니다.
PS> $loc Path ---- C:\temp
Get-Member를 사용하여 변수의 내용에 대한 정보를 표시할 수 있습니다. 다음과 같이 $loc를 Get-Member에 파이프하면 Get-Location을 입력한 것과 마찬가지로 변수에 PathInfo 개체가 포함되어 있는 것을 확인할 수 있습니다.
PS> $loc | Get-Member -MemberType Property TypeName: System.Management.Automation.PathInfo Name MemberType Definition ---- ---------- ---------- Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {... ProviderPath Property System.String ProviderPath {get;}
변수 조작
Windows PowerShell에는 변수를 조작할 수 있는 여러 명령이 포함되어 있습니다. 다음과 같이 입력하면 이러한 명령의 전체 목록을 쉽게 확인할 수 있습니다.
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap
현재 Windows PowerShell 세션에서 사용자가 직접 만든 변수 외에도 여러 시스템 정의 변수가 있습니다. Remove-Variable cmdlet을 사용하여 Windows PowerShell에서 제어하지 않는 모든 변수를 지울 수 있습니다. 다음 명령을 입력하면 모든 변수를 지울 수 있습니다.
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue
이 경우 다음과 같은 확인 메시지가 나타납니다.
Confirm Are you sure you want to perform this action? Performing operation "Remove Variable" on Target "Name: Error". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):A
Get-Variable cmdlet을 실행하면 나머지 Windows PowerShell 변수를 볼 수 있습니다. 또한 변수 Windows PowerShell 드라이브도 있으므로 다음과 같이 입력하면 모든 Windows PowerShell 변수를 표시할 수도 있습니다.
Get-ChildItem variable:
Cmd.exe 변수 사용
Windows PowerShell은 Cmd.exe가 아니지만 명령 셸 환경에서 실행되며 Windows 환경에서 사용할 수 있는 것과 동일한 변수를 사용할 수 있습니다. 이러한 변수는 env:라는 드라이브를 통해 표시됩니다. 다음과 같이 입력하면 이러한 변수를 볼 수 있습니다.
Get-ChildItem env:
표준 변수 cmdlet은 원래 env: 변수와 함께 사용하도록 제작되지 않았지만 env: 접두사를 지정하여 사용할 수도 있습니다. 예를 들어 운영 체제 루트 디렉터리를 보려면 다음과 같이 입력하여 Windows PowerShell에서 명령 셸 %SystemRoot% 변수를 사용하면 됩니다.
PS> $env:SystemRoot C:\WINDOWS
또한 Windows PowerShell에서 환경 변수를 만들고 수정할 수도 있습니다. Windows PowerShell에서 액세스하는 환경 변수는 다른 Windows 환경 변수에 대한 일반적인 규칙을 따릅니다.