다음을 통해 공유


구문 분석 정보

간단한 설명

PowerShell이 명령을 구문 분석하는 방법을 설명합니다.

자세한 설명

명령 프롬프트에서 명령을 입력하면 PowerShell은 명령 텍스트를 "토큰"이라는 일련의 세그먼트로 분할한 다음 각 "토큰"을 해석하는 방법을 결정합니다.

예를 들어 다음을 입력하는 경우:

Write-Host 책

PowerShell은 다음 명령을 "Write-Host" 및 "book"이라는 두 개의 토큰으로 나누고 각 토큰을 독립적으로 해석합니다.

명령을 처리할 때 PowerShell 파서는 식 모드 또는 인수 모드에서 작동합니다.

  • 식 모드에서 문자 문자열 값은 따옴표로 포함되어야 합니다. 따옴표로 묶지 않은 숫자는 일련의 문자가 아닌 숫자 값으로 처리됩니다.

  • 인수 모드에서는 달러 기호($), 기호(@), 작은따옴표('), 큰따옴표(") 또는 여는 괄호(()와 같은 특수 문자 중 하나로 시작하지 않는 한 각 값은 확장 가능한 문자열로 처리됩니다.

이러한 문자 중 하나가 앞에 오는 경우 값은 값 식으로 처리됩니다.

다음 표에서는 식 모드 및 인수 모드에서 처리되는 명령과 해당 명령에서 생성된 결과의 몇 가지 예를 제공합니다.

예제 모드 결과
2+2 4(정수)
Write-Output 2+2 인수 "2+2"(문자열)
Write-Output(2+2) 4(정수)
$a = 2+2 $a = 4(정수)
Write-Output $a 4(정수)
Write-Output $a/H 인수 "4/H"(문자열)

모든 토큰은 부울 또는 문자열과 같은 일종의 개체 형식으로 해석될 수 있습니다. PowerShell은 식에서 개체 형식을 확인하려고 시도합니다. 개체 형식은 명령이 예상하는 매개 변수의 형식과 PowerShell이 인수를 올바른 형식으로 변환하는 방법을 알고 있는지 여부에 따라 달라집니다. 다음 표에서는 식에서 반환된 값에 할당된 형식의 몇 가지 예를 보여 줍니다.

예제 모드 결과
Write-Output !1 인수 "!1"(문자열)
Write-Output(!1) False(부울)
Write-Output (2) 2(정수)

PowerShell 3.0에 도입된 중지 구문 분석 기호(--%)는 PowerShell에서 입력을 PowerShell 명령 또는 식으로 해석하지 않도록 지시합니다.

PowerShell에서 실행 파일을 호출할 때 프로그램 인수 앞에 중지 구문 분석 기호를 배치합니다. 이 기술은 이스케이프 문자를 사용하여 오해를 방지하는 것보다 훨씬 쉽습니다.

중지 구문 분석 기호가 발견되면 PowerShell은 줄의 나머지 문자를 리터럴로 처리합니다. 수행되는 유일한 해석은 %USERPROFILE%와 같은 표준 Windows 표기법을 사용하는 환경 변수의 값을 대체하는 것입니다.

중지 구문 분석 기호는 다음 줄 바꿈 또는 파이프라인 문자까지만 유효합니다. 연속 문자(')를 사용하여 효과를 확장하거나 명령 구분 기호(;)를 사용하여 효과를 종료할 수 없습니다.

예를 들어 다음 명령은 Icacls 프로그램을 호출합니다.

icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

PowerShell 2.0에서 이 명령을 실행하려면 이스케이프 문자를 사용하여 PowerShell이 괄호를 잘못 해석하지 못하도록 해야 합니다.

icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F

PowerShell 3.0부터 중지 구문 분석 기호를 사용할 수 있습니다.

icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F

PowerShell은 다음 명령 문자열을 Icacls 프로그램에 보냅니다.

X:\VMS /grant Dom\HVAdmin:(CI)(OI)F

참고 항목

about_Command_Syntax