about_Functions_OutputTypeAttribute
Descrizione breve
Descrive un attributo che segnala il tipo di oggetto restituito dalla funzione.
Descrizione lunga
L'attributo OutputType elenca i tipi .NET di oggetti restituiti dalle funzioni. È possibile usare il parametro Facoltativo ParameterSetName per elencare tipi di output diversi per ogni set di parametri.
L'attributo OutputType è supportato in funzioni semplici e avanzate. È indipendente dall'attributo CmdletBinding .
L'attributo OutputType fornisce il valore della proprietà OutputType dell'oggetto System.Management.Automation.FunctionInfo restituito dal Get-Command
cmdlet.
Il valore dell'attributo OutputType è solo una nota di documentazione. Non è derivato dal codice della funzione o confrontato con l'output effettivo della funzione. Di conseguenza, il valore potrebbe non essere accurato.
Sintassi
L'attributo OutputType delle funzioni ha la sintassi seguente:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
Il parametro ParameterSetName è facoltativo.
È possibile elencare più tipi nell'attributo OutputType .
[OutputType([<Type1>],[<Type2>],[<Type3>])]
È possibile usare il parametro ParameterSetName per indicare che i diversi set di parametri restituiscono tipi diversi.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Inserire le istruzioni dell'attributo OutputType nell'elenco di attributi che precede l'istruzione Param
.
Nell'esempio seguente viene illustrato il posizionamento dell'attributo OutputType in una funzione semplice.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
Nell'esempio seguente viene illustrato il posizionamento dell'attributo OutputType nelle funzioni avanzate.
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>
}
Esempi
Esempio 1: Creare una funzione con OutputType di String
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
"Hello, $Name"
}
Per visualizzare la proprietà del tipo di output risultante, usare il Get-Command
cmdlet .
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Esempio 2: Usare l'attributo OutputType per indicare i tipi di output dinamici
La funzione avanzata seguente usa l'attributo OutputType per indicare che la funzione restituisce tipi diversi a seconda del set di parametri usato nel comando della funzione.
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>
}
Esempio 3: Mostra quando un output effettivo è diverso da OutputType
Nell'esempio seguente viene illustrato che il valore della proprietà del tipo di output visualizza il valore dell'attributo OutputType , anche quando è impreciso.
La Get-Time
funzione restituisce una stringa che contiene la forma breve dell'ora in qualsiasi oggetto DateTime . Tuttavia, l'attributo OutputType segnala che restituisce un oggetto System.DateTime .
function Get-Time
{
[OutputType([DateTime])]
Param (
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
Il GetType()
metodo conferma che la funzione restituisce una stringa.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
Tuttavia, la proprietà OutputType , che ottiene il relativo valore dall'attributo OutputType , segnala che la funzione restituisce un oggetto DateTime .
(Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
Esempio 4: Una funzione che non deve avere output
L'esempio seguente mostra una funzione personalizzata che deve eseguire un'azione ma non restituire nulla.
function Invoke-Notepad
{
[OutputType([System.Void])]
Param ()
& notepad.exe | Out-Null
}
Note
Il valore della proprietà OutputType di un oggetto FunctionInfo è una matrice di oggetti System.Management.Automation.PSTypeName , ognuno con proprietà Name e Type .
Per ottenere solo il nome di ogni tipo di output, usare un comando con il formato seguente.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
O la sua versione più breve.
(Get-Command Get-Date).OutputType.Name
Il valore della proprietà OutputType può essere Null. Usare un valore Null quando l'output non è un tipo .NET, ad esempio un oggetto WMI o una visualizzazione formattata di un oggetto .
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per