使用PowerShell按邮箱大小对csv out放置文件进行降序排序

时间:2018-12-08 14:43:32

标签: powershell sort-object

我有一个可以正常工作的脚本,我唯一的问题是我无法按需订购输出。

我尝试删除了排序对象CmdLet,但没有做任何更改,我也尝试了“播放”排序对象CmdLet的各种变化。

代码如下:

  $users = Import-Csv "C:\CSV Test\Alias_test.csv"

  foreach ($user in $users) {

  Get-MailboxStatistics -Identity $user.UserName |

   Select-Object @{l="User Name";e="DisplayName"},

   @{l="Mail Box Size";e="TotalItemSize"}, 

   @{l="TotalEmails?";e="itemcount"} |

   Sort-Object -Property ItemCount|

   Export-Csv "C:\CSV Test\Mailboxe_size.csv" -Append -NoTypeInformation

                             } #end of ForEach loop

csv文件如下所示:

Wrong order

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您当前的脚本有两个问题。

首先,每个用户的邮箱统计信息都是单独排序的,因此将Sort-Object语句移出循环。

第二个问题是,当您对对象进行排序时,ItemCount属性不再存在,因为您已将其重命名为TotalEmails?,因此请确保更新Property参数:

$users = Import-Csv "C:\CSV Test\Alias_test.csv"

$stats = foreach ($user in $users) {
    Get-MailboxStatistics -Identity $user.UserName |
    Select-Object @{l="User Name";e="DisplayName"},
    @{l="Mail Box Size";e="TotalItemSize"}, 
    @{l="TotalEmails?";e="itemcount"} 
} #end of ForEach loop

$Stats |Sort-Object -Property TotalEmails? |Export-Csv "C:\CSV Test\Mailboxe_size.csv" -Append -NoTypeInformation