2

我想要文件頂部的最大值(mailboxSize)。我有一個cvs作爲inport。通過Import-CSV中最大的數值對Sort-Object

當我做了以下排序CMD:

Import-Csv import.csv| Sort-Object MailboxSize,DisplayName -Descending | Export-Csv SORT.csv 

我得到以下結果:

"DisplayName","MailboxSize" 

"persone6","9941" 
"persone3","8484" 
"persone1","7008" 
"persone4","4322" 
"persone5","3106" 
"persone7","27536" 
"persone10","24253" 
"persone8","1961" 
"persone9","17076" 
"persone11","17012" 
"persone2","15351" 
"persone12","11795" 
"persone14","1156" 
"persone13","1008" 

但我想這是一個結果!

"persone7","27536" 
"persone10","24253" 
"persone9","17076" 
"persone11","17012" 
"persone2","15351" 
"persone12","11795" 
"persone6","9941" 
"persone3","8484" 
"persone1","7008" 
"persone4","4322" 
"persone5","3106" 
"persone14","1156" 
"persone13","1008" 

回答

5

當導入CSV文件時,所有屬性都是string -type。您必須先將MailboxSize投射到int,然後才能對其進行正確分類。嘗試:

Import-Csv import.csv | 
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending | 
Export-Csv SORT.csv 

你也應該使用-NoTypeInformation開關Export-CSV避免#TYPE .....線(在導出CSV文件的第一行)。

樣品:

$data = @" 
    "DisplayName","MailboxSize" 
    "persone6","9941" 
    "persone3","8484" 
    "persone1","7008" 
    "persone4","4322" 
    "persone5","3106" 
    "persone7","27536" 
    "persone10","24253" 
    "persone8","1961" 
    "persone9","17076" 
    "persone11","17012" 
    "persone2","15351" 
    "persone12","11795" 
    "persone14","1156" 
    "persone13","1008" 
"@ | ConvertFrom-Csv 

$data | 
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending | 
Export-Csv SORT.csv -NoTypeInformation 

SORT.csv

"DisplayName","MailboxSize" 
"persone7","27536" 
"persone10","24253" 
"persone9","17076" 
"persone11","17012" 
"persone2","15351" 
"persone12","11795" 
"persone6","9941" 
"persone3","8484" 
"persone1","7008" 
"persone4","4322" 
"persone5","3106" 
"persone8","1961" 
"persone14","1156" 
"persone13","1008" 

我猜的用戶名都是假的,但要注意的是,同樣的問題也適用於DisplayName如果你的用戶名實際上是personeXX其中XX是一個整數。像:

persone7  27536 
persone20 27536 
persone13 27536 

對他們來說可能是排序,你必須創建一個腳本塊爲Sort-Object或創建自己的功能分割的值,並將其正確地排序。

+0

謝謝弗羅德,結果現在正確! – lander

相關問題