about_Functions_OutputTypeAttribute
Kurze Beschreibung
Beschreibt ein Attribut, das den Typ des Objekts angibt, welches die Funktion zurückgibt.
Lange Beschreibung
Das OutputType-Attribut listet die .NET-Objekttypen auf, die von den Funktionen zurückgegeben werden. Sie können den optionalen Parameter "ParameterSetName" verwenden, um unterschiedliche Ausgabetypen für jeden Parametersatz auflisten.
Das OutputType-Attribut wird für einfache und erweiterte Funktionen unterstützt. Es ist unabhängig vom CmdletBinding-Attribut .
Das OutputType-Attribut stellt den Wert der OutputType-Eigenschaft des Vom Cmdlet zurückgegebenen System.Management.Automation.FunctionInfo-ObjektsGet-Command
bereit.
Der Wert des Attributs OutputType ist nur ein Dokumentationshinweis. Sie wird nicht vom Funktionscode abgeleitet oder mit der tatsächlichen Funktionsausgabe verglichen. Daher kann der Wert ungenau sein.
Syntax
Das OutputType-Attribut von Funktionen weist die folgende Syntax auf:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
Der Parameter "ParameterSetName " ist optional.
Sie können mehrere Typen im OutputType-Attribut auflisten.
[OutputType([<Type1>],[<Type2>],[<Type3>])]
Sie können den Parameter "ParameterSetName " verwenden, um anzugeben, dass unterschiedliche Parametersätze unterschiedliche Typen zurückgeben.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Platzieren Sie die OutputType-Attributanweisungen in der Attributliste, die der Param
Anweisung vorausgeht.
Das folgende Beispiel zeigt die Platzierung des OutputType-Attributs in einer einfachen Funktion.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
Das folgende Beispiel zeigt die Platzierung des OutputType-Attributs in erweiterten Funktionen.
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>
}
Beispiele
Beispiel 1: Erstellen einer Funktion mit dem OutputType von String
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
"Hello, $Name"
}
Verwenden Sie das Get-Command
Cmdlet, um die resultierende Ausgabetypeigenschaft anzuzeigen.
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Beispiel 2: Verwenden des OutputType-Attributs zum Angeben dynamischer Ausgabetypen
Die folgende erweiterte Funktion verwendet das OutputType-Attribut , um anzugeben, dass die Funktion unterschiedliche Typen zurückgibt, je nachdem, welcher Parametersatz im Funktionsbefehl verwendet wird.
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>
}
Beispiel 3: Zeigt an, wann sich eine tatsächliche Ausgabe vom OutputType unterscheidet.
Im folgenden Beispiel wird veranschaulicht, dass der Wert der Ausgabetypeigenschaft den Wert des OutputType-Attributs anzeigt, auch wenn es ungenau ist.
Die Get-Time
Funktion gibt eine Zeichenfolge zurück, die die kurze Form der Uhrzeit in einem beliebigen DateTime-Objekt enthält. Das OutputType-Attribut meldet jedoch, dass es ein System.DateTime-Objekt zurückgibt.
function Get-Time
{
[OutputType([DateTime])]
Param (
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
Die GetType()
Methode bestätigt, dass die Funktion eine Zeichenfolge zurückgibt.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
Die OutputType-Eigenschaft , die ihren Wert aus dem OutputType-Attribut abruft, meldet jedoch, dass die Funktion ein DateTime-Objekt zurückgibt.
(Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
Beispiel 4: Eine Funktion, die keine Ausgabe haben sollte
Das folgende Beispiel zeigt eine benutzerdefinierte Funktion, die eine Aktion ausführen soll, aber nichts zurückgibt.
function Invoke-Notepad
{
[OutputType([System.Void])]
Param ()
& notepad.exe | Out-Null
}
Hinweise
Der Wert der OutputType-Eigenschaft eines FunctionInfo-Objekts ist ein Array von System.Management.Automation.PSTypeName-Objekten, die jeweils Über Name- und Type-Eigenschaften verfügen.
Verwenden Sie einen Befehl mit dem folgenden Format, um nur den Namen jedes Ausgabetyps abzurufen.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
Oder seine kürzere Version.
(Get-Command Get-Date).OutputType.Name
Der Wert der OutputType-Eigenschaft kann null sein. Verwenden Sie einen NULL-Wert, wenn die Ausgabe kein .NET-Typ ist, z. B. ein WMI-Objekt oder eine formatierte Ansicht eines Objekts.