我需要一些帮助来消除哈希表中的重复条目。
代码:
$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的所有其他值。
答案 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
}
很抱歉,如果情况与您的情况不符,但您应该能够根据自己的情况进行调整。