Слияние хэш-таблиц в PowerShell: как?

Я пытаюсь объединить две хэш-таблицы, перезаписывая пары ключ-значение в первой, если тот же ключ существует во второй.

Для этого я написал функцию, которая сначала удаляет все пары ключ-значение в первой хэш-таблице, если тот же ключ существует во второй хэш-таблице.

Когда я ввожу эту функцию в PowerShell строка за строкой, она работает. Но когда я запускаю всю функцию, PowerShell просит меня предоставить (как он считает) недостающие параметры для foreach-object.

function mergehashtables($htold, $htnew)
{
    $htold.getenumerator() | foreach-object
    {
        $key = $_.key
        if ($htnew.containskey($key))
        {
            $htold.remove($key)
        }
    }
    $htnew = $htold + $htnew
    return $htnew
}

Вывод:

PS C:\> mergehashtables $ht $ht2

cmdlet ForEach-Object at command pipeline position 1
Supply values for the following parameters:
Process[0]:

$ht и $ht2 - хэш-таблицы, содержащие по две пары ключ-значение, одна из них с ключом "name" в обеих хэш-таблицах.

Что я делаю не так?

20
задан Peter Mortensen 15 July 2019 в 18:57
поделиться