powershell – 将哈希表作为参数传递给PS中的函数

我在powershell脚本中遇到问题:

当我想将Hashtable传递给函数时,此哈希表不会被识别为哈希表.

function getLength(){
    param(
        [hashtable]$input
    )

    $input.Length| Write-Output
}

$table = @{};

$obj = New-Object PSObject;$obj | Add-Member NoteProperty Size 2895 | Add-Member NoteProperty Count 5124587
$table["Test"] = $obj



$table.GetType() | Write-Output ` Hashtable
$tx_table = getLength $table `Unable to convert System.Collections.ArrayList+ArrayListEnumeratorSimple in System.Collections.Hashtable

为什么?

$Input是一个automatic variable,它枚举给定的输入.

选择任何其他变量名称,它将起作用 – 尽管不一定如您所料 – 要获取散列表中的条目数,您需要检查Count属性:

function Get-Length {
    param(
        [hashtable]$Table
    )

    $Table.Count
}

当您按原样保留$Table.Count时,隐含写入输出.

此外,当您使用Param()内联声明参数时,函数名称中的()后缀是不必要的语法糖,具有零含义 – 删除它

https://stackoverflow.com/questions/30189175/passing-hashtable-as-argument-to-a-function-in-ps

转载注明原文:powershell – 将哈希表作为参数传递给PS中的函数