按导入CSV的最大数值值排序对象

lan*_*der 2 powershell exchange-server powershell-2.0 exchange-server-2010

我想要文件顶部的最大值(mailboxSize).我有一个cvs作为inport.

当我执行以下排序cmd时:

Import-Csv import.csv| Sort-Object MailboxSize,DisplayName -Descending | Export-Csv SORT.csv
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

"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"
Run Code Online (Sandbox Code Playgroud)

但是我希望这样做!

"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"
Run Code Online (Sandbox Code Playgroud)

Fro*_* F. 5

导入CSV文件时,所有属性都是string-type.您必须先将其转换MailboxSize为a int才能正确排序.尝试:

Import-Csv import.csv |
Sort-Object {[int]$_.MailboxSize}, DisplayName -Descending |
Export-Csv SORT.csv
Run Code Online (Sandbox Code Playgroud)

您还应该使用-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
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

我猜测用户名是假的,但请注意,DisplayName如果您的用户名实际上是personeXXXX是一个int ,那么同样的问题也会出现.喜欢:

persone7     27536
persone20    27536
persone13    27536
Run Code Online (Sandbox Code Playgroud)

要对它们进行排序,您必须创建一个脚本块Sort-Object或创建自己的函数来分割值并对它们进行正确排序.