about_Functions_OutputTypeAttribute
Korte beschrijving
Beschrijft een kenmerk dat het type object rapporteert dat door de functie wordt geretourneerd.
Lange beschrijving
Het kenmerk OutputType bevat de .NET-typen objecten die door de functies worden geretourneerd. U kunt de optionele parameter ParameterSetName gebruiken om verschillende uitvoertypen voor elke parameterset weer te geven.
Het kenmerk OutputType wordt ondersteund voor eenvoudige en geavanceerde functies. Het is onafhankelijk van het cmdletBinding-kenmerk .
Het kenmerk OutputType biedt de waarde van de eigenschap OutputType van het object System.Management.Automation.FunctionInfo die door de Get-Command
cmdlet wordt geretourneerd.
De waarde van het kenmerk OutputType is alleen een documentatienotitie. Deze is niet afgeleid van de functiecode of vergeleken met de werkelijke functie-uitvoer. Als zodanig kan de waarde onnauwkeurig zijn.
Syntaxis
Het kenmerk OutputType van functies heeft de volgende syntaxis:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
De parameter ParameterSetName is optioneel.
U kunt meerdere typen weergeven in het kenmerk OutputType .
[OutputType([<Type1>],[<Type2>],[<Type3>])]
U kunt de parameter ParameterSetName gebruiken om aan te geven dat verschillende parametersets verschillende typen retourneren.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Plaats de outputType-kenmerkinstructies in de lijst met kenmerken die voorafgaan aan de Param
instructie.
In het volgende voorbeeld ziet u de plaatsing van het kenmerk OutputType in een eenvoudige functie.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
In het volgende voorbeeld ziet u de plaatsing van het kenmerk OutputType in geavanceerde functies.
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>
}
Voorbeelden
Voorbeeld 1: Een functie maken met het OutputType van tekenreeks
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
"Hello, $Name"
}
Gebruik de cmdlet om de resulterende eigenschap van het uitvoertype weer te Get-Command
geven.
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Voorbeeld 2: het kenmerk OutputType gebruiken om dynamische uitvoertypen aan te geven
De volgende geavanceerde functie gebruikt het kenmerk OutputType om aan te geven dat de functie verschillende typen retourneert, afhankelijk van de parameterset die in de functieopdracht wordt gebruikt.
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>
}
Voorbeeld 3: Toont wanneer een werkelijke uitvoer verschilt van het OutputType
In het volgende voorbeeld ziet u dat de eigenschapswaarde van het uitvoertype de waarde van het kenmerk OutputType weergeeft, zelfs wanneer deze onjuist is.
De Get-Time
functie retourneert een tekenreeks die de korte vorm van de tijd in een DateTime-object bevat. Het kenmerk OutputType rapporteert echter dat het een System.DateTime-object retourneert.
function Get-Time
{
[OutputType([DateTime])]
Param (
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
De GetType()
methode bevestigt dat de functie een tekenreeks retourneert.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
De eigenschap OutputType, die de waarde ophaalt uit het kenmerk OutputType, rapporteert echter dat de functie een DateTime-object retourneert.
(Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
Voorbeeld 4: Een functie die geen uitvoer mag hebben
In het volgende voorbeeld ziet u een aangepaste functie die een actie moet uitvoeren, maar niets retourneert.
function Invoke-Notepad
{
[OutputType([System.Void])]
Param ()
& notepad.exe | Out-Null
}
Opmerkingen
De waarde van de eigenschap OutputType van een FunctionInfo-object is een matrix van System.Management.Automation.PSTypeName-objecten, die elk de eigenschappen Name en Type hebben.
Als u alleen de naam van elk uitvoertype wilt ophalen, gebruikt u een opdracht met de volgende indeling.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
Of de kortere versie.
(Get-Command Get-Date).OutputType.Name
De waarde van de eigenschap OutputType kan null zijn. Gebruik een null-waarde als de uitvoer geen .NET-type is, zoals een WMI-object of een opgemaakte weergave van een object.
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor