OutputTypeAttribute İşlevleri hakkında
Kısa açıklama
İşlevin döndürdüğü nesnenin türünü bildiren bir özniteliği açıklar.
Uzun açıklama
OutputType özelliği, işlevlerin döndürdüğü .NET nesne türlerini listeler. Her parametre seti için farklı çıkış türlerini listelemek amacıyla isteğe bağlı ParameterSetName parametresini kullanabilirsiniz.
OutputType özelliği basit ve gelişmiş işlevlerde desteklenir. CmdletBinding özelliğinden bağımsızdır.
OutputType özelliği, Get-Command<'ın sağladığı System.Management.Automation.FunctionInfo nesnesinin OutputType özelliğinin değerini sağlar. /code> cmdlet'i döndürür.
OutputType özelliğinin değeri yalnızca bir belge notudur. İşlev kodundan türetilmemiştir veya gerçek işlev çıktısıyla karşılaştırılmamıştır. Bu nedenle değer hatalı olabilir.
Sözdizimi
İşlevlerin OutputType özelliği aşağıdaki sözdizimine sahiptir:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
ParameterSetName parametresi isteğe bağlıdır.
OutputType özelliğinde birden çok türü listeleyebilirsiniz.
[OutputType([<Type1>],[<Type2>],[<Type3>])]
Farklı parametre kümelerinin farklı türler döndürdüğünü belirtmek için ParameterSetName parametresini kullanabilirsiniz.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
OutputType özellik ifadelerini, özellikler listesinde Param ifadesinin önüne yerleştirin.
Aşağıdaki örnekte OutputType özelliğinin basit bir işleve yerleştirilmesi gösterilmektedir.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
Aşağıdaki örnek, gelişmiş işlevlerde OutputType özelliğinin yerleşimini göstermektedir.
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: String'in OutputType'ına sahip bir işlev oluşturun
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
"Hello, $Name"
}
Ortaya çıkan çıktı türü özelliğini görmek için Get-Command cmdlet'ini kullanın.
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Örnek 2: Dinamik çıktı türlerini belirtmek için OutputType niteliğ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 özelliğ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 bir çıktının OutputType'tan ne zaman farklı olduğunu gösterir
Aşağıdaki örnek, çıkış türü özelliği değerinin, hatalı olsa bile OutputType özelliğinin değerini görüntülediğini gösterir.
Get-Time işlevi, herhangi bir DateTime nesnesinde saatin kısa biçimini içeren bir dize döndürür. Ancak OutputType özelliği, bir System.DateTime nesnesi döndürdüğünü bildirir.
function Get-Time
{
[OutputType([DateTime])]
Param (
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
GetType() yöntemi, işlevin bir dize döndürdüğünü doğrular.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
Ancak değerini OutputType özelliğ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 fonksiyon
Aşağıdaki örnekte, bir eylem gerçekleştirmesi gereken 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
Bir FunctionInfo nesnesinin OutputType özelliğinin değeri, her biri içeren bir System.Management.Automation.PSTypeName nesneleri dizisidir. Ad ve Tür özellikleri.
Her çıktı türünün yalnızca adını almak için aşağıdaki formatta bir komut kullanın.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
Veya daha kısa versiyonu.
(Get-Command Get-Date).OutputType.Name
OutputType özelliğinin değeri null olabilir. Çıktı, WMI nesnesi veya bir nesnenin biçimlendirilmiş görünümü gibi bir .NET türü olmadığında boş bir değer kullanın.
Ayrıca bakınız
- about_Functions
- about_Functions_Advanced
- about_Functions_Advanced_Methods
- about_Functions_Advanced_Parameters
- about_Functions_CmdletBindingAttribute