about_Functions_OutputTypeAttribute

Kısa açıklama

İşlevin döndürdüğü nesne türünü bildiren bir özniteliği açıklar.

Uzun açıklama

OutputType özniteliği, işlevlerin döndürdüğü .NET nesne türlerini listeler. Her parametre kümesi için farklı çıkış türlerini listelemek için isteğe bağlı ParameterSetName parametresini kullanabilirsiniz.

OutputType özniteliği basit ve gelişmiş işlevlerde desteklenir. CmdletBinding özniteliğinden bağımsızdır.

OutputType özniteliği, cmdlet'in döndürdüğü System.Management.Automation.FunctionInfo nesnesinin OutputType özelliğinin Get-Command değerini sağlar.

OutputType öznitelik değeri yalnızca bir belge notudur. İşlev kodundan türetilmemiştir veya gerçek işlev çıkışıyla karşılaştırılmaz. Bu nedenle, değer yanlış olabilir.

Sözdizimi

İşlevlerin OutputType özniteliği aşağıdaki söz dizimine sahiptir:

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

ParameterSetName parametresi isteğe bağlıdır.

OutputType özniteliğinde birden çok türü listeleyebilirsiniz.

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

ParameterSetName parametresini kullanarak farklı parametre kümelerinin farklı türler döndürdüğünü belirtebilirsiniz.

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

OutputType öznitelik deyimlerini deyiminden önceki Param öznitelikler listesine yerleştirin.

Aşağıdaki örnekte OutputType özniteliğinin basit bir işleve yerleştirilmesi gösterilmektedir.

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

  <function body>
}

Aşağıdaki örnek, OutputType özniteliğinin gelişmiş işlevlere yerleştirilmesini gösterir.

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

Örnekler

Örnek 1: DizeNin OutputType'ını içeren bir işlev oluşturma

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

  "Hello, $Name"
}

Sonuçta elde edilen çıkış türü özelliğini görmek için cmdlet'ini Get-Command kullanın.

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

Örnek 2: Dinamik çıkış türlerini belirtmek için OutputType özniteliğini kullanın

Aşağıdaki gelişmiş işlev, işlevin işlev komutunda kullanılan parametre kümesine bağlı olarak farklı türler döndürdüğünü belirtmek için OutputType özniteliğini kullanır.

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

Örnek 3: Gerçek çıkışın OutputType'tan ne zaman farklı olduğunu gösterir

Aşağıdaki örnek, çıktı türü özellik değerinin hatalı olsa bile OutputType özniteliğinin değerini görüntülediğini gösterir.

İşlev, Get-Time herhangi bir DateTime nesnesinde saatin kısa biçimini içeren bir dize döndürür. Ancak OutputType özniteliği bir System.DateTime nesnesi döndürdüğünü bildirir.

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

  $DateTime.ToShortTimeString()
}

yöntemi işlevin GetType() bir dize döndürdüğünü onaylar.

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

Ancak, değerini OutputType özniteliğinden alan OutputType özelliği, işlevin bir DateTime nesnesi döndürdüğünü bildirir.

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

Örnek 4: Çıkışı olmaması gereken bir işlev

Aşağıdaki örnekte, bir eylem gerçekleştirmesi ancak hiçbir şey döndürmemesi gereken özel bir işlev gösterilmektedir.

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

Notlar

FunctionInfo nesnesinin OutputType özelliğinin değeri, her biri Ad ve Tür özelliklerine sahip olan bir System.Management.Automation.PSTypeName nesneleri dizisidir.

Her çıkış türünün yalnızca adını almak için aşağıdaki biçime sahip bir komut kullanın.

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

Ya da daha kısa sürümü.

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

OutputType özelliğinin değeri null olabilir. Çıktı wmi nesnesi veya nesnenin biçimlendirilmiş görünümü gibi bir .NET türü olmadığında null değer kullanın.

Ayrıca bkz.