다음을 통해 공유


about_Functions_OutputTypeAttribute

간단한 설명

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

자세한 설명

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

OutputType 특성은 단순 및 고급 함수에서 지원됩니다. CmdletBinding 특성과는 독립적입니다.

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

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>")]

문 앞에 있는 특성 목록에 OutputType 특성 문을 배치합니다Param.

다음 예제에서는 간단한 함수에서 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>
}

예제

예제 1: String의 OutputType이 있는 함수 만들기

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

  "Hello, $Name"
}

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

(Get-Command Send-Greeting).OutputType
Name                                               Type
----                                               ----
System.String                                      System.String

예제 2: OutputType 특성을 사용하여 동적 출력 형식 표시

다음 고급 함수는 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>
}

예제 3: 실제 출력이 OutputType과 다른 경우 표시

다음 예제에서는 출력 형식 속성 값이 정확하지 않은 경우에도 OutputType 특성의 값을 표시하는 것을 보여 줍니다.

이 함수는 Get-Time DateTime 개체의 짧은 시간 형식을 포함하는 문자열을 반환합니다. 그러나 OutputType 특성은 System.DateTime 개체를 반환한다고 보고합니다.

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

  $DateTime.ToShortTimeString()
}

메서드는 GetType() 함수가 문자열을 반환하는 것을 확인합니다.

(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String

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

(Get-Command Get-Time).OutputType
Name                                      Type
----                                      ----
System.DateTime                           System.DateTime

예제 4: 출력이 없어야 하는 함수

다음 예제에서는 작업을 수행해야 하지만 아무것도 반환하지 않는 사용자 지정 함수를 보여 줍니다.

function Invoke-Notepad
{
  [OutputType([System.Void])]
  Param ()
  & notepad.exe | Out-Null
}

주의

FunctionInfo 개체의 OutputType 속성 값은 각각 NameType 속성이 있는 System.Management.Automation.PSTypeName 개체의 배열입니다.

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

(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name

또는 더 짧은 버전입니다.

(Get-Command Get-Date).OutputType.Name

OutputType 속성의 값은 null일 수 있습니다. 출력이 .NET 형식(예: WMI 개체 또는 개체의 서식이 지정된 뷰)이 아닌 경우 null 값을 사용합니다.

참고 항목