Megosztás:


about_Functions_OutputTypeAttribute

Rövid leírás

Egy attribútumot ír le, amely a függvény által visszaadott objektum típusát jelenti.

Hosszú leírás

A OutputType attribútum felsorolja a függvények által visszaadott .NET típusú objektumokat. Az opcionális ParameterSetName paraméter használatával különböző kimeneti típusokat listázhat az egyes paraméterkészletekhez.

Az OutputType attribútum egyszerű és speciális függvényeken támogatott. Független a CmdletBinding attribútumtól.

A OutputType attribútum a System.Management.Automation.FunctionInfo objektum OutputType tulajdonságának értékét adja meg, amelyet a Get-Command parancsmag visszaad.

Az OutputType attribútum értéke csak dokumentációs megjegyzés. Nem a függvénykódból származik, és nem hasonlítja össze a tényleges függvénykimenettel. Így előfordulhat, hogy az érték pontatlan.

Szemantika

A függvények OutputType attribútuma a következő szintaxist tartalmazza:

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

A ParameterSetName paraméter megadása nem kötelező.

A OutputType attribútumban több típust is felsorolhat.

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

A ParameterSetName paraméter használatával jelezheti, hogy a különböző paraméterkészletek különböző típusokat ad vissza.

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

Helyezze a OutputType attribútumutasításokat az param utasítást megelőző attribútumlistában.

Az alábbi példa a OutputType attribútum egyszerű függvényben való elhelyezését mutatja be.

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

  <function body>
}

Az alábbi példa a OutputType attribútum speciális függvényekben való elhelyezését mutatja be.

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éldák

1. példa: Karakterlánc kimeneti típusával rendelkező függvény létrehozása

function Send-Greeting
{
  [OutputType([string])]
  param ($Name)

  "Hello, $Name"
}

Az eredményként kapott kimeneti típus tulajdonság megtekintéséhez használja a Get-Command parancsmagot.

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

2. példa: Az OutputType attribútum használata a dinamikus kimeneti típusok jelzésére

Az alábbi speciális függvény a OutputType attribútum használatával jelzi, hogy a függvény a függvényparancsban használt paraméterkészlettől függően különböző típusokat ad vissza.

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. példa: Azt mutatja, hogy a tényleges kimenet mikor tér el az OutputType-tól

Az alábbi példa azt mutatja be, hogy a kimeneti típus tulajdonság értéke akkor is megjeleníti a OutputType attribútum értékét, ha az pontatlan.

A Get-Time függvény egy karakterláncot ad vissza, amely az idő rövid formáját tartalmazza bármely DateTime objektumban. A OutputType attribútum azonban azt jelenti, hogy egy System.DateTime objektumot ad vissza.

function Get-Time
{
  [OutputType([datetime])]
  param (
    [Parameter(Mandatory=$true)]
    [datetime]$DateTime
  )

  $DateTime.ToShortTimeString()
}

A GetType() metódus megerősíti, hogy a függvény sztringet ad vissza.

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

A OutputType tulajdonság azonban, amely a OutputType attribútumból kapja az értékét, azt jelenti, hogy a függvény egy DateTime objektumot ad vissza.

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

4. példa: Olyan függvény, amely nem rendelkezik kimenettel

Az alábbi példa egy egyéni függvényt mutat be, amely műveletet hajt végre, de semmit nem ad vissza.

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

Jegyzetek

Egy FunctionInfo objektum OutputType tulajdonságának értéke System.Management.Automation.PSTypeName objektumok tömbje, amelyek mindegyike Név és Típus tulajdonsággal rendelkezik.

Ha csak az egyes kimeneti típusok nevét szeretné lekérni, használjon egy alábbi formátumú parancsot.

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

Vagy rövidebb verziója.

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

A OutputType tulajdonság értéke null értékű lehet. Null értéket akkor használjon, ha a kimenet nem .NET-típus, például WMI- objektum vagy egy objektum formázott nézete.

Lásd még