사용자 정의 변수

 

적용 대상: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

마지막으로 수정된 항목: 2006-09-21

변수는 정보를 저장하는 위치입니다. 여러 프로그래밍 환경과 달리 Exchange 관리 셸에서는 변수를 사용하기 전에 선언할 필요가 없습니다.

달러 표시($)가 있는 문자열을 앞에 추가하여 변수를 지정합니다. 문자열에 공백이나 다른 특수 문자가 있으면 문자열을 중괄호({ })로 묶어야 합니다. 배열 참조 표시법([ ])을 사용하여 배열이나 해시 테이블 변수 요소의 주소를 지정할 수 있습니다.

배열에 대한 자세한 내용은 배열을 참조하십시오.

변수를 사용하여 값 저장

값을 저장할 경우 변수가 매우 유용합니다. 대입 연산자를 사용하여 변수에 값을 할당할 수 있습니다. 연산자에 대한 자세한 내용은 구문을 참조하십시오.

예를 들어 8이라는 값을 변수 $Example에 할당하려면 다음 명령을 사용하십시오.

$Example = 8

이 명령은 정수 8을 변수 $Example에 할당합니다. 그런 다음 나중에 다른 명령에서 $Example 변수를 호출하여 값을 다시 호출할 수 있습니다. 변수에 지정된 값은 변수에 있는 값이 해당 변수가 지정되어 있는 위치에 입력된 것처럼 정확하게 처리됩니다. 예를 들어 다음 두 명령은 $Example2에 값 "Hello"가 할당된 경우 동일합니다.

Write-Host $Example2
Write-Host "Hello"

변수에 명령 출력 저장

나중에 사용하기 위해 변수에 명령 출력을 저장할 수도 있습니다. 명령을 변수에 할당하는 경우 해당 명령은 명령이 실행될 때 평가됩니다. 명령 출력은 변수에 할당됩니다. 예를 들어 명령줄에서 $CurrentDate = Get-Date를 실행한 다음 $CurrentDate를 몇 초간 반복해서 호출하면 보고된 값은 변수가 호출될 때마다 동일합니다.

명령 출력을 변수에 할당할 때 원본으로 사용하는 개체의 속성과 메서드에 액세스할 수도 있습니다. 예를 들어 Get-Date$CurrentDate에 할당할 때 사용 가능한 속성과 메서드를 보기 위해서 $CurrentDate | Get-Member 명령을 사용할 수 있습니다. $CurrentDate | Get-Member 명령을 사용할 때 목록에 다음 속성이 반환됩니다.

Date                 Property       System.DateTime Date {get;}
Day                  Property       System.Int32 Day {get;}
DayOfWeek            Property       System.DayOfWeek DayOfWeek {get;}
DayOfYear            Property       System.Int32 DayOfYear {get;}
Hour                 Property       System.Int32 Hour {get;}
Kind                 Property       System.DateTimeKind Kind {get;}
Millisecond          Property       System.Int32 Millisecond {get;}
Minute               Property       System.Int32 Minute {get;}
Month                Property       System.Int32 Month {get;}
Second               Property       System.Int32 Second {get;}
Ticks                Property       System.Int64 Ticks {get;}
TimeOfDay            Property       System.TimeSpan TimeOfDay {get;}
Year                 Property       System.Int32 Year {get;}
DateTime             ScriptProperty System.Object DateTime {get=if ($this.Di...

그런 다음 변수, 마침표(.), 보려는 속성을 순서대로 입력하여 이러한 속성을 호출할 수 있습니다. 예를 들어 변수에 저장된 연도를 보려면 다음 명령을 사용하십시오.

$CurrentDate.Year

변수의 속성에 액세스하여 텍스트 구문 분석을 사용하지 않고 변수에 저장된 각각의 정보를 쉽게 조작하고 사용할 수 있습니다.

변수에 Dir 명령 출력 저장

변수에 Dir 명령 출력을 저장할 수도 있습니다. Dir 명령이 실행될 때 여러 행을 반환하므로 반환된 각 행은 새 배열 요소로서 변수에 저장됩니다. 그런 다음 새로 만든 배열에 저장된 각 파일 개체에 액세스할 수 있습니다. 배열에 대한 자세한 내용은 배열을 참조하십시오.

다음 명령은 Dir 명령의 출력을 $DirOutput 변수에 할당합니다.

$DirOutput = Dir

그리고 다음과 같이 보려는 배열 인덱스를 지정하여 특정 파일 개체를 선택할 수 있습니다.

$DirOutput[1].Name

또는 전체 배열을 통해 반복되고 다음과 같이 배열에 저장된 각 파일의 이름과 파일 크기를 표시하는 단순한 루프를 만들 수 있습니다.

0..$DirOutput.Length | ForEach { $DirOutput[$_].Name + " is " + $DirOutput[$_].Length + " bytes long." }

다음 목록에서 이 예를 확인합니다.

  • 0..$DirOutput.Length 명령은 Exchange 관리 셸이 0부터 $DirOutput 변수에 저장된 배열의 최대 길이까지 정수를 출력하도록 지시합니다.

  • 0..$DirOutput.Length 명령의 출력은 배열의 끝에 도달할 때까지 배열의 각 요소를 통해 반복되는 ForEach 명령으로 파이프됩니다. ForEach 명령은 중괄호 "{ }"로 묶인 명령을 실행합니다.

  • $_ 변수는 파이프라인에 현재 개체를 저장합니다. 이 경우 파이프라인의 개체는 0..$DirOutput.Length 명령으로 0부터 배열의 최대 길이까지 카운트하면서 생성된 정수입니다. $DirOutput[$_].Name 명령과 $DirOutput[$_].Length 명령에 이 변수를 사용하여 액세스할 배열 요소를 선택합니다.

  • $_ 변수에 대한 자세한 내용은 셸 변수를 참조하십시오.

  • 더하기 "+" 기호는 $DirOutput[$_].Name 명령과 $DirOutput[$_].Length 명령의 출력을 제공된 문자열과 함께 연결하여 다음과 유사한 출력을 생성합니다.

    abv_dg.dll is 416144 bytes long.
    addxa.dll is 285056 bytes long.
    ASDat.MSI is 5626880 bytes long.
    ASEntDat.MSI is 5626880 bytes long.
    ASEntIRS.MSI is 910336 bytes long.
    ASEntSig.MSI is 45056 bytes long.
    BPA.Common.dll is 211848 bytes long.
    BPA.ConfigCollector.dll is 101272 bytes long.
    BPA.NetworkCollector.dll is 52128 bytes long.
    

이 예에서는 Length 속성을 여러 번 사용하여 동일한 변수에 대해 서로 다른 정보를 표시할 수 있음을 보여 줍니다. 이렇게 할 수 있는 이유는 여러 형식의 데이터가 $DirOutput 변수에 저장되어 있기 때문입니다. 첫 번째 형식의 데이터는 디렉터리 개체에 있고 두 번째 형식의 데이터는 파일 개체에 있습니다. 배열 인덱스를 지정하지 않고 $DirObject.Length 명령을 실행하면 배열에 저장된 디렉터리 부모 개체 유형에 액세스합니다. $DirObject[5].Length와 같이 배열 인덱스를 지정하면 디렉터리 개체에 저장된 파일 자식 개체에 액세스합니다.

이 동작은 다수의 개체에 나타납니다. 일반적으로 단일 변수에 들어 있는 많은 수준의 개체 데이터에 액세스할 수 있습니다. 이 데이터에 액세스하는 기능 덕분에 Exchange 관리 셸이 매우 융통성 있게 됩니다.