Ниже приведен пример функции, которая объявляет OutputType
.
Я понимаю, что это только для целей документирования, но проблема здесь в том, что когда я вызываю PSScriptAnalyzer:
invoke-scriptanalyzer . -IncludeRule PSUseOutputTypeCorrectly
он скажет мне это:
Командлет 'Test-Function' возвращает объект типа 'System.Object []', но этот тип не объявлен в атрибуте OutputType.
function Test-Function
{
[CmdletBinding()]
[OutputType([System.Management.Automation.PSCustomObject[]])]
param ()
[PSCustomObject[]] $TestObject = @()
for ($i = 0; $i -lt 5; $i++)
{
$TestObject += [PSCustomObject]@{
Key1 = "Value1"
Key2 = "Value2"
}
}
return $TestObject
}
Вопрос в том, что я подозреваю, что это информационное сообщение является ложноположительным, но не может подтвердить.
Мне кажется, я объявил атрибут OutputType
просто отлично, а может и нет?
Зачем мне нужно указывать [OutputType([System.Object[]])]
в качестве типа вывода? если я вернусь PSCustomObject[]
?