获取大型邮箱,按大小和 AD 状态排序



我正在寻求社区的帮助。

我正在开发一个脚本,它将得到:

每个
  1. 用户邮箱的邮箱统计信息,将总大小转换为字节数进行排序,并获取每个邮箱数据库的前 5 个邮箱。
  2. 获取每个用户的活动目录状态(启用/禁用(

我期待如下所示的输出,但最后的 AD 字段为空

Querying Mailbox Database: DBX ......
DisplayName      ItemCount TotalItemSize                   SizeInBytes Server   AD
-----------      --------- -------------                   ----------- ------   --
abc xyz             240259 40.05 GB (43,004,724,140 bytes) 43004724140 ******
ab xyzd****         126020 33.2 GB (35,646,143,893 bytes)  35646143893 ******
ab xyzd****         126020 33.2 GB (35,646,143,893 bytes)  35646143893 ******

Powershell 脚本:

$DBlist=(Get-MailboxDatabase * | where Server -EQ "EXCHANGE_Server").Name | sort
$DB_Count = ($DBlist | Measure-Object).Count
Write-Host "`n There are $DB_Count DBs with active copy on EXCHANGE_Server: "
Write-Host " $DBlist" -NoNewline
#echo $DBlist
foreach ($DB in $DBlist)
{
Write-Host "`n Querying Mailbox Database: $DB ......"
Get-Mailbox -Database $DB | Get-MailboxStatistics -WarningAction SilentlyContinue | Select-Object -Property DisplayName,ItemCount,TotalItemSize,@{Label="SizeInBytes";Expression={$_.TotalItemSize.Value.ToString().Split('(')[1].Split(' ')[0].Replace(',','').ToInt64($null)}}, @{n='Server';e={(Get-MailboxStatistics -identity $_.DisplayName).ServerName}}, @{n='AD';e={(Get-ADUser -Filter {DisplayName -like $_.DisplayName}).Enabled}} | Sort-Object -Property SizeInBytes -Descending |Select-Object DisplayName,ItemCount,TotalItemSize,SizeInBytes,Server, AD -First 20 | ft -AutoSize
}

使用以下计算属性会有更好的运气:

@{n='AD';e={(Get-ADUser -Filter "DisplayName -eq '$($_.DisplayName)'").Enabled}}

有几个问题需要解决。

  1. 无论文档如何说明,-Filter参数值都不应是脚本块。它应该是一个双引号字符串,例如-Filter "DisplayName -like '$($_.DisplayName)'".需要内部单引号,以便在计算$($_.DisplayName)然后作为字符串放入查询时不会出现语法错误。
  2. 使用不带任何通配符的-like运算符对搜索结果没有帮助,并且比仅使用-eq效率低。
  3. 使用可展开字符串(双引号字符串(内的语法object.property对对象属性进行内插时,需要在将值转换为字符串之前计算表达式。默认情况下,没有成员访问权限的变量(如$var(会将其值转换为字符串(实际结果可能因实际$var而异(。但是,$var.property$var值转换为字符串,然后将.property追加到字符串的末尾。若要避免该行为,可以使用子表达式$()在字符串转换之前计算内部内容。这方面的一个例子是$($var.property).

最新更新