Объединение хеш-таблиц в PowerShell: как? - PullRequest
20 голосов
/ 10 января 2012

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

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

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

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" в обеих хеш-таблицах.

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

Ответы [ 11 ]

0 голосов
/ 08 сентября 2013

Мне просто нужно было сделать это, и я обнаружил, что это работает:

$HT += $HT2

Содержимое $HT2 добавляется к содержимому $HT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...