Хеш-стол PowerShell - PullRequest
       2

Хеш-стол PowerShell

0 голосов
/ 17 ноября 2018

Мне нужна помощь для устранения повторяющихся записей в хеш-таблице.

Код:

$username=Get-Content ".\u.txt"
#$username
$fileread=Get-Content ".\lastlogon.txt"
$lastinfo=$fileread|select-string -pattern "logged off" -encoding ASCII
foreach($i in $lastinfo){
    $splitinfo=$i -split("Login ID: ")
    $dateinfo=$splitinfo[0] -split("       ")
    $finaldateinfo=$dateinfo[2] -split(" ")
    #$finaldateinfo[0]
    $userinfo=$splitinfo[1] -split(" ")
    #$userinfo[0]
    $hashinfo= @{$userinfo[0]=$finaldateinfo[0]}
    #$hashinfo
    foreach($h in $hashinfo.GetEnumerator()){
        foreach($a in $username){
            if($hashinfo.ContainsKey($a)){
                "$($hashinfo.keys):$($hashinfo.Values)"
            }
        }
    }
}

Результат:

Name      Value
----     -----
USERID 08/03/2018
USERID 09/03/2018
USERID 10/03/2018
USERID 13/03/2018
ADM 23/03/2018

Хеш-таблица выглядит следующим образом.

Мне нужно сохранить только последнюю запись USERID и исключить все остальные значения USERID.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Я немного заржавел в Powershell, но я верю, что вы можете создать словарь (хэш-таблицу) следующим образом:

$LastAccessByUser= @{}

Если исходные данные уже упорядочены, просто итерируйте их. Я не знаю имен ваших переменных, поэтому приведу только пример, предполагая, что у вас есть список с именем $ list, содержащий Items.

foreach ($item in $list.Items)
{
    $LastAccessByUser[$item.Name] = $item.Value
}

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

0 голосов
/ 17 ноября 2018

Это не может быть хеш-таблицей.Насколько я знаю, в хеш-таблице не может быть повторяющихся ключей (Name), так как это цель хеш-таблицы - возвращать значения на основе уникальных ключей.Пожалуйста, перепроверьте.

Если это массив, то

$lastmatch = $arr | where { $_.Name -match "USERID" } | select -Last 1

Добавьте приведенный выше результат в хеш-таблицу, например,

$ht.Add($lastmatch.Name,$lastmatch.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...