2016-12-19 35 views
1

在我的腳本中,我需要知道帳戶是否爲Mail-User,Mail-Contact或許可的用戶帳戶。如何確定賬戶類型?

目前,我必須事先知道這一點,並自己提供給腳本。

有沒有比這更好的方法?這只是授權用戶和郵件聯繫人或郵件用戶之間的數字。

#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

什麼我從你的情況的理解是,你需要UserMailbox用戶mailuser的MailContact

我沒有交換的設置現在。你可以用這些值來引爆。 它屬於Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails []

+0

這很完美 - 一行代碼可以完美實現。 – bgmCoder

+1

這甚至得到SharedMailbox – bgmCoder

+0

是的。它確實..我想現在你可以寫出基於此的條件。否則我會坐在它上面,但我需要爲這種情況首先設置環境。 :) –

2

我可能會看RecipientTypeDetails以獲取郵箱/ MailContact郵箱類型。

如果你有更多的MailContacts和郵箱爲了優化它,也許會做相反的事情。

而我猜「許可」你的意思是一個UserMailbox?因爲你沒有提到Azure AD。在Azure AD中,您有IsLicensedGet-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,完成。同樣的事情應該適用於MailContacts。 – David

+0

此外,'RecipientType'爲LIcensed用戶和SharedMailbox返回'UserMailbox' - 它不區分。我只是測試它。但是發現它是否是共享郵箱會使功能更完美。 – bgmCoder

+0

@dgmCoder,好的。 'RecipientTypeDetails'如何?基於我的O365環境應該有所不同。 – David