Prerequisites
Steps to reproduce
In an array-type-constrained variable (as in expressions in general), AutomationNull is treated like $null; e.g.:
# Note: & { } is a simple way to return the AutomationNull singleton.
# OK: no error, and $null is assigned.
[string[]] $arr = & { }
By contrast, using AutomationNull in hashtable / [pscustomobject]-based object initializers fails:
class Example {
[string[]]$LogMessage
}
$automationNull = & {}
# !! BREAKS: "Unable to cast object of type 'System.Management.Automation.PSObject' to type 'System.String[]'"
[Example] @{ 'LogMessage' = $automationNull }
# !! BREAKS differently: ""Type 'System.String[]' does not have a default constructor (Parameter 'type')""
[Example] [pscustomobject] @{ 'LogMessage' = $automationNull }
That the [pscustomobject]-based initialization breaks differently is surprising, and reminiscent of #19384 (comment)
Expected behavior
Two [Example] instances should be constructed, with $null in the .LogMessage property.
Actual behavior
Both initializations fail, albeit differently:
InvalidArgument: /path/to/script.ps1:13
Line |
13 | [Example] @{ 'LogMessage' = $automationNull }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot create object of type "Example". Unable to cast object of type 'System.Management.Automation.PSObject' to type 'System.String[]'.
InvalidArgument: /path/to/script.ps1:16
Line |
16 | [Example] [pscustomobject] @{ 'LogMessage' = $automationNull }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot convert value "@{LogMessage=}" to type "Example". Error: "Type 'System.String[]' does not have a default constructor (Parameter 'type')"
Error details
Environment data
PowerShell 7.4.0-preview.2
Visuals
No response
Prerequisites
Steps to reproduce
In an array-type-constrained variable (as in expressions in general), AutomationNull is treated like
$null; e.g.:By contrast, using AutomationNull in hashtable /
[pscustomobject]-based object initializers fails:That the
[pscustomobject]-based initialization breaks differently is surprising, and reminiscent of #19384 (comment)Expected behavior
Two
[Example]instances should be constructed, with$nullin the .LogMessage property.Actual behavior
Both initializations fail, albeit differently:
Error details
See above.Environment data
Visuals
No response