about_Automatic_Variables

업데이트 날짜: 2014년 5월

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

여기에 소개를 삽입합니다.

항목

about_Automatic_Variables

간단한 설명

Windows PowerShell에 대한 상태 정보를 저장하는 변수에 대해 설명합니다. 이 변수는 Windows PowerShell에 의해 생성되고 유지 관리됩니다.

자세한 설명

다음은 Windows PowerShell의 자동 변수 목록입니다.

$$

마지막 줄에 세션에서 수신된 마지막 토큰을 포함하고 있습니다.

$?

마지막 연산의 실행 상태를 포함하고 있습니다. 마지막 연산이 성공하면 TRUE, 실패하면 FALSE를 포함합니다.

$^

마지막 줄에 세션에서 수신된 첫 번째 토큰을 포함하고 있습니다.

$_

$PSItem과 같습니다. 파이프라인 개체의 현재 개체를 포함하고 있습니다. 모든 개체 또는 파이프라인의 선택된 개체에 대해 작업을 수행하는 명령에 이 변수를 사용할 수 있습니다.

$ARGS

선언되지 않은 매개 변수 또는 함수, 스크립트 또는 스크립트 블록에 전달되는 매개 변수 값의 배열을 포함하고 있습니다. 함수를 만들 때 param 키워드를 사용하거나 매개 변수의 쉼표로 구분된 목록을 괄호로 묶어 함수 이름 뒤에 추가하여 매개 변수를 선언할 수 있습니다.

이벤트 작업에서 $Args 변수는 처리 중인 이벤트의 이벤트 인수를 나타내는 개체를 포함하고 있습니다. 이 변수는 이벤트 등록 명령의 Action 블록 내에서만 채워집니다. 이 변수의 값은 Get-Event가 반환하는 PSEventArgs 개체(System.Management.Automation.PSEventArgs)의 SourceArgs 속성에서도 찾을 수 있습니다.

$CONSOLEFILENAME

세션에서 최근 사용한 콘솔 파일(.psc1)의 경로를 포함하고 있습니다. 이 변수는 PSConsoleFile 매개 변수를 사용하여 Windows PowerShell를 시작하거나 Export-Console cmdlet를 사용하여 스냅인 이름을 콘솔 파일로 내보낼 때 채워집니다.

Export-Console cmdlet을 매개 변수 없이 사용하면 세션에서 최근 사용한 콘솔 파일을 자동으로 업데이트합니다. 이 자동 변수를 사용하여 업데이트할 파일을 결정할 수 있습니다.

$ERROR

최근 오류를 나타내는 오류 개체의 배열을 포함하고 있습니다. 최근 오류는 배열의 첫 번째 오류 개체($Error[0])입니다.

