Я использую следующий код для проверки атрибута в почтовых ящиках, которые находятся в определенной OU:

Get-mailbox -OrganizationalUnit "MY-OU" | Select DisplayName, CustomAttribute5 |Export-csv c:\filename.csv -nti

Я не могу найти способ ограничить запрос только объектами, которые находятся на верхнем уровне того подразделения, где находятся те учетные записи, в которых я заинтересован. Если я запускаю его как есть, он начинает извлекать почтовые ящики из всех субконтейнеров, и работа завершается после получения 1000 результатов. Я мог бы просто удалить ограничение по умолчанию, но это означало бы, что я собираю ~ 10000 почтовых ящиков против пары сотен из OU верхнего уровня, которые мне действительно нужно просмотреть.

Любые идеи о том, как ограничить объем этого запроса? Другие ограничивающие параметры AD, по-видимому, недействительны для Get-mailbox (например, searchbase/searchscope/etc.)

Спасибо!

1 ответ1

0

Почему бы не начать с 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .