about_Language_Modes

업데이트 날짜: 2014년 5월

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

항목

about_Language_Modes

간단한 설명

언어 모드 및 언어 모드가 Windows PowerShell® 세션에 미치는 영향을 설명합니다.

자세한 설명

Windows PowerShell 세션의 언어 모드는 세션에서 사용할 수 있는 Windows PowerShell 언어의 요소를 결정하는 데 일부 영향을 미칩니다.

Windows PowerShell은 다음 언어 모드를 지원합니다.

FullLanguage

ConstrainedLanguage(Windows PowerShell 3.0부터 도입)

RestrictedLanguage

NoLanguage

언어 모드란?

언어 모드는 세션에서 허용되는 언어 요소를 결정합니다.

언어 모드는 실제로 세션을 만드는 데 사용되는 세션 구성(또는 "끝점")의 속성입니다. 특정 세션 구성을 사용하는 모든 세션에는 세션 구성의 언어 모드가 지정되어 있습니다.

모든 Windows PowerShell 세션에는 New-PSSession cmdlet을 사용하여 만드는 PSSession, ComputerName 매개 변수를 사용하는 임시 세션 및 Windows PowerShell을 시작할 때 나타나는 기본 세션을 비롯한 언어 모드가 지정되어 있습니다.

원격 세션은 원격 컴퓨터에서 세션 구성을 사용하여 만듭니다. 세션 구성에 설정된 언어 모드에 따라 세션의 언어 모드가 결정됩니다. PSSession의 세션 구성을 지정하려면 세션을 만드는 cmdlet의 ConfigurationName 매개 변수를 사용합니다.

언어 모드

이 섹션에서는 Windows PowerShell 세션의 언어 모드에 대해 설명합니다.

전체 언어(FullLanguage)

FullLanguage 언어 모드는 세션의 모든 언어 요소를 허용합니다. FullLanguage는 Windows RT를 제외한 모든 Windows 버전의 기본 세션에 대한 기본 언어 모드입니다.

제한된 언어(RestrictedLanguage)

RestrictedLanguage 언어 모드에서 사용자는 명령(cmdlet, 함수, CIM 명령 및 워크플로)을 실행할 수 있지만 스크립트 블록을 사용하도록 허용되지 않습니다.

다음 변수만 허용됩니다.

$PSCulture

$PSUICulture

$True

$False

$Null.

다음 비교 연산자만 허용됩니다.

eq (equal)

gt (greater-than)

lt (less-than)

대입문, 속성 참조 및 메서드 호출은 허용되지 않습니다.

언어 없음(NoLanguage)

NoLanguage 언어 모드에서 사용자는 명령을 실행할 수 있지만 언어 요소를 사용할 수 없습니다.

제한된 언어(ConstrainedLanguage)

ConstrainedLanguage 언어 모드는 모든 Windows cmdlet 및 모든 Windows PowerShell 언어 요소를 허용하지만 허용되는 형식이 제한됩니다.

ConstrainedLanguage 언어 모드는 Windows RT에서 UMCI(사용자 모드 코드 무결성)를 지원하도록 설계되었습니다. Windows RT에서 지원되는 유일한 언어 모드이지만 지원되는 모든 시스템에서 사용할 수 있습니다.

UMCI는 Microsoft 서명 및 Microsoft 인증 앱만 Windows RT 기반 장치에 설치할 수 있도록 하여 ARM 장치를 보호합니다. ConstrainedLanguage 모드는 사용자가 Windows PowerShell을 사용하여 UMCI를 우회하거나 위반하지 못하게 합니다.

ConstrainedLanguage 모드의 기능은 다음과 같습니다.

Windows 모듈의 모든 cmdlet 및 다른 UMCI 승인 cmdlet은 완벽하게 작동하며, 언급된 것을 제외하고 시스템 리소스에 대한 모든 액세스 권한을 갖습니다.

Windows PowerShell 스크립팅 언어의 모든 요소가 허용됩니다.

Windows에 포함된 모든 모듈을 가져올 수 있으며 모듈이 내보내는 모든 명령이 세션에서 실행됩니다.

Windows PowerShell 워크플로에서는 스크립트 워크플로(Windows PowerShell 언어로 작성된 워크플로)를 작성하고 실행할 수 있습니다. XAML 기반 워크플로는 지원되지 않으며 "Invoke-Expression -Language XAML"을 사용하는 것과 같은 방식으로 스크립트 워크플로에서 XAML을 실행할 수 없습니다. 또한 중첩된 워크플로는 허용되지만 워크플로가 다른 워크플로를 호출할 수는 없습니다.

