Verwandte: # 5122
Write-Output -NoEnumerate
gibt bei einer Sammlung immer ein PSObject[]
und nicht ein reguläres object[]]
-Array, was unerwartet ist.
Darüber hinaus bedeutet dies, dass ein anderer Auflistungstyp wie [System.Collections.ArrayList]
nicht beibehalten wird, wenn er übergeben wurde.
Write-Output
Dokumentation von , in der derzeit nur angegeben ist, "verhindert, dass Write-Output die Ausgabe auflistet ", was so Ich vermute, diese Regression ist eine Folge der unglückseligen PR Nr. 2038, die aus der Ausgabe Nr. 2035 hervorgegangen ist.
(Write-Output -NoEnumerate 1, 2).GetType().Name
(Write-Output -NoEnumerate ([System.Collections.ArrayList] (1, 2))).GetType().Name
Object[]
ArrayList
So funktioniert es immer noch in _Windows PowerShell_ v5.1
PSObject[]
PSObject[]
Wie bereits erwähnt, betrifft dies nur 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)
Wenn es eine Regression ist, ist es ein Fehler.
Wie konnte das so lange so bleiben?
@ Jaykul Das jetzt PSObject[]
PS dazu zwingt, die Sammlung aufzulisten, die Sie während der Parameterbindungsphase darauf werfen. Die Eingabe des Parameters als PSObject
funktioniert jedoch sowohl für Singletons als auch für Sammlungen einwandfrei.
Hilfreichster Kommentar
Wie konnte das so lange so bleiben?