$Error 배열에 오류가 추가되지 않도록 하려면 값이 Ignore인 ErrorAction 일반 매개 변수를 사용합니다. 자세한 내용은 about_CommonParameters(https://go.microsoft.com/fwlink/?LinkID=113216)를 참조하십시오.

$EVENT

처리 중인 이벤트를 나타내는 PSEventArgs 개체를 포함하고 있습니다. 이 변수는 이벤트 등록 명령(예: Register-ObjectEvent)의 Action 블록 내에서만 채워집니다. 이 변수의 값은 Get-Event cmdlet이 반환하는 것과 같은 개체입니다. 그러므로 $Event 변수의 속성(예: $Event.TimeGenerated)을 Action 스크립트 블록에 사용할 수 있습니다.

$EVENTARGS

처리 중인 이벤트의 EventArgs에서 파생된 첫 번째 이벤트 인수를 나타내는 개체를 포함하고 있습니다. 이 변수는 이벤트 등록 명령의 Action 블록 내에서만 채워집니다. 이 변수의 값은 Get-Event가 반환하는 PSEventArgs(System.Management.Automation.PSEventArgs) 개체의 SourceEventArgs 속성에서도 찾을 수 있습니다.

$EVENTSUBSCRIBER

처리 중인 이벤트의 이벤트 구독자를 나타내는 PSEventSubscriber 개체를 포함하고 있습니다. 이 변수는 이벤트 등록 명령의 Action 블록 내에서만 채워집니다. 이 변수의 값은 Get-EventSubscriber cmdlet이 반환하는 것과 같은 개체입니다.

$EXECUTIONCONTEXT

Windows PowerShell 호스트의 실행 컨텍스트를 나타내는 EngineIntrinsics 개체를 포함하고 있습니다. 이 변수를 사용하여 cmdlet에 사용할 수 있는 실행 개체를 찾을 수 있습니다.

$FALSE

FALSE를 포함하고 있습니다. 이 변수를 사용하여 문자열 "false"를 사용하는 대신에 명령과 스크립트의 FALSE를 나타낼 수 있습니다. 문자열은 비어 있지 않은 문자열 또는 0이 아닌 정수로 변환될 경우 TRUE로 해석할 수 있습니다.

$FOREACH

ForEach 루프의 열거자(결과 값이 아님)를 포함하고 있습니다. $ForEach 변수의 값에 대해 열거자의 속성 및 메서드를 사용할 수 있습니다. 이 변수는 ForEach 루프가 실행 중인 동안에만 존재하며 루프가 완료된 후 삭제됩니다. 자세한 내용은 about_ForEach를 참조하세요.

$HOME

사용자의 홈 디렉터리의 전체 경로를 포함하고 있습니다. 이 변수는 %homedrive%%homepath% 환경 변수(일반적으로 C:\Users\<UserName>)와 같습니다.

$HOST

Windows PowerShell에 대한 현재 호스트 응용 프로그램을 나타내는 개체를 포함하고 있습니다. 이 변수를 사용하여 명령의 현재 호스트를 나타내거나 호스트의 속성(예: $Host.version 또는 $Host.CurrentCulture 또는 $host.ui.rawui.setbackgroundcolor("Red"))을 표시하거나 변경할 수 있습니다.

$INPUT

함수에 전달되는 모든 입력을 열거하는 열거자를 포함하고 있습니다. $input 변수는 함수 및 스크립트 블록(명명되지 않은 함수)에만 사용할 수 있습니다. 함수의 Process 블록에서 $input 변수는 현재 파이프라인에 있는 개체를 열거합니다. Process 블록이 완료될 때 파이프라인에는 개체가 남아 있지 않으므로 $input 변수는 빈 컬렉션을 열거합니다. 함수에 Process 블록이 없는 경우 End 블록에서 $input 변수는 모든 함수 입력의 컬렉션을 열거합니다.

$LASTEXITCODE

실행된 마지막 Windows 기반 프로그램의 종료 코드를 포함하고 있습니다.

$MATCHES

$Matches 변수는 -match 및 -notmatch 연산자에 대해 작동합니다. -match 및 -notmatch 연산자에 스칼라 입력을 제출하고 일치하는 것이 검색되면 부울 값을 반환하고 $Matches 자동 변수를 일치하는 문자열 값의 해시 테이블로 채웁니다. -match 연산자에 대한 자세한 내용은 about_comparison_operators를 참조하세요.

$MYINVOCATION

현재 명령에 관한 정보(예: 이름, 매개 변수, 매개 변수 값) 및 명령을 시작하거나 "호출"하는 방법에 관한 정보(예: 현재 명령을 호출한 스크립트의 이름)를 포함하고 있습니다.

$MyInvocation은 스크립트, 함수 및 스크립트 블록에 대해서만 채워집니다. 스크립트의 경로와 파일 이름($MyInvocation.MyCommand.Path) 또는 현재 명령을 식별하는 함수의 이름($MyInvocation.MyCommand.Name) 등 $MyInvocation이 반환하는 System.Management.Automation.InvocationInfo 개체의 정보를 현재 스크립트에 사용할 수 있습니다. 현재 스크립트의 이름을 찾을 때 특히 유용합니다.

Windows PowerShell 3.0부터 $MyInvocation은 다음과 같은 새 속성을 가지고 있습니다.

       -- PSScriptRoot: Contains the full path to the script that invoked the
          current command. The value of this property is populated only when
          the caller is a script.  
       -- PSCommandPath: Contains the full path and file name of the script that
          invoked the current command. The value of this property is populated
          only when the caller is a script.  

$PSScriptRoot 및 $PSCommandPath 자동 변수와 달리 $MyInvocation 자동 변수의 PSScriptRoot 및 PSCommandPath 속성은 현재 스크립트가 아닌 호출자 또는 호출 스크립트에 관한 정보를 포함하고 있습니다.

$NESTEDPROMPTLEVEL

현재 프롬프트 수준을 포함하고 있습니다. 값 0은 원래 프롬프트 수준을 나타냅니다. 값은 중첩 수준을 입력할 때 증가되고 종료할 때 감소됩니다.

예를 들어 Windows PowerShell은 $Host.EnterNestedPrompt 메서드를 사용할 때 중첩 명령 프롬프트를 표시합니다. 또한 Windows PowerShell는 Windows PowerShell 디버거에서 중단점에 도달할 때 중첩 명령 프롬프트를 표시합니다.

중첩 프롬프트를 입력하면 Windows PowerShell는 현재 명령을 일시 중지하고 실행 컨텍스트를 저장하고 $NestedPromptLevel 변수의 값을 증가시킵니다. 추가 중첩 명령 프롬프트(128수준까지)를 만들거나 원래 명령 프롬프트로 돌아가려면 명령을 완료하거나 "exit"를 입력합니다.

$NestedPromptLevel 변수는 프롬프트 수준을 추적하는 데 도움이 됩니다. 이 값을 항상 보이도록 포함하고 있는 대체 Windows PowerShell 명령 프롬프트를 만듭니다.

$NULL

$null은 NULL 또는 빈 값을 포함하고 있는 자동 변수입니다. 이 변수를 사용하여 명령과 스크립트에서 없거나 정의되지 않은 값을 나타낼 수 있습니다.

Windows PowerShell는 $null을 값을 가진 개체, 즉 명시적 자리 표시자로 처리하므로 $null을 사용하여 일련의 값에서 빈 값을 나타낼 수 있습니다.

예를 들어 $null은 컬렉션에 포함될 때 개체 중 하나로 처리됩니다.

           C:\PS> $a = ".dir", $null, ".pdf"
           C:\PS> $a.count
           3

$null 변수를 ForEach-Object cmdlet에 파이프하면 다른 개체의 경우와 마찬가지고 $null에 대한 값을 생성합니다.

           PS C:\ps-test> ".dir", "$null, ".pdf" | Foreach {"Hello"}
           Hello
           Hello
           Hello

따라서 $null을 사용하여 "매개 변수 값 없음"을 의미할 수 없습니다. $null의 매개 변수 값은 기본 매개 변수 값을 재정의합니다.

그러나 Windows PowerShell는 $null 변수를 자리 표시자로 처리하므로 다음과 같은 스크립트($null이 무시되면 작동하지 않음)에 이를 사용할 수 있습니다.

           $calendar = @($null, $null, “Meeting”, $null, $null, “Team Lunch”, $null)
           $days = Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
           $currentDay = 0

           foreach($day in $calendar)
           {
               if($day –ne $null)
               {
                   "Appointment on $($days[$currentDay]): $day"
               }
    
               $currentDay++
           } 

           Appointment on Tuesday: Meeting
           Appointment on Friday: Team lunch

$OFS

$OFS는 출력 필드 구분 기호로 사용할 문자열을 저장하는 특수 변수입니다. 배열을 문자열로 변환할 때 이 변수를 사용합니다. 기본적으로 $OFS의 값은 " "이지만 $OFS="<value>"를 입력하여 세션에서 $OFS의 값을 변경할 수 있습니다. 스크립트, 모듈 또는 구성 출력에 기본값 " "을 예상하는 경우 $OFS 기본값이 코드의 다른 위치에서 변경되지 않았는지 살펴보아야 합니다.

예:

PS> $a="1","2","3","4"
           PS> $a
           1
           2
           3
           4

PS> [string]$a
           1 2 3 4
           PS> $OFS="";[string]$a
           1234

PS> $OFS=",";[string]$a
           1,2,3,4

PS> $OFS="--PowerShellRocks--";[string]$a
           1--PowerShellRocks--2--PowerShellRocks--3--PowerShellRocks--4
           PS> $OFS="`n`n";[string]$a
           1

           2

           3

           4

$PID

현재 Windows PowerShell 세션을 호스팅하는 프로세스의 프로세스 식별자(PID)를 포함하고 있습니다.

$PROFILE

현재 사용자 및 현재 호스트 응용 프로그램에 대한 Windows PowerShell 프로필의 전체 경로를 포함하고 있습니다. 이 변수를 사용하여 명령에서 프로필을 나타낼 수 있습니다. 예를 들어 명령에 이 변수를 사용하여 프로필이 생성되었는지 여부를 결정할 수 있습니다.

           test-path $profile

또는 명령에 이 변수를 사용하여 프로필을 생성할 수 있습니다.

           new-item -type file -path $pshome -force

명령에 이 변수를 사용하여 메모장에서 프로필을 열 수도 있습니다.

           notepad $profile

$PSBOUNDPARAMETERS

스크립트 또는 함수에 전달되는 매개 변수 및 이들의 현재 값의 사전을 포함하고 있습니다. 이 변수는 매개 변수가 선언된 범위(스크립트 또는 함수)에서만 값을 가집니다. 이 변수를 사용하여 매개 변수의 현재 값을 표시 또는 변경하거나 매개 변수 값을 다른 스크립트 또는 함수에 전달할 수 있습니다.

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

         function Test {
            param($a, $b)
            
            # Display the parameters in dictionary format.
            $PSBoundParameters
             
            # Call the Test1 function with $a and $b.
            test1 @PSBoundParameters
         }

$PSCMDLET

cmdlet 또는 실행 중인 고급 함수를 나타내는 개체를 포함하고 있습니다.

cmdlet 또는 함수 코드에 개체의 속성과 메서드를 사용하여 사용 조건에 응답할 수 있습니다. 예를 들어 ParameterSetName 속성은 사용 중인 매개 변수 집합의 이름을 포함하고 있으며 ShouldProcess 메서드는 WhatIf 및 Confirm 매개 변수를 cmdlet에 동적으로 추가합니다.

$PSCmdlet 자동 변수에 대한 자세한 내용은 about_Functions_Advanced를 참조하세요.

$PSCOMMANDPATH

실행 중인 스크립트의 전체 경로와 파일 이름을 포함합니다. 이 변수는 모든 스크립트에서 유효합니다.

$PSCULTURE

운영 체제에 현재 사용 중인 문화권의 이름을 포함하고 있습니다. 문화권에 따라 숫자, 통화, 날짜 등의 항목 표시 형식이 결정됩니다. 이는 시스템의 System.Globalization.CultureInfo.CurrentCulture.Name 속성의 값입니다. 시스템에 대한 System.Globalization.CultureInfo 개체를 가져오려면 Get-Culture cmdlet을 사용합니다.

$PSDEBUGCONTEXT

디버깅 중에 이 변수는 디버깅 환경에 관한 정보를 포함하고 있습니다. 그렇지 않으면 NULL 값을 포함하고 있습니다. 따라서 이 변수를 사용하여 디버거가 제어권을 가지고 있는지 여부를 나타낼 수 있습니다. 채워질 경우 이 변수는 Breakpoints 및 InvocationInfo 속성을 가지고 있는 PsDebugContext 개체를 포함하고 있습니다. InvocationInfo 속성은 Location 속성을 포함하여 여러 유용한 속성을 가지고 있습니다. Location 속성은 디버깅 중인 스크립트의 경로를 나타냅니다.

$PSHOME

Windows PowerShell에 대한 설치 디렉터리의 전체 경로(일반적으로 %windir%\System32\WindowsPowerShell\v1.0)를 포함하고 있습니다. 이 변수를 Windows PowerShell 파일의 경로에 사용할 수 있습니다. 예를 들어 다음 명령은 단어 "variable"에 대한 개념 도움말 항목을 검색합니다.

            Select-String -Pattern Variable -Path $pshome\*.txt

$PSITEM

$_과 같습니다. 파이프라인 개체의 현재 개체를 포함하고 있습니다. 모든 개체 또는 파이프라인의 선택된 개체에 대해 작업을 수행하는 명령에 이 변수를 사용할 수 있습니다.

$PSSCRIPTROOT

스크립트가 실행된 원본 디렉터리를 포함합니다.

Windows PowerShell 2.0에서 이 변수는 스크립트 모듈(.psm1)에서만 유효합니다. Windows PowerShell 3.0부터는 모든 스크립트에서 유효합니다.

$PSSENDERINFO

원래 컴퓨터의 사용자 ID와 표준 시간대를 포함한 PSSession을 시작한 사용자에 관한 정보를 포함하고 있습니다. 이 변수는 PSSessions에서만 사용할 수 있습니다.

$PSSenderInfo 변수는 사용자 구성 가능 속성 ApplicationArguments(기본적으로 시작 세션에서 나온 $PSVersionTable만 포함하고 있음)를 포함하고 있습니다. ApplicationArguments 속성에 데이터를 추가하려면 New-PSSessionOption cmdlet의 ApplicationArguments 매개 변수를 사용합니다.

$PSUICULTURE

운영 체제에 현재 사용 중인 사용자 인터페이스(UI) 문화권의 이름을 포함하고 있습니다. UI 문화권에 따라 메뉴, 메시지 등의 사용자 인터페이스 요소에 사용되는 텍스트 문자열이 결정됩니다. 이는 시스템의 System.Globalization.CultureInfo.CurrentUICulture.Name 속성의 값입니다. 시스템에 대한 System.Globalization.CultureInfo object를 가져오려면 Get-UICulture cmdlet을 사용합니다.

$PSVERSIONTABLE

현재 세션에서 실행 중인 Windows PowerShell의 버전에 관한 자세한 정보를 표시하는 읽기 전용 해시 테이블을 포함하고 있습니다. 이 테이블에는 다음 항목이 포함되어 있습니다.

    CLRVersion:            The version of the common language runtime (CLR)

    BuildVersion:          The build number of the current version

        PSVersion:             The Windows PowerShell version number

          WSManStackVersion:     The version number of the WS-Management stack

    PSCompatibleVersions:  Versions of Windows PowerShell that are
                                 compatible with the current version

          SerializationVersion   The version of the serialization method

          PSRemotingProtocolVersion
                                 The version of the Windows PowerShell remote
                                 management protocol

$PWD

현재 디렉터리의 전체 경로를 나타내는 경로 개체를 포함하고 있습니다.

$REPORTERRORSHOWEXCEPTIONCLASS

$REPORTERRORSHOWINNEREXCEPTION
$REPORTERRORSHOWSOURCE
$REPORTERRORSHOWSTACKTRACE

"ReportErrorShow" 변수는 Windows PowerShell에서 정의되지만 구현되지 않았습니다. Get-Variable는 이 변수를 가져오지만 해당 변수는 유효한 데이터를 포함하고 있지 않습니다.

$SENDER

이 이벤트를 생성한 개체를 포함하고 있습니다. 이 변수는 이벤트 등록 명령의 Action 블록 내에서만 채워집니다. 이 변수의 값은 Get-Event가 반환하는 PSEventArgs(System.Management.Automation.PSEventArgs) 개체의 Sender 속성에서 찾을 수 있습니다.

$SHELLID

현재 셸의 식별자를 포함하고 있습니다.

$STACKTRACE

최근 오류에 대한 스택 추적을 포함하고 있습니다.

$THIS

스크립트 속성 또는 스크립트 메서드를 정의하는 스크립트 블록에서 $This 변수는 확장 중인 개체를 가리킵니다.

$TRUE

TRUE를 포함하고 있습니다. 이 변수를 사용하여 명령 및 스크립트에서 TRUE를 나타낼 수 있습니다.

참고 항목

about_Hash_Tables

about_Preference_Variables

about_Variables