Exchange Powershell 将组织单位限制为顶级 OU

Exchange Powershell 将组织单位限制为顶级 OU

我正在使用以下代码来检查位于特定 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

相关内容