我可以组合这两个数组吗

Can I combine these two arrays

我写了一些简单的 Exchange Powershell。我想将 UPN、显示名称、项目计数和项目大小列在一个 CSV 中。但是我只能成功地将数据推送到两个数组,然后手动组合它们。这是我的代码。

$MailBoxs = Get-Mailbox * | Select UserPrincipalName -ExpandProperty UserPrincipalName | Sort-Object UserPrincipalName
$Mailboxs2 = $MailBoxs.Where({ $_ -ne $null })
ForEach($MailBox2 in $MailBoxs2) { Get-MailboxStatistics $Mailbox2 | Sort-Object TotalItemSize –Descending | Select @{label=”User”;expression={$_.DisplayName}},@{label=”Total Size (MB)”;expression={$_.TotalItemSize.Value.ToMB()}},@{label=”Items”;expression={$_.ItemCount}} | Export-CSV "C:\T2\MailBoxSize.csv" -Append -NoTypeInformation }
ForEach($MailBox2 in $MailBoxs2) { $Mailbox2 | Export-CSV "C:\T2\MailBoxSize2.csv" -Append -NoTypeInformation }

基本上第二个 CSV 出于某种原因给了我两个字段 SMTP 地址和一些随机长度字段,它还给了我一个前导空格。如果有人对如何清理它有任何想法,我很乐意听取他们的意见。谢谢你的时间。

多个select语句是不必要的。这是一个稍微简化的方法:

$mailboxes = @(Get-Mailbox *).
    Where({$_.UserPrincipalName}) |
    Sort-Object -Property UserPrincipalName

foreach ($box in $mailboxes) {
    Get-MailboxStatistics $box.UserPrincipalName |
        Sort-Object -Property TotalItemSize -Descending |
        Select-Object -Property @(
            @{L='UPN';E={$box.UserPrincipalName}}
            @{L='User';E={$_.DisplayName}}
            @{L='Total Size (MB)';E={$_.TotalItemSize.Value.ToMB()}}
            @{L='Items';E={$_.ItemCount}}
        ) |
        Export-Csv -Path 'C:\T2\MailBoxSize.csv' -NoTypeInformation -Append
}