Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Powershell error returning hashtable

Anyone have any ideas why the following code would produce an error, see additional comments after the function for more details

function callee    ([Hashtable]$arg0) {
    [Hashtable]$hashtable = @{}
    $hashtable = $arg0
    $hashtable.add('passed', $True)
    # $hashtable                            ######## toggle this line
    $type = $hashtable.GetType()
    Write-Host "$type"
    return $hashtable
}

function caller {
    [Hashtable]$hashtable = @{'00'='0'}
    $hashtable = callee $hashtable        ##### returns error here
    $hashtable.add('returned', $True)
    $hashtable
}
caller

error message: Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Collections.Hashtable".

I receive the error on a variety of instances, I tried to narrow it down to an example that is easy to reproduce. It looks like it is changing the hashtable to an object array and that is why it won't return it? It allows me to modify the hashtable and return it but when I try to display it it changes it? This is the same effect I get when I start adding code to the callee function?

like image 637
alphadev Avatar asked Apr 07 '26 05:04

alphadev


1 Answers

When you uncomment # $hashtable you're outputting two things from the function. The result of the function is everything 'output' from it, and PowerShell will automatically wrap multiple outputs into an array. The return statement is a short-circuit convenience and should not be confused with the only way to return a value from the function.

like image 185
Sean Fausett Avatar answered Apr 09 '26 00:04

Sean Fausett



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!