about_Variables

업데이트 날짜: 2014년 5월

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

항목

about_Variables

간단한 설명

Windows PowerShell®에서 사용할 수 있는 값을 변수에 저장하는 방법에 대해 설명합니다.

자세한 설명

모든 형식의 값을 Windows PowerShell 변수에 저장할 수 있습니다. 일반적으로 변수는 명령의 결과를 저장하고 이름, 경로, 설정 및 값 등 명령과 식에 사용하는 요소를 저장하는 데 사용됩니다.

변수는 값을 저장하는 메모리 단위입니다. Windows PowerShell에서 변수는 $a, $process 또는 $my_var 등과 같이 달러 기호로 시작하는 텍스트 문자열로 표현됩니다.

변수 이름은 대/소문자를 구분하지 않습니다. 변수 이름은 공백과 특수 문자를 포함할 수 있지만 이들은 사용하기 어려우므로 피하는 것이 좋습니다.

Windows PowerShell에는 다양한 유형의 변수가 있습니다.

사용자가 만든 변수:

사용자가 만든 변수는 사용자가 만들고 유지 관리합니다. 기본적으로 Windows PowerShell 명령줄에서 만드는 변수는 Windows PowerShell 창이 열려 있는 동안에만 존재하며 창을 닫으면 사라집니다. 변수를 저장하려면 사용자의 Windows PowerShell 프로필에 추가합니다. 스크립트에 전역, 스크립트 또는 로컬 범위를 가진 변수를 만들 수도 있습니다.

자동 변수:

자동 변수는 Windows PowerShell의 상태를 저장합니다. 이러한 변수는 Windows PowerShell에 의해 만들어지며 정확도를 유지하기 위해 필요한 경우 Windows PowerShell가 변수의 값을 변경합니다. 사용자는 이러한 변수의 값을 변경할 수 없습니다. 예를 들어 $PSHome 변수는 Windows PowerShell 설치 디렉터리에 대한 경로를 저장합니다.

자동 변수에 대한 자세한 내용, 목록 및 설명은 about_Automatic_Variables를 참조하세요.

기본 설정 변수:

기본 설정 변수는 Windows PowerShell에 대한 사용자 기본 설정을 저장합니다. 이 변수는 Windows PowerShell에 의해 만들어지며 기본값으로 채워집니다. 사용자는 이러한 변수의 값을 변경할 수 있습니다. 예를 들어 $MaximumHistoryCount 변수는 세션 기록의 최대 항목 수를 결정합니다.

기본 설정 변수에 대한 자세한 내용, 목록 및 설명은 about_Preference_Variables를 참조하세요.

변수 작업

새 변수를 만들려면 대입문을 사용하여 변수에 값을 할당합니다. 변수를 사용하기 전에 선언할 필요는 없습니다. 모든 변수의 기본값은 $null입니다.

예를 들면 다음과 같습니다.

        PS> $MyVariable = 1, 2, 3
        PS> $path = "C:\Windows\System32"

변수는 명령의 결과를 저장할 때 아주 유용합니다.

예를 들면 다음과 같습니다.

          
        PS> $processes = Get-Process         
     
        PS> $Today = (Get-Date).date

변수의 값을 표시하려면 먼저 달러 기호($)를 입력하고 그 뒤에 변수 이름을 입력합니다.

예를 들면 다음과 같습니다.

        PS> $MyVariable
        1
        2
        3
        PS> $Today
        Thursday, September 03, 2009 12:00:00 AM

변수의 값을 변경하려면 변수에 새 값을 할당합니다.

다음 예제에서는 $MyVariable 변수의 값을 표시하고 변수의 값을 변경한 다음 새 값을 표시합니다.

        PS> $MyVariable
        1
        2
        3
        PS> $MyVariable = "The green cat."
        PS> $MyVariable
        The green cat.

변수의 값을 삭제하려면 Clear-Variable cmdlet을 사용하거나 값을 $null로 변경합니다.

        PS> Clear-Variable -name MyVariable  

        -or-

        PS> $MyVariable = $null

변수를 삭제하려면 Remove-Variable or Remove-Item cmdlet을 사용합니다. (이러한 cmdlet은 이 항목의 뒷부분에서 설명합니다.)

       PS> remove-variable -name MyVariable

       PS> remove-item -path variable:\myvariable

