相关:#5122
Write-Output -NoEnumerate
给予集合时,总是返回PSObject[]
而不是常规的object[]]
数组,这是意外的。
此外,这意味着如果传递了诸如[System.Collections.ArrayList]
类的其他收集类型,则不会保留该类型。
Write-Output
的文档(目前仅声明“防止枚举输出是Write-Output”),听起来像输入集合(无论其类型如何)都通过了_ _明智地期望_Windows PowerShell_版本可以达到v5.1确实很荣幸。我怀疑此回归是由于问题#2035产生的命运不佳的#2038 PR造成的。
(Write-Output -NoEnumerate 1, 2).GetType().Name
(Write-Output -NoEnumerate ([System.Collections.ArrayList] (1, 2))).GetType().Name
Object[]
ArrayList
这就是它在_Windows PowerShell_ v5.1中仍然起作用的方式
PSObject[]
PSObject[]
如前所述,这仅影响PS _Core_。
PowerShell Core v6.0.0 on macOS 10.13.2
PowerShell Core v6.0.0 on Ubuntu 16.04.3 LTS
PowerShell Core v6.0.0 on Microsoft Windows 10 Pro (64-bit; v10.0.15063)
如果是回归-这是一个错误。
如何允许这种情况持续这么长时间?
@Jaykul现在修复此问题。 经过比所需时间更长的尝试之后,事实证明,将参数键入为PSObject[]
强制PS枚举在参数绑定阶段向其抛出的任何集合。 不过,将参数键入为PSObject
既可以用于单例,也可以用于集合。
最有用的评论
如何允许这种情况持续这么长时间?