Скрипт Powershell с отсутствующими выходными данными Get-Mailbox и Get-MailboxStatistics - PullRequest
0 голосов
/ 25 июня 2018

Я использую скрипт powershell для определения размера почтовых ящиков пользователей в моем офисе 365 арендатора.Это работает почти нормально, но только для первого возвращенного элемента адрес электронной почты пользователя не отображается.В этом случае это должно быть: username1@contoso.com Но оно остается пустым

Почему?

Get-Mailbox -ResultSize Unlimited | Where {$_.EmailAddresses -like 
"*@contoso.com"} | Get-MailboxStatistics |
Select-Object -Property @{label=”User”;expression={$_.DisplayName}},
@{label="Emailaddress";e={(get-mailbox $_.legacyDN).PrimarySMTPAddress}},
@{label=”Total Messages”;expression= {$_.ItemCount}},
@{label=”Total Size (MB)”;expression={[math]::Round(`
($_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}}

Результатом является следующий вывод.Отсутствует адрес электронной почты в первой строке.

User        Emailaddress             Total Messages Total Size (MB)
----        ------------             -------------- ---------------
Username 1                                    15977         2844,87
Username 2  username2@contoso.com               546            3,41

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Чтобы прекратить получать предупреждение или ошибку, выполните следующие действия

$WarningAction ='Ignore'
$WarningAction = 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
0 голосов
/ 26 июня 2018

Вы можете использовать цикл Foreach-Object и пользовательский объект для достижения того, что вам нужно, например:

 Get-Mailbox -Filter "EmailAddresses -like '*@contoso.com'" -ResultSize Unlimited | 
    ForEach-Object{
        $Statistics = Get-MailboxStatistics -Identity $_.sAMAccountName
        [PSCustomObject]@{
            User = $_.DisplayName
            Emailaddress = $_.PrimarySMTPAddress
            'Total Messages' = $Statistics.ItemCount
            'Total Size (MB)' = [math]::Round(($Statistics.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)
        }
    }

Это может быть даже немного быстрее, потому что вам не нужно запускать свой Get-Mailbox командлет дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...