Add-Type cmdlet은 서명된 어셈블리를 로드할 수 있지만 임의의 C# 코드 또는 Win32 API를 로드할 수 없습니다.

New-Object cmdlet은 허용된 형식에 대해서만 사용할 수 있습니다(아래에 나열됨).

허용된 형식(아래에 나열)만 Windows PowerShell에서 사용할 수 있습니다. 다른 형식은 허용되지 않습니다.

형식 변환은 허용되지만 단, 결과가 허용되는 형식이어야 합니다.

문자열 입력을 형식으로 변환하는 cmdlet 매개 변수는 결과 형식이 허용되는 형식일 때만 작동합니다.

ToString() 메서드 및 허용되는 형식(아래에 나열)의 .NET 메서드만 호출할 수 있습니다. 다른 메서드는 호출할 수 없습니다.

사용자는 허용되는 형식의 모든 속성을 가져올 수 있습니다. 사용자는 핵심 형식에 대해서만 속성 값을 설정할 수 있습니다.

다음 COM 개체만 허용됩니다.

Scripting.Dictionary

Scripting.FileSystemObject

VBScript.RegExp

허용되는 형식:

다음 형식은 ConstrainedLanguage 언어 모드에서 허용됩니다. 사용자는 속성을 가져오고, 메서드를 호출하고, 개체를 이러한 형식으로 변환할 수 있습니다.

        AliasAttribute
        AllowEmptyCollectionAttribute
        AllowEmptyStringAttribute
        AllowNullAttribute
        Array
        Bool
        byte
        char
        CmdletBindingAttribute
        DateTime
        decimal
        DirectoryEntry
        DirectorySearcher
        double
        float
        Guid
        Hashtable
        int
        Int16
        long
        ManagementClass
        ManagementObject
        ManagementObjectSearcher
        NullString
        OutputTypeAttribute
        ParameterAttribute
        PSCredential
        PSDefaultValueAttribute
        PSListModifier
        PSObject
        PSPrimitiveDictionary
        PSReference
        PSTypeNameAttribute
        Regex
        SByte
        string
        SupportsWildcardsAttribute
        SwitchParameter
        System.Globalization.CultureInfo
        System.Net.IPAddress
        System.Net.Mail.MailAddress
        System.Numerics.BigInteger
        System.Security.SecureString
        TimeSpan
        UInt16
        UInt32
        UInt64

세션 구성의 언어 모드 찾기

세션 구성 파일을 사용하여 세션 구성이 만들어지면 세션 구성은 LanguageMode 속성을 갖습니다. LanguageMode 속성의 값을 가져와 언어 모드를 찾을 수 있습니다.

        PS C:\>(Get-PSSessionConfiguration -Name Test).LanguageMode
        FullLanguage

다른 세션 구성에서 세션 구성을 사용하여 만든 세션의 언어 모드를 검색하여 간접적으로 언어 모드를 찾을 수 있습니다.

세션의 언어 모드 찾기

세션 상태의 LanguageMode 속성 값을 가져와 FullLanguage 또는 ConstrainedLanguage 세션의 언어 모드를 찾을 수 있습니다.

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

        PS C:\>$ExecutionContext.SessionState.LanguageMode
        ConstrainedLanguage

그러나 RestrictedLanguage 및 NoLanguage 언어 모드를 갖는 세션에서는 속성 값을 가져오기 위해 점 방법을 사용할 수 없습니다. 대신, 오류 메시지에 언어 모드가 표시됩니다.

RestrictedLanguage 세션에서 $ExecutionContext.SessionState.LanguageMode 명령을 실행할 때 Windows PowerShell은 PropertyReferenceNotSupportedInDataSection 및 VariableReferenceNotSupportedInDataSection 오류 메시지를 반환합니다.

PropertyReferenceNotSupportedInDataSection:

속성 참조는 제한된 언어 모드 또는 데이터 섹션에서 허용되지 않습니다.

VariableReferenceNotSupportedInDataSection

제한된 언어 모드 또는 데이터 섹션에서 참조될 수 없는 변수가 참조되고 있습니다.

NoLanguage 세션에서 $ExecutionContext.SessionState.LanguageMode 명령을 실행할 때 Windows PowerShell은 ScriptsNotAllowed 오류 메시지를 반환합니다.

ScriptsNotAllowed

이 runspace에서는 이 구문이 지원되지 않습니다. 언어 없음 모드에 있기 때문일 수 있습니다.

키워드

about_ConstrainedLanguage

about_FullLanguage

about_NoLanguage

about_RestrictedLanguage

참고 항목

about_Session_ConfigurationFiles

about_Session_Configurations

about_Windows_RT