Могу ли я объединить эти два массива - PullRequest
0 голосов
/ 02 июля 2018

У меня есть несколько простых написанных мной 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-адрес и какое-то случайное поле длины, а также ведущие пробелы. Если у кого-нибудь есть какие-либо идеи о том, как это исправить, я бы с удовольствием их услышал. Спасибо за ваше время.

1 Ответ

0 голосов
/ 02 июля 2018

Несколько операторов выбора были ненужными. Вот несколько упрощенный способ:

$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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...