2012-08-20 5 views
0

사용자에 대한 로그온 데이터가 포함 된 CSV 파일을 보유하고 있으며 PowerShell을 사용하여 데이터를 구문 분석하여 각 사용자에 대한 마지막 로그온을 찾습니다.특정 결과에 대해 powershell을 사용하여 CSV 파일을 구문 분석하는 방법

TimeStamp     UserName       
---------     --------       
10/14/2011 12:53:12 PM  Smith      
10/14/2011 12:54:07 PM  Jones      
10/14/2011 12:59:45 PM  Green      
10/14/2011 1:10:43 PM  Brown      
8/20/2012 6:20:11 PM  Jones      
8/20/2012 6:20:36 PM  Brown      
8/20/2012 6:33:04 PM  Smith      
8/20/2012 6:35:45 PM  Brown     
8/20/2012 6:45:05 PM  Jones     
8/20/2012 6:45:45 PM  Smith 

원하는 출력은 다음과 같습니다 :

데이터는 형식으로되어

UserName     TimeStamp       
--------     ---------       
Brown      8/20/2012 6:45:45 PM 
Green      10/14/2011 12:59:45 PM 
Jones      8/20/2012 6:45:05 PM 
Smith      8/20/2012 6:45:45 PM 

내가 행, 중첩 루프, 용액 행이 할 수 있지만 가난한 방법을 보인다 PowerShell로 접근하십시오.

나는 CSV 데이터에 읽기 및 따라서 사용자 이름과 타임 스탬프를 정렬 할 수 있습니다

$data = "\\SomePath\LastLogon.csv" 
$list = Import-Csv $data |Sort @{expression="UserName";Ascending=$true},@{expression="TimeStamp";Descending=$true} 
$list 

그러나 지금은 단지 마지막에 로그온 필터링하는 방법에 붙어 있어요. PowerShell을 사용하여이 작업을 수행 할 수있는 간단한 방법이 있습니까? 아니면 잘못된 방법을 사용하고 있습니까?

답변

2

Group-Object은 (는) 친구입니다. 먼저 타임 스탬프로 정렬 한 다음 그룹화하십시오. 캡처 된 그룹 내에서 정렬 순서를 유지하므로 첫 번째 항목을 읽을 수 있습니다.

$data = "\\SomePath\LastLogon.csv" 
Import-Csv $data | sort {[DateTime]$_.TimeStamp} -Desc | group UserName |%{ $_.Group[0] } 
관련 문제