Tubulação com o PowerShell no Office 365 Exchange e no AD local

0

Temos um domínio do AD local sincronizado com o Exchange Online no Office 365. Estou tentando usar o PowerShell para obter as informações de que preciso, mas continuo recebendo um erro e não consigo fazer com que os comandos funcionem corretamente juntos .

O que estou tentando fazer é:

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

O comando combinado do PowerShell é parecido com:

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}

Eu tentei diferentes variações, mas acabei com o seguinte erro:

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

Se eu remover a última parte (a última parte do 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}

Eu recebo a saída UserPrincipalName desejada.

Meu problema é canalizar a saída UserPrincipalName de Get-Mailbox para Get-ADObject. O motivo pelo qual estou usando o "ForEach-Object" é que ele corrigiu o problema ao canalizar do Get-ADObject para o Get-Mailbox, mas não está funcionando ao direcionar o Get-Mailbox para o Get-ADObject.

Eu tentei muitas maneiras diferentes de resolver isso, mas não obtive sucesso. Existe uma maneira de canalizar Get-Mailbox para Get-ADObject? Ou há algum outro truque que possa ser usado para obter a saída desejada? Posso fazer com que as “propriedades” retornadas da primeira consulta Get-ADObject passem pelo cmdlet Get-Mailbox e tenham essas “propriedades” disponíveis como saída para a segunda consulta Get-ADObject?

Obrigado

EDITAR:

Eu tenho o mesmo problema ao executar o seguinte exemplo:

Get-Mailbox "[email protected]" | Select-Object UserPrincipalName | Get-ADObject {(UserPrincipalName -eq $_.UserPrincipalName)} -SearchBase "DC=domain,DC=com"

É possível canalizar de GET-MAILBOX para GET-ADOBJECT ?

    
por STGdb 27.03.2014 / 18:47

1 resposta

0

O problema é que você não pode usar a variável $ _ em um filtro. O seguinte funciona bem:

get-mailbox | foreach{$upn = $_.UserPrincipalName; Get-ADObject -Filter {UserPrincipalName -like $upn}}
    
por 21.05.2014 / 14:13