Powershell para adicionar o usuário do O365 a uma caixa de correio com permissão Enviar como e adicioná-los ao grupo de segurança com acesso total

0

Tentando encontrar uma maneira de adicionar usuários com envio diretamente a uma caixa de correio e também adicioná-los com direitos de controle total a um grupo de segurança. No momento estou fazendo isso com o comando abaixo ...

$User = "UserEmail"
$Mailbox = "MailboxEmail"
$MailboxAccess = "SecurityGroup"
Add-RecipientPermission -Identity $Mailbox -AccessRights SendAs -Trustee $User -Confirm:$false
Add-DistributionGroupMember -Identity $MailboxAccess -Member $User -Confirm:$false -BypassSecurityGroupManagerCheck

Mas saiba que este não é o caminho mais rápido porque tenho que encontrar manualmente os e-mails da caixa de correio do O365 Admin Portal. Estava tentando algo parecido com o abaixo ...

$User = "UserEmail"
$Mailbox = Get-Mailbox -RecipientTypeDetails SharedMailbox -Anr *MailboxName* | Select-Object PrimarySmtpAddress
$MailboxAccess = Get-Group -Anr *SecurityGroupName* | Select-Object WindowsEmailAddress
Add-RecipientPermission -Identity $Mailbox -AccessRights SendAs -Trustee $User -Confirm:$True
Add-DistributionGroupMember -Identity $MailboxAccess -Member $User -Confirm:$True -BypassSecurityGroupManagerCheck

Mas isso está falhando porque os cmdlets não oferecem suporte à tubulação. Muito novo para o Powershell, então qualquer ajuda / conselho seria muito apreciado.

Editar

A mensagem de erro recebida durante a execução é ...

PS C:\WINDOWS\System32\WindowsPowerShell\v1.0> Add-RecipientPermission -Identity
 $Mailbox -AccessRights SendAs -Trustee $User -Confirm:$True
Cannot process argument transformation on parameter 'Identity'. Cannot convert
value "@{PrimarySmtpAddress=*EmailAddress*}" to type
"Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter". Error: "Cannot
convert hashtable to an object of the following type:
Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter.
Hashtable-to-Object conversion is not supported in restricted language mode or
a Data section."
    + CategoryInfo          : InvalidData: (:) [Add-RecipientPermission], Para
   meterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Add-Recipie
   ntPermission
    + PSComputerName        : outlook.office365.com

Também tentei executá-lo sem os Select-Objects adicionais no final e ainda obter algo semelhante ...

    PS C:\WINDOWS\System32\WindowsPowerShell\v1.0> Add-RecipientPermission -Identity  
 $Mailbox -AccessRights SendAs -Trustee $User -Confirm:$True  
Cannot process argument transformation on parameter 'Identity'. Cannot convert  
value "*EmailDisplayName*" to type  
"Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter". Error: "Cannot  
convert hashtable to an object of the following type:  
Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter.  
Hashtable-to-Object conversion is not supported in restricted language mode or  
a Data section."  
    + CategoryInfo          : InvalidData: (:) [Add-RecipientPermission], Para  
   meterBindin...mationException  
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Add-Recipie  
   ntPermission  
    + PSComputerName        : outlook.office365.com  
    
por Jim Thomas 23.03.2017 / 17:51

1 resposta

0

Olhando o exemplo mostrado na página do TechNet sobre Add-RecipientPermission , parece que você pode fornecer um valor de string simples para o parâmetro -Identity ; não precisa de um objeto sofisticado. O artigo também declara (na tabela de parâmetros) que você pode usar qualquer nome que identifica exclusivamente o principal, até mesmo o nome de exibição. O mesmo vale para Add-DistributionGroupMember .

Portanto, você não precisa usar Get-Mailbox ou Get-Group para encontrar o endereço de e-mail do destinatário; você pode simplesmente usar seu primeiro script e fornecer o nome legível para humanos.

Se você quiser usar esses cmdlets, precisará obter o endereço de e-mail simples do objeto de uma propriedade retornado por select . Por exemplo, você forneceria $MailboxAccess.WindowsEmailAddress em vez de apenas $MailboxAccess . Você pode até ter que chamar ToString() nesse valor se for outro objeto .NET que não converte automaticamente para algo utilizável.

    
por 24.03.2017 / 15:28