Powershell pour ajouter un utilisateur O365 à une boîte aux lettres avec l'autorisation Envoyer en tant que et l'ajouter au groupe de sécurité avec un accès complet

0

Essayer de trouver un moyen d’ajouter des utilisateurs avec send en tant que droit à une boîte aux lettres et de les ajouter également avec des droits de contrôle complets sur un groupe de sécurité. Pour le moment, je le fais avec la commande ci-dessous ...

$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

Mais sachez que ce n'est pas le moyen le plus rapide, car je dois rechercher manuellement les adresses de messagerie de O365 Admin Portal. A essayé quelque chose comme le ci-dessous ...

$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

Mais cela échoue car les applets de commande ne prennent pas en charge la tuyauterie. Jolie nouvelle à Powershell, toute aide / conseil serait donc très apprécié.

modifier

Le message d'erreur reçu lors de l'exécution est ...

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

Nous avons également essayé de l'exécuter sans les objets de sélection supplémentaires à la fin et d'obtenir toujours le même résultat ...

    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  
Jim Thomas
la source
1
Où le deuxième script échoue-t-il? Pourriez-vous modifier votre question pour inclure le message d'erreur que vous recevez? Merci!
Ben N
Ouais pas de problème, ça a été ajouté.
Jim Thomas

Réponses:

0

En regardant l'exemple présenté dans la page TechNetAdd-RecipientPermission , il apparaît que vous pouvez fournir une valeur de chaîne simple pour le -Identityparamètre. il n'a pas besoin d'un objet de fantaisie. L'article indique également (dans la table des paramètres) que vous pouvez utiliser n'importe quel nom identifiant de manière unique le principal, même le nom d'affichage. La même chose vaut pour Add-DistributionGroupMember.

Par conséquent, vous n'avez pas à utiliser Get-Mailboxou Get-Groupà rechercher l'adresse de messagerie du destinataire; vous pouvez simplement utiliser votre premier script et fournir le nom lisible par l'homme.

Toutefois, si vous souhaitez utiliser ces cmdlets, vous devez extraire l'adresse de messagerie simple de l'objet à une propriété renvoyé par select. Par exemple, vous fourniriez $MailboxAccess.WindowsEmailAddressau lieu de simplement $MailboxAccess. Vous devrez peut-être même faire appel ToString()à cette valeur s'il s'agit encore d'un autre objet .NET qui ne se convertit pas automatiquement en un objet utilisable.

Ben N
la source
Cela a fonctionné un régal, Bravo Ben! Utilisez la deuxième option $ MailboxAccess.WindowsEmailAddress car, lorsque les utilisateurs le demandent, ils ne connaissent pas toujours le nom exact. Il est donc pratique de pouvoir utiliser -Anr pour effectuer une recherche.
Jim Thomas