about_Functions_OutputTypeAttribute
간단한 설명
함수가 반환하는 개체의 형식을 보고하는 특성을 설명합니다.
자세한 설명
OutputType 특성은 함수가 반환하는 개체의 .NET 형식을 나열합니다. 선택적 ParameterSetName 매개 변수를 사용하여 각 매개 변수 집합에 대해 서로 다른 출력 형식을 나열할 수 있습니다.
OutputType 특성은 단순 및 고급 함수에서 지원됩니다. CmdletBinding 특성과는 독립적입니다.
OutputType 특성은 cmdlet이 반환하는 System.Management.Automation.FunctionInfo 개체 Get-Command
의 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>")]
문 앞에 있는 특성 목록에 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 속성 값은 각각 Name 및 Type 속성이 있는 System.Management.Automation.PSTypeName 개체의 배열입니다.
각 출력 형식의 이름만 얻으려면 다음 형식의 명령을 사용합니다.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
또는 더 짧은 버전입니다.
(Get-Command Get-Date).OutputType.Name
OutputType 속성의 값은 null일 수 있습니다. 출력이 .NET 형식(예: WMI 개체 또는 개체의 서식이 지정된 뷰)이 아닌 경우 null 값을 사용합니다.
참고 항목
PowerShell
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기