Transforms/msExchRecipientTypeDetails.ps1
|
[CmdletBinding()] param ( [Parameter()] [Switch] $FullLoad ) if($FullLoad) { # From https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin-mso_exchon-mso_o365b/recipient-type-values/7c2620e5-9870-48ba-b5c2-7772c739c651 Add-Type @' using System; public enum RecipientTypeDetails: long { UserMailbox = 0x1, LinkedMailbox = 0x2, SharedMailbox = 0x4, RoomMailbox = 0x10, EquipmentMailbox = 0x20, MailContact = 0x40, MailUser = 0x80, MailUniversalDistributionGroup = 0x100, MailNonUniversalGroup = 0x200, MailUniversalSecurityGroup = 0x400, DynamicDistributionGroup = 0x800, PublicFolder = 0x1000, SystemAttendantMailbox = 0x2000, SystemMailbox = 0x4000, MailForestContact = 0x8000, User = 0x10000, Contact = 0x20000, UniversalDistributionGroup = 0x40000, UniversalSecurityGroup = 0x80000, NonUniversalGroup = 0x100000, DisabledUser = 0x200000, MicrosoftExchange = 0x400000, ArbitrationMailbox = 0x800000, MailboxPlan = 0x1000000, LinkedUser = 0x2000000, RoomList = 0x4000000, DiscoveryMailbox = 0x8000000, RoleGroup = 1073741824, //hex does not work here RemoteUserMailbox = 2147483648, TeamMailbox = 137438953472, RemoteTeamMailbox = 274877906944, MonitoringMailbox = 549755813888, GroupMailbox = 1099511627776, RemoteRoomMailbox = 8589934592, RemoteEquipmentMailbox = 17179869184, RemoteSharedMailbox = 34359738368 } '@ } #add attributes that can be processed by this transform $SupportedAttributes = @('msExchRecipientTypeDetails') # This is mandatory definition of transform that is expected by transform architecture $codeBlock = New-LdapAttributeTransformDefinition -SupportedAttributes $SupportedAttributes $codeBlock.OnLoad = { param( [object[]]$Values ) Process { foreach($Value in $Values) { [RecipientTypeDetails].GetEnumValues().ForEach({if([Int64]$Value -eq $_) {$_}}) } } } $codeBlock.OnSave = { param( [RecipientTypeDetails[]]$Values ) Process { foreach($value in $values) { [BitConverter]::ToInt64([BitConverter]::GetBytes([Int64]$value),0) } } } $codeBlock |