about_Functions_OutputTypeAttribute

업데이트 날짜: 2014년 5월

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

항목

about_Functions_OutputTypeAttribute

간단한 설명

함수가 반환하는 개체의 형식을 보고하는 특성에 대해 설명합니다.

자세한 설명

OutputType 특성은 함수가 반환하는 개체의 .NET 형식을 나열합니다. 선택적 ParameterSetName 매개 변수를 사용하여 각 매개 변수 집합에 대한 다양한 출력 형식을 나열할 수 있습니다.

OutputType 특성은 간단한 함수와 고급 함수에서 지원됩니다. CmdletBinding 특성과 독립적입니다.

OutputType 특성은 Get-Command cmdlet이 반환하는 System.Management.Automation.FunctionInfo 개체의 OutputType 속성 값을 제공합니다.

OutputType 특성 값은 설명서 참고 사항뿐입니다. 이 값은 함수 코드에서 파생되거나 실제 함수 출력에 비교되지 않습니다. 따라서 값이 정확하지 않을 수 있습니다.

구문

함수의 OutputType 특성의 구문은 다음과 같습니다.

        [OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
        [OutputType("<TypeNameString>", ParameterSetName="<Name>")]

ParameterSetName 매개 변수는 선택 사항입니다.

OutputType 특성의 여러 형식을 나열할 수 있습니다.

        [OutputType([<Type1>],[<Type2>],[<Type3>])]

ParameterSetName 매개 변수를 사용하여 매개 변수 집합에 따라 다른 형식을 반환하도록 지정할 수 있습니다.

        [OutputType([<Type1>], ParameterSetName="<Set1>","<Set2>")]
        [OutputType([<Type2>], ParameterSetName="<Set3>")]

Param 문 앞에 나타나는 특성 목록에 OutputType 특성 문을 삽입합니다.

다음 예제에서는 간단한 함수에 삽입된 OutputType 특성을 보여 줍니다.

        function SimpleFunction2
        {
    [OutputType([<Type>])]
            Param ($Parameter1)

            <function body>
        }

다음 예제에서는 고급 함수에 삽입된 OutputType 특성을 보여 줍니다.

       function AdvancedFunction1
       {
           [OutputType([<Type>])]
           Param (      
               [parameter(Mandatory=$true)]
               [String[]]
               $Parameter1  
           )     
                  
         <function body>
       }
       function AdvancedFunction2
       {
           [CmdletBinding(SupportsShouldProcess=<Boolean>)]
           [OutputType([<Type>])]
           Param (      
               [parameter(Mandatory=$true)]
               [String[]]
               $Parameter1  
           )     
                  
         <function body>
       }

예제

다음 함수는 OutputType 특성을 사용하여 문자열 값을 반환하도록 지정합니다.

        function Send-Greeting
        {
          [OutputType([String])]   
          Param ($Name)

          Hello, $Name      
        }

결과 출력 형식 속성을 보려면 Get-Command cmdlet을 사용합니다.

        PS C:\> (Get-Command Send-Greeting).OutputType

        Name                                               Type                                                                                                     
        ----                                               ----                                                                                                     
        System.String                                      System.String        

                                                                                    

다음 고급 함수는 OutputType 특성을 사용하여 함수 명령에 사용된 매개 변수에 따라 함수가 다른 형식을 반환하도록 지정합니다.

       function Get-User
       {
           [CmdletBinding(DefaultParameterSetName="ID")]

           [OutputType("System.Int32", ParameterSetName="ID")]
           [OutputType([String], ParameterSetName="Name")]

           Param (      
               [parameter(Mandatory=$true, ParameterSetName="ID")]
               [Int[]]
               $UserID,

               [parameter(Mandatory=$true, ParameterSetName="Name")]
               [String[]]
               $UserName
           )     
                  
         <function body>
       }

다음 예제에서는 정확하지 않더라도 출력 형식 속성 값을 통해 표시하는 OutputType 특성 값을 보여 줍니다.

Get-Time 함수는 DateTime 개체의 약식 시간이 포함된 문자열을 반환합니다. 그러나 OutputType 특성으로는 System.DateTime 개체를 반환함을 보고합니다.

        function Get-Time
        { 
            [OutputType([DateTime])]
            Param
            (
               [parameter(Mandatory=$true)]
               [Datetime]$DateTime       
            )
            $DateTime.ToShortTimeString()
        }  

Get-Type 메서드로는 함수가 문자열을 반환함을 확인합니다.

        PS C:\> (Get-Time -DateTime (Get-Date)).Gettype().FullName
        System.String

그러나 OutputType 특성에서 값을 가져오는 OutputType 속성으로는 함수가 DateTime 개체를 반환함을 보고합니다.

        PS C:\> (Get-Command Get-Time).OutputType

        Name                                      Type                                                                                                     
        ----                                      ----                                                                                                     
        System.DateTime                           System.DateTime

참고

FunctionInfo 개체의 OutputType 속성 값은 System.Management.Automation.PSTypeName 개체의 배열이고 각 개체에는 Name 및 Type 속성이 포함됩니다.

각 출력 형식의 이름만 가져오려면 다음 형식의 명령을 사용합니다.

        (Get-Command Get-Time).OutputType | ForEach {$_.Name}

OutputType 속성 값은 null일 수 있습니다. 출력이 WMI 개체 또는 형식이 지정된 개체 보기 등의 .NET 형식이 아니면 null 값을 사용합니다.

참고 항목

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute