Related: #5122
-
Write-Output -NoEnumerate, when given a collection, always returns a PSObject[] rather than a regular object[]] array, which is unexpected.
-
Additionally, this means that if a different collection type such as [System.Collections.ArrayList] was passed, it is not preserved.
Write-Output's documentation, which currently only states, "prevents Write-Output from enumerating output", which sounds like the input collection - whatever its type - is simply passed through - a sensible expectation that Windows PowerShell versions up to v5.1 indeed honor.
I suspect this regression is a consequence of the ill-fated #2038 PR that arose out of issue #2035.
Steps to reproduce
(Write-Output -NoEnumerate 1, 2).GetType().Name
(Write-Output -NoEnumerate ([System.Collections.ArrayList] (1, 2))).GetType().Name
Expected behavior
This is how it still works in Windows PowerShell v5.1
Actual behavior
As stated, this affects PS Core only.
Environment data
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)
Related: #5122
Write-Output -NoEnumerate, when given a collection, always returns aPSObject[]rather than a regularobject[]]array, which is unexpected.Additionally, this means that if a different collection type such as
[System.Collections.ArrayList]was passed, it is not preserved.Write-Output's documentation, which currently only states, "prevents Write-Output from enumerating output", which sounds like the input collection - whatever its type - is simply passed through - a sensible expectation that Windows PowerShell versions up to v5.1 indeed honor.I suspect this regression is a consequence of the ill-fated #2038 PR that arose out of issue #2035.
Steps to reproduce
Expected behavior
This is how it still works in Windows PowerShell v5.1
Actual behavior
As stated, this affects PS Core only.
Environment data