我正在使用Powershell脚本来确定Office 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
答案 0 :(得分:0)
您可以使用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
cmdlet两次。
答案 1 :(得分:-1)
要停止接收警告或错误,请执行以下步骤
$WarningAction ='Ignore'
$WarningAction = 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'