Windows PowerShell 세션의 모든 변수 목록을 가져오려면 다음을 입력합니다.

       get-variable

변수 유형

정수, 문자열, 배열, 해시 테이블 및 개체를 포함하여 프로세스, 서비스, 이벤트 로그 및 컴퓨터를 나타내는 임의의 개체 형식을 변수에 저장할 수 있습니다.

Windows PowerShell 변수는 "형식이 명확하지 않습니다". 즉, 특정 형식의 개체로 제한되지 않습니다. 단일 변수가 여러 형식의 개체의 컬렉션("배열")을 포함할 수도 있습니다.

변수의 데이터 형식, 즉 .NET Framework 형식은 변수의 값의 .NET 형식에 의해 결정됩니다.

예를 들면 다음과 같습니다.

        PS> $a = 12     (System.Int32)
        
        PS> $a = "Word" (System.String)

        PS> $a = 12, "Word" (System.Int32, System.String)

        PS> $a = dir C:\Windows\System32  (Files and folders)

type 특성과 캐스트 표기법을 사용하면 변수가 지정된 형식의 개체 또는 해당 형식으로 변환될 수 있는 개체만 포함하도록 할 수 있습니다. 다른 형식의 값을 할당하려고 하면 Windows PowerShell가 값을 해당 형식으로 변환을 시도합니다. 변환할 수 없는 경우 대입문이 실패합니다.

캐스트 표기법을 사용하려면 변수 이름 앞(대입문 왼쪽)에 형식 이름을 대괄호로 묶어 입력합니다. 다음 예제에서는 정수만 포함할 수 있는 $number 변수, 문자열만 포함할 수 있는 $words 변수 및 DateTime 개체만 포함할 수 있는 $dates 변수를 만듭니다.

        PS> [int]$number = 8
        PS> $a = "12345" (The string is converted to an integer.)
        PS> $a = "Hello"
        Cannot convert value "Hello" to type "System.Int32". Error: "Input string was not in a correct format."
        At line:1 char:3
        + $a <<<<  = "Hello"
            + CategoryInfo          : MetadataError: (:) [], ArgumentTransformationMetadataException
            + FullyQualifiedErrorId : RuntimeException
        PS> [string]$words = "Hello"

        PS> $words = 2   (The integer is converted to a string.)

        PS> $words + 10  (The strings are concatenated.)
        210              
        PS> [datetime] $dates = "09/12/91" (The string is converted to a DateTime object.)

        PS> $dates
        Thursday, September 12, 1991 12:00:00 AM

        PS> $dates = 10  (The integer is converted to a DateTime object.)
        PS> $dates
        Monday, January 01, 0001 12:00:00 AM
                

명령 및 식에 변수 사용

명령 또는 식에 변수를 사용하려면 먼저 달러 기호($)를 입력하고 변수 이름을 입력합니다.

변수 이름(및 달러 기호)을 따옴표로 묶지 않거나 큰따옴표(")로 묶으면 변수의 값이 명령 또는 식에 사용됩니다.

변수 이름(및 달러 기호)을 홑따옴표(')로 묶으면 변수 이름이 식에 사용됩니다.

예를 들어 첫 번째 명령은 Windows PowerShell 콘솔의 Windows PowerShell 사용자 프로필에 대한 경로인 $profile 변수의 값을 가져옵니다. 두 번째 명령은 파일을 메모장에서 열며 세 번째와 네 번째 명령은 변수의 이름을 식에 사용합니다.

        PS> $profile
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> notepad $profile 
        - or -
        PS> notepad "$profile"
        C:\Documents and Settings\User01\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
        PS> '$profile'
        $profile
        PS> 'Use the $profile variable.'
        Use the $profile variable.

Windows PowerShell에 따옴표 사용에 관한 자세한 내용은 about_Quoting_Rules를 참조하세요.

특수 문자를 포함한 변수 이름

변수 이름은 달러 기호로 시작하며, 영숫자 문자와 특수 문자를 포함할 수 있습니다. 변수 이름의 길이는 사용 가능한 메모리에 의해서만 제한됩니다.

가능하면 언제나 변수 이름은 영숫자 문자와 밑줄 문자(_)만 포함해야 합니다. 공백 및 다른 특수 문자를 포함하고 있는 변수 이름은 사용하기 어려우므로 피하는 것이 좋습니다.

공백 또는 특수 문자를 포함한 변수 이름을 만들거나 표시하려면 변수 이름을 중괄호로 묶으십시오. 그러면 Windows PowerShell가 변수 이름의 문자를 문자 그대로 해석합니다.

예를 들어 다음 명령은 "save-items"라는 변수를 만든 다음 표시합니다.

          C:\PS> ${save-items} = "a", "b", "c"
          C:\PS> ${save-items}
          a
          b
          c

다음 명령은 "ProgramFiles(x86)" 환경 변수에 의해 표현되는 디렉터리의 하위 항목을 가져옵니다.

          C:\PS> Get-childitem ${env:ProgramFiles(x86)}

중괄호를 포함한 변수 이름을 참조하려면 변수 이름을 중괄호로 묶고 역따옴표(이스케이프) 문자를 사용하여 중괄호를 이스케이프합니다. 예를 들어 값이 1인 "this{value}is"라는 변수를 만들려면 다음과 같이 입력합니다.

          C:\PS> ${this`{value`}is} = 1
          C:\PS> ${this`{value`}is}
          1

