Powershell: Write-Output -NoEnumerate genera PSObject [] en lugar de Object [] y generalmente no respeta el tipo de colección de entrada

Creado en 19 ene. 2018  ·  3Comentarios  ·  Fuente: PowerShell/PowerShell

Relacionado: # 5122

  • Write-Output -NoEnumerate , cuando se le da una colección, siempre devuelve un PSObject[] lugar de una matriz object[]] normal, lo cual es inesperado.

  • Además, esto significa que si se pasó un tipo de colección diferente, como [System.Collections.ArrayList] , _no_ se conserva.

    • Write-Output , que actualmente solo dice, "evita que Write-Output enumere la salida", que suena a que la colección de entrada, sea cual sea su tipo, simplemente se _pasó_ - una expectativa sensata de que _Windows PowerShell_ versiones hasta v5.1 de hecho honor.

Sospecho que esta regresión es una consecuencia del desafortunado # 2038 PR que surgió del número # 2035.

pasos para reproducir

(Write-Output -NoEnumerate 1, 2).GetType().Name
(Write-Output -NoEnumerate ([System.Collections.ArrayList] (1, 2))).GetType().Name

Comportamiento esperado

Object[]
ArrayList

Así es como todavía funciona en _Windows PowerShell_ v5.1

Comportamiento real

PSObject[]
PSObject[]

Como se indicó, esto afecta solo a PS _Core_.

Datos ambientales

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)
Issue-Bug Resolution-Fixed WG-Engine

Comentario más útil

¿Cómo se ha permitido que esto continúe durante tanto tiempo?

Todos 3 comentarios

Si es una regresión, es un error.

¿Cómo se ha permitido que esto continúe durante tanto tiempo?

@Jaykul Arreglando esto ahora. Después de una incursión más larga de lo necesario en los archivos de canalización, resulta que escribir sus parámetros como PSObject[] obliga a PS a enumerar cualquier colección que le arroje durante la etapa de vinculación de parámetros. Sin embargo, escribir el parámetro como PSObject funciona tanto para singletons como para colecciones.

¿Fue útil esta página
0 / 5 - 0 calificaciones