2016-12-19 6 views
1

В моем сценарии мне нужно знать, является ли учетная запись Mail-User, Mail-Contact или лицензированной учетной записью пользователя.Как определить тип учетной записи?

В настоящее время я должен знать это заранее и передать его самому сценарию.

Есть ли лучший способ, чем это? Это только цифры между лицензированным пользователем и Mail-Contact-or-Mail-User.

#test for existing account 
function GetAccountType($whatusername){ 

    $isType = [bool](get-mailbox -identity $whatusername -ErrorAction SilentlyContinue) 
    if($isType){ 
     $thisType = "Licensed" 
    }else{ 
     $isType = [bool](get-mailuser -identity $whatusername -ErrorAction SilentlyContinue) 
     if($isType){ 
      $thisType = "Mail-Contact" 
     } 
    } 

    return $thisType 
} 

ответ

2

В RecipientTypeDetails указывает тип возвращаемых получателей.

Вы можете выбрать один из следующих значений с Get-реципиент:

  1. ArbitrationMailbox
  2. ConferenceRoomMailbox
  3. Контакт
  4. DiscoveryMailbox
  5. DynamicDistributionGroup
  6. EquipmentMailbox
  7. ExternalManagedContact
  8. ExternalManagedDistributionGroup
  9. LegacyMailbox
  10. LinkedMailbox
  11. MailboxPlan
  12. MailContact
  13. MailForestContact
  14. MailNonUniversalGroup
  15. MailUniversalDistributionGroup
  16. MailUniversalSecurityGro до
  17. MAILUSER
  18. PublicFolder
  19. RoleGroup
  20. RoomList
  21. RoomMailbox
  22. SharedMailbox
  23. SystemAttendantMailbox
  24. SystemMailbox
  25. Пользователь
  26. UserMailbox

Что я понять из Вашего случая является то, что вам нужно почтовый_ящик_пользователя, пользователя, MailUser, MailContact

я не имею в настройки обмена прямо сейчас. BUt вы можете отправиться с этим значением. Он подпадает под Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails []

+0

Это прекрасно - одна строка кода получает все - отлично. – bgmCoder

+1

Это даже получает SharedMailbox – bgmCoder

+0

Да. Это так. Я думаю, теперь вы можете написать условие, основанное на этом. Else, я буду сидеть на нем, но сначала мне нужно настроить среду для этого случая. :) –

2

Я бы, наверное, смотреть на RecipientTypeDetails получить тип почтового ящика для почтового ящика/MailContact.

Возможно, наоборот, если у вас есть больше MailContacts, то Mailboxes, чтобы оптимизировать его.

И я предполагаю, что «Лицензировано» означает «UserMailbox»? Поскольку вы не упоминаете Azure AD. В Azure AD у вас есть IsLicensed с Get-MsolUser.

function GetAccountType($user) 
{ 
    $Mailbox = Get-Mailbox -identity $user | select name, RecipientTypeDetails 
    $type = "" 
    if ($Mailbox.RecipientTypeDetails -eq "UserMailbox") 
    { 
     $type = "Licensed" 
    } 
    elseif ($Mailbox.RecipientTypeDetails -eq "SharedMailbox") 
    { 
     $type = "Shared" 
    } 
    else 
    { 
     $MailUser = Get-MailContact -identity $user | select name, RecipientTypeDetails 
     if ($MailUser.RecipientTypeDetails -eq "MailContact") 
     { 
      $type = "Mail-Contact" 
     } 
     else 
     { 
      $type = "Something else" 
     } 
    } 
    $type 
} 

$a = GetAccountType -user "userid" 
$a | Out-Host 
+0

@bgmCoder, Done. То же самое должно работать для MailContacts. – David

+0

Кроме того, 'RecipientType' возвращает' UserMailbox' как для пользователя LIcensed, так и для SharedMailbox - он не различает. Я просто протестировал его. Но обнаружение того, является ли это общим почтовым ящиком, сделает функцию идеальной. – bgmCoder

+0

@dgmCoder, хорошо. Как насчет 'RecipientTypeDetails'. Должно быть разным в зависимости от моей среды O365. – David

Смежные вопросы