about_Functions_OutputTypeAttribute
Krótki opis
Opisuje atrybut zgłaszający typ obiektu zwracanego przez funkcję.
Długi opis
Atrybut OutputType zawiera listę typów obiektów platformy .NET zwracanych przez funkcje. Możesz użyć opcjonalnego parametru ParameterSetName, aby wyświetlić listę różnych typów danych wyjściowych dla każdego zestawu parametrów.
Atrybut OutputType jest obsługiwany w funkcjach prostych i zaawansowanych. Jest niezależny od atrybutu CmdletBinding .
Atrybut OutputType udostępnia wartość właściwości OutputType obiektu System.Management.Automation.FunctionInfo zwracanego przez Get-Command
polecenie cmdlet.
Wartość atrybutu OutputType jest tylko notatką dotyczącą dokumentacji. Nie pochodzi on z kodu funkcji ani nie jest porównywany z rzeczywistymi danymi wyjściowymi funkcji. W związku z tym wartość może być niedokładna.
Składnia
Atrybut OutputType funkcji ma następującą składnię:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
Parametr ParameterSetName jest opcjonalny.
W atrybucie OutputType można wyświetlić wiele typów.
[OutputType([<Type1>],[<Type2>],[<Type3>])]
Możesz użyć parametru ParameterSetName , aby wskazać, że różne zestawy parametrów zwracają różne typy.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Umieść instrukcje atrybutu OutputType na liście atrybutów, które poprzedza instrukcję Param
.
W poniższym przykładzie pokazano umieszczenie atrybutu OutputType w prostej funkcji.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
W poniższym przykładzie pokazano umieszczenie atrybutu OutputType w funkcjach zaawansowanych.
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>
}
Przykłady
Przykład 1. Tworzenie funkcji z parametrem OutputType ciągu
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
"Hello, $Name"
}
Aby wyświetlić wynikowy typ danych wyjściowych, użyj Get-Command
polecenia cmdlet .
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Przykład 2. Użyj atrybutu OutputType, aby wskazać dynamiczne typy danych wyjściowych
Poniższa funkcja zaawansowana używa atrybutu OutputType , aby wskazać, że funkcja zwraca różne typy w zależności od zestawu parametrów używanego w poleceniu funkcji.
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>
}
Przykład 3. Pokazuje, kiedy rzeczywiste dane wyjściowe różnią się od parametru OutputType
W poniższym przykładzie pokazano, że wartość właściwości typu danych wyjściowych wyświetla wartość atrybutu OutputType , nawet jeśli jest niedokładna.
Funkcja Get-Time
zwraca ciąg zawierający krótką formę godziny w dowolnym obiekcie DateTime . Jednak atrybut OutputType zgłasza, że zwraca obiekt System.DateTime.
function Get-Time
{
[OutputType([DateTime])]
Param (
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
Metoda GetType()
potwierdza, że funkcja zwraca ciąg.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
Jednak właściwość OutputType , która pobiera jej wartość z atrybutu OutputType , zgłasza, że funkcja zwraca obiekt DateTime .
(Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
Przykład 4. Funkcja, która nie powinna mieć danych wyjściowych
Poniższy przykład przedstawia funkcję niestandardową, która powinna wykonać akcję, ale nie zwraca niczego.
function Invoke-Notepad
{
[OutputType([System.Void])]
Param ()
& notepad.exe | Out-Null
}
Uwagi
Wartość właściwości OutputType obiektu FunctionInfo jest tablicą obiektów System.Management.Automation.PSTypeName, z których każda ma właściwości Name i Type.
Aby uzyskać tylko nazwę każdego typu danych wyjściowych, użyj polecenia w następującym formacie.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
Lub jego krótsza wersja.
(Get-Command Get-Date).OutputType.Name
Wartość właściwości OutputType może mieć wartość null. Użyj wartości null, gdy dane wyjściowe nie są typem platformy .NET, takim jak obiekt WMI lub sformatowany widok obiektu.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla