Powershell错误返回哈希表

时间:2010-09-19 03:23:21

标签: powershell hashtable return

任何人都有任何想法为什么以下代码会产生错误,请参阅该函数后的其他注释以获取更多详细信息

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

错误讯息: 无法将“System.Object []”类型的“System.Object []”值转换为“System.Collections.Hashtable”类型。

我收到各种情况的错误,我试图将其缩小到一个易于重现的例子。看起来它正在将哈希表更改为对象数组,这就是为什么它不会返回它?它允许我修改哈希表并返回它但是当我尝试显示它时会改变它吗?这与我开始向被调用函数添加代码时获得的效果相同吗?

1 个答案:

答案 0 :(得分:8)

当您取消注释# $hashtable时,您将从该函数中输出两个内容。该函数的结果是它的所有“输出”,PowerShell将自动将多个输出包装到一个数组中。 return语句是一种短路方便,不应与从函数返回值的唯一方法相混淆。

相关问题