gpt4 book ai didi

powershell - PowerShell 中使用 PSScriptAnalyzer 的 OutputType 属性警告

转载 作者:行者123 更新时间:2023-12-02 23:33:46 25 4
gpt4 key购买 nike

Bellow 是一个示例函数,它声明 OutputType .

我知道这仅用于文档目的,但这里的问题是当我调用 PSScriptAnalyzer 时:

invoke-scriptanalyzer . -IncludeRule PSUseOutputTypeCorrectly

它会告诉我:

The cmdlet 'Test-Function' returns an object of type 'System.Object[]' but this type is not declared in the OutputType attribute.


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[] ?

最佳答案

除非另有说明,无论您return来自函数的函数由管道枚举,因此当您将任何内容分配给变量时,例如,您的 [psobject[]]将被“解包”并塞回动态大小 [object[]] .

使用 Write-Output -NoEnumerate如果要按原样返回可枚举集合:

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"
}
}

Write-Output $TestObject -NoEnumerate
}

关于powershell - PowerShell 中使用 PSScriptAnalyzer 的 OutputType 属性警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60466939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com