다음을 통해 공유


구문 분석 정보

간단한 설명

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) 표현 거짓(논리형)
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

참고 항목

명령어 구문에 관하여