哈希表PowerShell

时间:2018-11-17 09:16:37

标签: powershell

我需要一些帮助来消除哈希表中的重复条目。

代码:

$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 :(得分:1)

这不能是哈希表。据我所知,哈希表中不能有任何重复的键(名称),因为这是哈希表的目的-基于唯一键返回值。请重新检查。

如果这是一个数组,

KtVisitor

将上述结果添加到哈希表中,例如

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

答案 1 :(得分:1)

我对Powershell有点生疏,但我相信您可以像这样创建字典(哈希表):

$LastAccessByUser= @{}

假设您的源数据已订购,则简单地对其进行迭代。我不知道您的变量名,所以我仅提供一个示例,假设您有一个名为$ list的列表,其中包含Items。

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

很抱歉,如果情况与您的情况不符,但您应该能够根据自己的情况进行调整。