변수 및 범위

기본적으로 변수는 만들어진 범위에서만 사용할 수 있습니다.

예를 들어 함수에서 만드는 변수는 해당 함수 내에서만 사용할 수 있습니다. 스크립트에서 만드는 변수는 해당 스크립트 내에서만 사용할 수 있습니다(스크립트를 도트 소싱하여 현재 범위에 추가하지 않는 한).

범위 한정자를 사용하여 변수의 기본 범위를 변경할 수 있습니다. 다음 식은 "Computers"라는 변수를 만듭니다. 이 변수는 스크립트 또는 함수에서 만들어지더라도 전역 범위를 가집니다.

            $global:computers = "Server01"

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

변수 저장

만드는 변수는 만드는 세션에서만 사용할 수 있으며, 세션을 닫으면 사라집니다.

시작하는 모든 Windows PowerShell 세션에서 사용할 수 있는 변수를 만들려면 변수를 사용자의 Windows PowerShell 프로필에 추가합니다.

예를 들어 모든 Windows PowerShell 세션에서 $VerbosePreference 변수의 값을 변경하려면 Windows PowerShell 프로필에 다음 명령을 추가합니다.

  $VerbosePreference = "Continue"

메모장 같은 텍스트 편집기에서 프로필 파일을 열고 프로필에 이 명령을 추가할 수 있습니다. Windows PowerShell 프로필에 대한 자세한 내용은 about_Profiles를 참조하세요.

VARIABLE: 드라이브

Windows PowerShell 변수 공급자는 다음과 같은 변수를 만듭니다. 외양과 역할이 파일 시스템 드라이브 같은 드라이브. 단, 이는 세션의 변수와 변수의 값을 포함하고 있습니다.

변수를 변경하려면: 다음을 입력합니다.

        set-location variable:
        
         (or "cd variable:")

Variable: 드라이브의 항목을 나열하려면 Get-Item 또는 Get-ChildItem cmdlet을 사용합니다. 예를 들면 다음과 같습니다.

         get-childitem variable:
         (or "dir" or "ls")

특정 변수의 값을 가져오려면 파일 시스템 표기법을 사용하여 드라이브 이름과 변수 이름을 지정합니다. 예를 들어 $PSCulture 자동 변수를 가져오려면 다음 명령을 사용합니다.

         get-item variable:\PSCulture      

         Name                           Value
         ----                           -----
         PSCulture                      en-US        

Variable: 드라이브 및 Windows PowerShell 변수 공급자에 대한 자세한 내용을 보려면 "get-help variable"을 입력합니다.

VARIABLE CMDLET

Windows PowerShell는 변수를 관리하도록 설계된 cmdlet 집합을 포함하고 있습니다.

         Cmdlet Name           Description
         -----------           -----------

         Clear-Variable        Deletes the value of a variable.
         Get-Variable          Gets the variables in the current console.
         New-Variable          Creates a new variable.
         Remove-Variable       Deletes a variable and its value.
         Set-Variable          Changes the value of a variable.

이 cmdlet에 대한 도움말을 가져오려면 다음을 입력합니다. "Get-Help <cmdlet-hame>".

참고 항목

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes