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