Ich versuche zu verstehen, warum die folgenden zwei Aussagen unterschiedliche Ergebnisse liefern:
&{,$null} | % {'x'} # x
&{,(1)[1]} | % {'x'} # no output
,$null
und ,(1)[1]
scheinen beide Arrays zu sein, die ein einzelnes Nullelement enthalten. Bei der Ausgabe eines Skriptblocks verhalten sie sich jedoch anders. Was passiert hier?
Die zweite gibt AutomationNull.Value
die von der Pipeline nicht aufgelistet werden.
$null
wird aufgezählt.
Siehe zum Beispiel die Implementierung von foreach:
https://github.com/PowerShell/PowerShell/blob/bcf86d4f8a1ce0ef11f0e9100490e790fb067574/src/System.Management.Automation/engine/runtime/Operations/MiscOps.cs#L2748
Vielen Dank an @powercode. Für andere Leser sind hier einige Ressourcen zu AutomationNull
:
@ alx9r : Dies https://github.com/PowerShell/PowerShell/issues/6436#issuecomment -375151317 in den Fokus gerückt habe, aber ich habe mich dazu entschlossen Erstellen Sie ein separates Problem dafür: # 6823