【问题标题】:Can I combine these two arrays我可以合并这两个数组吗
【发布时间】:2018-12-11 01:35:32
【问题描述】:

我编写了一些简单的 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 地址和一些随机长度字段,它还给了我一个前导空格。如果有人对如何清理这个有任何想法,我很想听听他们的意见。感谢您的宝贵时间。

【问题讨论】:

    标签: arrays powershell active-directory exchange-server export-to-csv


    【解决方案1】:

    多个选择语句是不必要的。这里有一个简化的方法:

    $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
    }
    

    【讨论】:

    • 您的代码绝对干净,但它添加了我不需要的东西,而且我在解释我正在寻找的东西方面做得很差,所以我为此道歉
    • @JRN 查看我的编辑。我已更新代码以反映您在该建议中的意图。
    • 你是绅士和学者。谢谢先生,正是我需要的。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2021-10-11
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多