我正在使用以下代码来检查位于特定 OU 中的邮箱的属性:
Get-mailbox -OrganizationalUnit "MY-OU" | Select DisplayName, CustomAttribute5 |Export-csv c:\filename.csv -nti
我找不到一种方法将查询限制为仅位于该 OU 顶层的对象,而我感兴趣的帐户就位于该顶层。如果我按现在的方式运行它,它会开始从所有子容器中提取邮箱,并在提取 1,000 个结果后结束作业。我可以只远程控制默认限制,但这意味着我要提取大约 10,000 个邮箱,而不是我实际需要审查的顶层 OU 中的几百个邮箱。
关于如何限制该请求的范围,您有什么想法吗?其他 AD 限制参数似乎对 Get-mailbox 无效(例如 searchbase/searchscope/等)。
谢谢你!
答案1
为什么不使用搜索范围从 Get-ADuser 开始,然后将其传送到 Get-Mailbox
Get-ADUser -Filter * -SearchBase 'OU=Users,DC=contoso,DC=com' -SearchScope OneLevel | ForEach {
Get-Mailbox -Identity $_.SamAccountName
}
或者...
您可以使用类似本例的方法排除您不想要的...(根据需要进行调整)
# Get all mailboxes from a main OU but exclude a few sub OUs
# https://community.spiceworks.com/topic/1955950-get-all-mailboxes-from-a-main-ou-but-exclude-a-few-sub-ous
$TargetOU = 'OU=USA,OU=NNA,DC=NMCorp,DC=Nissan,DC=Biz'
$OUExclude = @(
'NMCorp.Nissan.Biz/NNA/USA/US-Terminated Users'
'NMCorp.Nissan.Biz/NNA/USA/US-Users/Shared Mailboxes'
'NMCorp.Nissan.Biz/NNA/USA/US-Conference Rooms'
)
$CharExclude = @(
'!'
'@'
','
)
$Output = "$Path\NNA_Shared_Mailboxes_All_OUs_$( Get-Date -Format MMM.dd.yyyy ).csv"
$Mailboxes = Get-Mailbox -OrganizationalUnit $TargetOU -ResultSize Unlimited |
Where-Object {
$OUExclude -notcontains $_.OrganizationalUnit -and
$_.DisplayName -notmatch ( $CharExclude -join '|' )
} |
Select-Object -Property DisplayName, SamAccountName, RecipientType, RecipientTypeDetails, DistinguishedName,
@{ Name = "Enabled"; Expression = { ( Get-ADUser -Identity $PSItem.SamAccountName ).Enabled } } |
Export-Csv -Path $Output -NoTypeInformation -Append