У нас есть локальный домен AD, синхронизированный с Exchange Online в Office 365. Я пытаюсь использовать PowerShell для получения необходимой информации, но постоянно получаю сообщение об ошибке, и кажется, что команды не работают должным образом.

То, что я пытаюсь сделать, это:

1)  Use GET-ADOBJECT to query my local AD for any user/person object in a specific
    OU and return the UserPrincipalName
2)  Pipe the returned UserPrincipalName to the GET-MAILBOX cmdlet (Exchange Online
    in Office 365) and retrieve any mailbox where RecipientTypeDetails equals
    “SharedMailbox”.  The output will them return UserPrincipalName
3)  Pipe the returned UserPrincipalName to GET-ADOBJECT and query my local AD again
    for any object where msExchRemoteRecipientType isn’t equal to 100

Комбинированная команда PowerShell выглядит примерно так:

Get-ADObject -Filter {(objectClass -eq "User") -And (objectCategory -eq "Person")} -SearchBase “OU=Test,DC=domain,DC=com” -Properties UserPrincipalName | Select-Object UserPrincipalName | ForEach-Object{Get-Mailbox -Identity $_.UserPrincipalName} | Where-Object {$_.RecipientTypeDetails -eq "SharedMailbox"} | Select-Object UserPrincipalName | ForEach-Object {Get-ADObject -Filter {(UserPrincipalName -eq $_.UserPrincipalName)} -SearchBase "OU=Test,DC=domain,DC=com" –Properties msExchRemoteRecipientType} | Where-Object {$_.msExchRemoteRecipientType -ne 100}

Я пробовал разные варианты, но в итоге получаю следующую ошибку:

Get-ADObject : Property: 'UserPrincipalName' not found in object of type:
'System.Management.Automation.PSCustomObject'.

At line:1 char:356
+ Get-ADObject -Filter {(objectClass -eq "User") -And (objectCategory -eq "Person")} -SearchBase “OU=Test,DC=domain,DC=com” -Properties UserPrincipalName | Select-Object UserPrincipalName | ForEach-Object{Get-Mailbox -Identity $_.UserPrincipalName} | Where-Object {$_.RecipientTypeDetails -eq "SharedMailbox"} | Select-Object UserPrincipalName | ForEach-Object {Get-ADObject -Filter {(UserPrincipalName -eq $_.UserPrincipalName)} -Search Base "OU=Test,DC=domain,DC=com" –Properties msExchRemoteRecipientType} | Where-Object {$_.msExchRemoteRecipientType -ne 100}
+ CategoryInfo          : InvalidArgument: (:) [Get-ADObject], ArgumentException
+ FullyQualifiedErrorId : Property: 'UserPrincipalName' not found in object of type:
  'System.Management.Automation.PSCustomObject'.,Microsoft.ActiveDirectory.Management.Commands.GetADObject

Если я удаляю последнюю часть (последнюю часть Get-ADObject):

ForEach-Object {Get-ADObject -Filter {(UserPrincipalName -eq $_.UserPrincipalName)} -Search Base "OU=Test,DC=domain,DC=com" –Properties msExchRemoteRecipientType} | Where-Object {$_.msExchRemoteRecipientType -ne 100}

Я получаю желаемый вывод UserPrincipalName.

Моя проблема заключается в передаче вывода UserPrincipalName из Get-Mailbox в Get-ADObject. Причина, по которой я использую «ForEach-Object», заключается в том, что он исправил проблему при передаче по трубопроводу из Get-ADObject в Get-Mailbox, но он не работает при передаче по трубопроводу Get-Mailbox в Get-ADObject.

Я пробовал много разных способов решить эту проблему, но не увенчался успехом. Есть ли способ передать Get-Mailbox в Get-ADObject? Или есть какой-то другой прием, который можно использовать для получения желаемого результата? Можно ли сделать так, чтобы «свойства», возвращаемые из первого запроса Get-ADObject, «передавались через» командлет Get-Mailbox, а затем были доступны эти «свойства» в качестве выходных данных для второго запроса Get-ADObject?

Спасибо

РЕДАКТИРОВАТЬ:

У меня та же проблема при запуске следующего примера:

Get-Mailbox "john.doe@domain.com" | Select-Object UserPrincipalName | Get-ADObject {(UserPrincipalName -eq $_.UserPrincipalName)} -SearchBase "DC=domain,DC=com"

Можно ли по трубопроводу из GET-MAILBOX в GET-ADOBJECT?

1 ответ1

0

Проблема в том, что вы не можете использовать переменную $ _ в фильтре. Следующее работает отлично:

get-mailbox | foreach{$upn = $_.UserPrincipalName; Get-ADObject -Filter {UserPrincipalName -like $upn}}

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