about_Type_Operators

업데이트 날짜: 2014년 5월

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

항목

about_Type_Operators

간단한 설명

Microsoft .NET Framework 형식에 사용할 수 있는 연산자에 대해 설명합니다.

자세한 설명

부울 형식 연산자(-is 및 -isNot)는 개체가 지정된 .NET Framework 형식의 인스턴스인지 여부를 알려줍니다. -is 연산자는 형식이 일치하면 값 TRUE를 반환하며 그렇지 않으면 값 FALSE를 반환합니다. -isNot 연산자는 형식이 일치하면 값 FALSE를 반환하며 그렇지 않으면 값 TRUE를 반환합니다.

-as 연산자는 입력 개체를 지정된 .NET Framework 형식으로 변환을 시도합니다. 성공하면 변환된 개체를 반환합니다. 실패하면 아무 것도 반환하지 않습니다. 이때 오류를 반환하지 않습니다.

다음 표는 Windows PowerShell®의 형식 연산자를 열거합니다.

    Operator  Description                 Example  
    --------  ------------------------    -------------------------------------
    -is       Returns TRUE when the       C:\PS> (get-date) -is [DateTime]
              input is an instance        True
              of the specified
              .NET Framework type.

    -isNot    Returns TRUE when the       C:\PS> (get-date) -isNot [DateTime]
              input is not an instance    False
              of the specified
              .NET Framework type.
 
    -as       Converts the input to       C:\PS> 12/31/07 -as [DateTime]
              the specified               Monday, December 31, 2007 12:00:00 AM
              .NET Framework type.

형식 연산자의 구문은 다음과 같습니다.

        <input> <operator> [.NET type]

또한 다음 구문을 사용할 수도 있습니다.

        <input> <operator> ".NET type"

.NET Framework 형식을 지정하려면 형식 이름을 대괄호로 묶거나([ ]) 형식을 [DateTime] 또는 System.DateTime의 경우 "DateTime" 같은 문자열로 입력합니다. 형식이 시스템 네임스페이스의 루트에 있지 않으면 개체 형식의 전체 이름을 지정합니다. "System."은 생락할 수 있습니다. 예를 들어 System.Diagnostics.Process를 지정하려면 [System.Diagnostics.Process], [Diagnostics.Process] 또는 "diagnostics.process"를 입력합니다.

형식 연산자는 입력이 개체 컬렉션이더라도 언제나 부울 값을 반환합니다. 그러나 입력이 컬렉션이면 형식 연산자가 컬렉션의 .NET Framework 형식을 일치시킵니다. 모든 개체가 같은 형식이더라도 각 개체의 형식을 일치시키지는 않습니다.

개체의 .NET Framework 형식을 찾으려면 Get-Member cmdlet을 사용합니다. 또는 모든 개체의 GetType 메서드를 이 메서드의 FullName 속성과 함께 사용합니다. 예를 들어 다음 문은 여기서 Get-Culture command:Insert 섹션 본문의 반환 값의 형식을 가져옵니다.

        C:\PS> (get-culture).gettype().fullname
        System.Globalization.CultureInfo

예제

다음 예제에서는 형식 연산자의 몇 가지 사용 방법을 보여 줍니다.

        C:\PS> 32 -is [Float]
        False

        C:\PS> 32 -is "int"
        True

        C:\PS> (get-date) -is [DateTime]
        True

        C:\PS> "12/31/2007" -is [DateTime]
        False

        C:\PS> "12/31/2007" -is [String]
        True

        C:\PS> (get-process PowerShell)[0] -is [System.Diagnostics.Process]
        True

        C:\PS> (get-command get-member) -is [System.Management.Automation.CmdletInfo]
        True

다음 예제에서는 입력이 개체 컬렉션인 경우 일치 형식이 컬렉션의 개별 개체의 형식이 아닌 컬렉션의 .NET Framework 형식이라는 것을 보여 줍니다.

이 예제에서 Get-Culture 및 Get-UICulture cmdlet이 모두 System.Globalization.CultureInfo 개체를 반환하지만 이 개체들의 컬렉션은 System.Object 배열입니다.

        C:\PS> (get-culture) -is [System.Globalization.CultureInfo]
        True

        C:\PS> (get-uiculture) -is [System.Globalization.CultureInfo]
        True

        C:\PS> (get-culture), (get-uiculture) -is [System.Globalization.CultureInfo]
        False

        C:\PS> (get-culture), (get-uiculture) -is [Array]
        True
 
        C:\PS> (get-culture), (get-uiculture) | foreach {$_ -is [System.Globalization.CultureInfo])
        True
        True

        C:\PS> (get-culture), (get-uiculture) -is [Object]
        True

다음 예제에서는 -as 연산자를 사용하는 방법을 보여 줍니다.

        C:\PS> "12/31/07" -is [DateTime]
        False

        C:\PS> "12/31/07" -as [DateTime]
        Monday, December 31, 2007 12:00:00 AM

        C:\PS> $date = "12/31/07" -as [DateTime]

        C:\PS>$a -is [DateTime]
        True

        C:\PS> 1031 -as [System.Globalization.CultureInfo]

        LCID             Name             DisplayName
        ----             ----             -----------
        1031             de-DE            German (Germany)

다음 예제에서는 -as 연산자가 입력 개체를 .NET Framework 형식으로 변환할 수 없는 경우 아무 것도 반환하지 않는다는 것을 보여 줍니다.

        C:\PS> 1031 -as [System.Diagnostic.Process]
        C:\PS>

참고 항목

about_Operators