about_Parsing

업데이트 날짜: 2014년 5월

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

항목

about_Parsing

간단한 설명

Windows PowerShell에서 명령을 구문 분석하는 방법에 대해 설명합니다.

자세한 설명

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

예를 들어 다음을 입력합니다.

         Write-Host book

Windows PowerShell에서는 다음 명령을 "Write-Host" 토큰과 "book" 토큰으로 나누고 각 토큰을 별도로 해석합니다.

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

- 식 모드에서는 문자열 값을 따옴표로 묶어야 합니다. 따옴표로 묶지 않은 숫자는 일련의 문자가 아니라 숫자 값으로 취급됩니다.

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

이러한 문자 중 하나로 시작하는 값은 값 식으로 간주됩니다.

다음 표에서는 식 모드와 인수 모드에서 처리되는 몇 가지 명령 예제와 이러한 명령에서 생성된 결과를 보여 줍니다.

    Example            Mode         Result
    ------------------ ----------   ----------------
    2+2                Expression   4 (integer)
    Write-Output 2+2   Argument     "2+2" (string)
    Write-Output (2+2) Expression   4 (integer)
    $a = 2+2           Expression   $a = 4 (integer)
    Write-Output $a    Expression   4 (integer)
    Write-Output $a/H  Argument     "4/H" (string)

모든 토큰은 부울이나 문자열과 같은 특정 개체 형식으로 해석됩니다. Windows PowerShell은 식을 통해 개체 형식을 확인하려고 합니다. 개체 형식은 명령에 필요한 매개 변수 형식과 Windows PowerShell이 인수를 올바른 형식으로 변환하는 방법을 알고 있는지 여부에 따라 달라집니다. 다음 표에서는 식이 반환하는 값에 할당되는 형식의 몇 가지 예제를 보여 줍니다.

    Example            Mode         Result
    ------------------ ----------   ---------------
    Write-Output !1    argument     "!1" (string)
    Write-Output (!1)  expression   False (Boolean)
    Write-Output (2)   expression   2 (integer)

구문 분석 중지: --%

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

Windows PowerShell에서 실행 프로그램을 호출하려면 프로그램 인수 앞에 구문 분석 중지 기호를 배치합니다. 이 기술은 잘못 해석되지 않도록 이스케이프 문자를 사용하는 방법보다 훨씬 더 쉽습니다.

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

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

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

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

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

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

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

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

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

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

참고 항목

about_Command_Syntax