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