about_Functions_OutputTypeAttribute
Se aplica a: Windows PowerShell 3.0
TEMA
about_Functions_OutputTypeAttribute
DESCRIPCIÓN BREVE
Describe un atributo que indica el tipo de objeto que devuelve la función.
DESCRIPCIÓN LARGA
El atributo OutputType enumera los tipos de .NET de los objetos devueltos por las funciones. Puede usar su parámetro opcional ParameterSetName par enumerar los diferentes tipos de salida de cada conjunto de parámetros.
El atributo OutputType es compatible con las funciones simples y avanzadas. Es independiente del atributo CmdletBinding.
El atributo OutputType proporciona el valor de la propiedad OutputType del objeto System.Management.Automation.FunctionInfo devuelto por el cmdlet Get-Command.
El valor del atributo OutputType es únicamente una nota de documentación. No deriva del código de función ni se compara con el resultado de la función real. Por lo tanto, el valor puede ser inexacto.
SINTAXIS
El atributo OutputType de las funciones tiene la siguiente sintaxis:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
El parámetro ParameterSetName es opcional.
Puede enumerar varios tipos en el atributo OutputType.
[OutputType([<Type1>],[<Type2>],[<Type3>])]
Puede usar el parámetro ParameterSetName para indicar que diferentes conjuntos de parámetros devuelven tipos diferentes.
[OutputType([<Type1>], ParameterSetName="<Set1>","<Set2>")]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Coloque las instrucciones del atributo OutputType en la lista de atributos que precede a la instrucción Param.
En el ejemplo siguiente se muestra la posición del atributo OutputType en una función simple.
function SimpleFunction2
{
[OutputType([<Type>])]
Param ($Parameter1)
<function body>
}
En el ejemplo siguiente se muestra la posición del atributo OutputType en las funciones avanzadas.
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>
}
EJEMPLOS
La función siguiente usa el atributo OutputType para indicar que devuelve un valor de cadena.
function Send-Greeting
{
[OutputType([String])]
Param ($Name)
Hello, $Name
}
Para ver la propiedad del tipo de salida resultante, use el cmdlet Get-Command.
PS C:\> (Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
La siguiente función avanzada usa el atributo OutputType para indicar que la función devuelve distintos tipos según el conjunto de parámetros que se usa en el comando de función.
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>
}
En el ejemplo siguiente se muestra que el valor de la propiedad del tipo de salida indica el valor del atributo OutputType, incluso cuando no es exacto.
La función Get-Time devuelve una cadena que contiene la forma abreviada del tiempo en cualquier objeto DateTime. Sin embargo, el atributo OutputType informa de que devuelve un objeto System.DateTime.
function Get-Time
{
[OutputType([DateTime])]
Param
(
[parameter(Mandatory=$true)]
[Datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
El método Get-Type confirma que la función devuelve una cadena.
PS C:\> (Get-Time -DateTime (Get-Date)).Gettype().FullName
System.String
Sin embargo, la propiedad OutputType, que obtiene su valor del atributo OutputType, informa de que la función devuelve un objeto DateTime.
PS C:\> (Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
NOTAS
El valor de la propiedad OutputType de un objeto FunctionInfo es una matriz de objetos System.Management.Automation.PSTypeName, cada uno de los cuales tiene propiedades Name y Type.
Para obtener solo el nombre de cada tipo de salida, use un comando con el formato siguiente.
(Get-Command Get-Time).OutputType | ForEach {$_.Name}
El valor de la propiedad OutputType puede ser null. Use un valor null cuando el resultado no sea un tipo .NET, como un objeto WMI o una vista con formato de un objeto.
VEA TAMBIÉN
about_Functions
about_Functions_Advanced
about_Functions_Advanced_Methods
about_Functions_Advanced_Parameters
about_Functions_CmdletBindingAttribute