Обновления хэш-таблицы PowerShell применяются ко всем записям - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь обновить запись в хеш-таблице (Content, которая является массивом), где я нахожу значения, но когда я пытаюсь установить значение для $ _, оно применяется ко всем записям во всем хэше ($ hash).

$ContentArray = @($null, $null)
$Comparison | Add-Member -MemberType NoteProperty -Name "Content" -value $ContentArray

    If($GetAdvancedData -eq "true"){
    $Hash| ForEach-Object{
    If ($_.VarianceType -ne  "Missing")
            {
            $_.Item
            $id = $_.id[0]
            $elem = $_.elementName
            Write-debug "Checking $elem"
            Write-debug "Checking for version $id"
            try{
                $content = Get-VersionContent -FilteredVersionID $id
                Write-debug "Content found"
                Write-debug "$content"
                # Various tests to try and set the value:
                #ForEach ($Key in $Hash.GetEnumerator() | Where-Object {$_.id -eq $id}){$Key.Content[0] = $content}
                #$Hash.Content[0] = "$content" | Where-Object {$Hash.id[0] -eq $id}
                #$Hash.DiffType = "Content"| Where-Object {$_.id[0] -eq $id}
                # $_.content.SetValue("$content","0")
                $_.Content[0] = $content
                # Reset $content to Null
                $content = $null
                }
            catch
            {
                Write-debug "No content found"
            }
            }
        }

Я попытался установить его с помощью предложения where, основанного на другом значении ключа, используя SetValue и просто выполнив оператор =, но в каждом случае он устанавливает для содержимого всех хеш-таблиц значение $ content - Iмне кажется, что я упускаю что-то очевидное, но не понимаю, почему (если я использую PowerShell ISE и отлаживаю, $ _ возвращает только одну запись из цикла ForEach)

1 Ответ

0 голосов
/ 12 сентября 2018

Глупая ошибка -

$Hash.GetEnumerator() | Where-Object {$_.id[0] -eq $id} | foreach{$_.Content = $content,$null}

сделала свое дело для меня!

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