Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Содержит описание атрибута, который сообщает о типе объекта, возвращаемого функцией.
Длинное описание
Атрибут OutputType содержит типы объектов .NET, возвращаемые функциями. Вы можете использовать его необязательный параметр ParameterSetName для перечисления различных типов выходных данных для каждого набора параметров.
Атрибут OutputType поддерживается для простых и расширенных функций.
Он не зависит от атрибута КомандлетBinding . Атрибут OutputType предоставляет значение свойства OutputType объекта System.Management.Automation.FunctionInfo, возвращаемого командлетомGet-Command.
Замечание
Значение атрибута OutputType не является производным от кода функции или по сравнению с фактическими выходными данными функции. Таким образом, значение может быть неточным.
Атрибут OutputType также сообщает результатам завершения вкладки для таких ситуаций, как: Command | Select <Tab> и Command | Where <Tab>.
Синтаксис
Атрибут OutputType функций имеет следующий синтаксис:
[OutputType([<TypeLiteral>], ParameterSetName="<Name>")]
[OutputType("<TypeNameString>", ParameterSetName="<Name>")]
Параметр ParameterSetName является необязательным.
Вы можете перечислить несколько типов в атрибуте OutputType .
[OutputType([<Type1>],[<Type2>],[<Type3>])]
Параметр ParameterSetName можно использовать для указания того, что разные наборы параметров возвращают разные типы.
[OutputType([<Type1>], ParameterSetName=("<Set1>","<Set2>"))]
[OutputType([<Type2>], ParameterSetName="<Set3>")]
Поместите инструкции атрибута OutputType в список атрибутов, предшествующий инструкцииparam.
В следующем примере показано размещение атрибута OutputType в простой функции.
function SimpleFunction2
{
[OutputType([<Type>])]
param ($Parameter1)
<function body>
}
В следующем примере показано размещение атрибута OutputType в расширенных функциях.
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>
}
Примеры
Пример 1. Создание функции с типом outputType строки
function Send-Greeting
{
[OutputType([string])]
param ($Name)
"Hello, $Name"
}
Чтобы просмотреть полученное свойство типа выходных данных, используйте Get-Command командлет.
(Get-Command Send-Greeting).OutputType
Name Type
---- ----
System.String System.String
Пример 2. Использование атрибута OutputType для указания динамических типов выходных данных
Следующая расширенная функция использует атрибут OutputType , чтобы указать, что функция возвращает различные типы в зависимости от набора параметров, используемого в команде функции.
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>
}
Пример 3. Показывает, если фактические выходные данные отличаются от OutputType
В следующем примере показано, что значение свойства выходного типа отображает значение атрибута OutputType , даже если оно неточно.
Функция Get-Time возвращает строку, содержащую короткую форму времени в любом объекте DateTime . Однако атрибут OutputType сообщает, что возвращает объект System.DateTime.
function Get-Time
{
[OutputType([datetime])]
param (
[Parameter(Mandatory=$true)]
[datetime]$DateTime
)
$DateTime.ToShortTimeString()
}
Метод GetType() подтверждает, что функция возвращает строку.
(Get-Time -DateTime (Get-Date)).GetType().FullName
System.String
Однако свойство OutputType, которое получает значение из атрибута OutputType, сообщает, что функция возвращает объект DateTime.
(Get-Command Get-Time).OutputType
Name Type
---- ----
System.DateTime System.DateTime
Пример 4. Функция, которая не должна иметь выходные данные
В следующем примере показана пользовательская функция, которая должна выполнять действие, но не возвращать ничего.
function Invoke-Notepad
{
[OutputType([System.Void])]
param ()
& notepad.exe | Out-Null
}
Примечания.
Значение свойства OutputType объекта FunctionInfo представляет собой массив объектов System.Management.Automation.PSTypeName, которые имеют свойства Name и Type.
Чтобы получить только имя каждого выходного типа, используйте команду со следующим форматом.
(Get-Command Get-Date).OutputType | Select-Object -ExpandProperty Name
Или ее более короткая версия.
(Get-Command Get-Date).OutputType.Name
Значение свойства OutputType может иметь значение NULL. Используйте значение NULL, если функция не записывает выходные данные в поток success . Если функция записывает выходные данные, но не знаете тип, используйте System.Object.
См. также
PowerShell