关联数组排序

时间:2014-02-28 16:43:49

标签: arrays sorting powershell exchange-server-2007

这是我用来获取Exchange 2007邮箱的当前邮箱限制,配额,StorageLimitStatus和TotalItemSize的脚本。

Get-MailboxDatabase |`
    Get-Mailbox |`
    Format-Table DisplayName,IssueWarningQuota,ProhibitSendQuota,`
        @{label="TotalItemSize";expression={(get-mailboxstatistics $_).TotalItemSize.Value.ToMB()}},`
        @{label="StorageLimitStatus";expression={(Get-MailboxStatistics $_).StorageLimitStatus}} |`
    Sort-Object -Property ********

我想对两个关联数组中包含的值进行排序,例如首先按StorageLimitStatus排序,然后按TotalItemSize排序。

我对Powershell的有限理解使我无法构建正确的Sort-Object。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Format-Table会在那里引起你的问题。它只返回字符串,因此Sort-Object无法找到您要查找的内容。使用Select-Object是一个更好的选择(您可以在最后通过格式表来获取表输出):

Get-MailboxDatabase |`
    Get-Mailbox |`
    Select-Object DisplayName,IssueWarningQuota,ProhibitSendQuota,`
        @{label="TotalItemSize";expression={(get-mailboxstatistics $_).TotalItemSize.Value.ToMB()}},`
        @{label="StorageLimitStatus";expression={(Get-MailboxStatistics $_).StorageLimitStatus}} |`
    Sort-Object -Property StorageLimitStatus,TotalItemSize | Format-Table

关于排序,只需列出要排序的属性,如上例所示。

答案 1 :(得分:0)

http://technet.microsoft.com/en-us/library/hh849912.aspx: 如果指定多个属性,则首先按第一个属性对对象进行排序。如果多个对象具有第一个属性的相同值,则这些对象按第二个属性排序。

所以你可以使用:

| Sort-Object -Property StorageLimitStatus,TotalItemSize