2013-07-17 72 views
0

在PowerShell中有我,我已經從CSV導入以下信息卸下陣列重複

 
UserName   RecordDate 
@{UserName=user1; RecordDate=05/18/2013} 
@{UserName=user1; RecordDate=05/18/2012} 
@{UserName=user1; RecordDate=04/18/2013} 
@{UserName=user1; RecordDate=01/18/2013} 
@{UserName=user22; RecordDate=05/18/2013} 
@{UserName=user22; RecordDate=05/18/2012} 
@{UserName=user22; RecordDate=04/18/2013} 
@{UserName=user22; RecordDate=01/18/2013} 

我想刪除基於日期的重複的條目,只留下與項的數組在用戶名

每個用戶的最新日期謝謝!!

+0

你是如何從CSV導入?根據所做的方式,結果對象的類型可能會有所不同,過濾它們的方式也會因此而有所不同。你可以發佈你的代碼嗎? –

+0

我已將迄今爲止使用的命令添加到原帖 –

+0

請不要移動目標。如果您有新的或後續問題:發佈一個新問題。 –

回答

3

試試這個:

Import-Csv "C:\path\to\your.csv" ` 
    | select UserName, @{ 
     n='RecordDate'; 
     e={[DateTime]::ParseExact($_.RecordDate, 'MM\/dd\/yyyy', $null)} 
    } ` 
    | group UserName ` 
    | % { $_.Group | sort RecordDate -Desc | select -First 1 } 
+0

排序似乎是錯誤的,因爲日期格式是mm/dd/yyyy 我該怎麼辦呢? –

+0

這是我到目前爲止使用的命令$ settings_array = @(「Username」,「RecordDate」); $ csv = Import-Csv $ currentWorkFile |選擇$ settings_array |組用戶名| %{$ _。Group |排序RecordDate -Desc | - 第一選擇1} –

+0

領域投射到一個日期在'sort'聲明[@zdan](http://stackoverflow.com/a/17714538/1630171)(1)所建議的或解析日期字符串轉換成「select」語句中的實際日期(請參閱更新後的答案)。 –

1

你只需要你的財產轉換爲DateTime,這樣它的正確排序。只要改變那種看起來像這樣:

sort {[DateTime]$_.RecordDate}