about_Functions_OutputTypeAttribute

Krátký popis

Popisuje atribut, který hlásí typ objektu, který funkce vrátí.

Dlouhý popis

Atribut OutputType uvádí typy objektů .NET, které funkce vrací. Volitelný parametr ParameterSetName můžete použít k výpisu různých výstupních typů pro každou sadu parametrů.

Atribut OutputType je podporován u jednoduchých a pokročilých funkcí. Je nezávislý na atributu CmdletBinding .

Atribut OutputType poskytuje hodnotu OutputType vlastnost System.Management.Automation.FunctionInfo objektu, který rutina Get-Command vrátí.

Hodnota atributu OutputType je pouze poznámka k dokumentaci. Neodvozuje se z kódu funkce ani ve srovnání se skutečným výstupem funkce. Proto může být hodnota nepřesná.

Syntaxe

Atribut OutputType funkcí má následující syntaxi:

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

Parametr ParameterSetName je volitelný.

V atributu OutputType můžete vypsat více typů.

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

Parametr ParameterSetName můžete použít k označení, že různé sady parametrů vracejí různé typy.

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

Umístěte příkazy atributu OutputType do seznamu atributů, který předchází Param příkazu.

Následující příklad ukazuje umístění outputType atributu v jednoduché funkci.

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

  <function body>
}

Následující příklad ukazuje umístění outputType atributu v pokročilých funkcích.

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>
}

Příklady

Příklad 1: Vytvoření funkce, která má OutputType řetězce

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

  "Hello, $Name"
}

Pokud chcete zobrazit výslednou vlastnost výstupního typu, použijte rutinu Get-Command .

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

Příklad 2: Použití atributu OutputType k označení dynamických typů výstupu

Následující pokročilá funkce používá outputType atribut k označení, že funkce vrací různé typy v závislosti na sadě parametrů použité v příkazu funkce.

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>
}

Příklad 3: Ukazuje, kdy se skutečný výstup liší od outputType

Následující příklad ukazuje, že hodnota vlastnosti výstupního typu zobrazuje hodnotu OutputType atributu, i když je nepřesná.

Funkce Get-Time vrátí řetězec, který obsahuje krátkou formu času v libovolném objektu DateTime . Atribut OutputType však hlásí, že vrací System.DateTime objekt.

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

  $DateTime.ToShortTimeString()
}

Metoda GetType() potvrzuje, že funkce vrací řetězec.

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

Nicméně OutputType vlastnost, která získá jeho hodnotu z OutputType atributu, hlásí, že funkce vrací DateTime objekt.

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

Příklad 4: Funkce, která by neměla mít výstup

Následující příklad ukazuje vlastní funkci, která by měla provést akci, ale nevrací nic.

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

Notes

Hodnota OutputType vlastnost FunctionInfo objektu je pole System.Management.Automation.PSTypeName objekty, které mají vlastnosti Name a Type.

Pokud chcete získat pouze název každého typu výstupu, použijte příkaz s následujícím formátem.

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

Nebo jeho kratší verze.

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

Hodnota OutputType vlastnost může být null. Hodnotu null použijte, pokud výstup není typem .NET, jako je objekt WMI nebo formátované zobrazení objektu.

Viz také