2016-12-19 17 views
1

私のスクリプトでは、アカウントがMail-UserMail-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という

は、私はあなたのケースから理解していますと、あなたは私が今交換セットアップを持っていない

UserMailboxというユーザーMAILUSERMailContactが必要なことです。これらの値で調整できます。 これは、に該当します。Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails []

+0

これは完璧です - 1行のコードはすべて完璧になります。 – bgmCoder

+1

これはSharedMailboxでも取得します – bgmCoder

+0

はい。それは..私は今それに基づいて条件を書くことができると思います。そうでなければ私はそれに座るだろうが、私はこの場合最初に環境を設定する必要がある。 :) –

2

私はおそらく、メールボックス/ MailContact用メールボックスの種類を取得するためにRecipientTypeDetailsになります。

メールボックスを最適化するためにMailContactsとMailboxがある場合は逆のことがあります。

「Licensed」とは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 UserとSharedMailboxの両方に対して' UserMailbox'を返します。区別しません。私はちょうどそれをテストした。しかし、それが共有メールボックスであるかどうかを発見することは、機能を完璧にするでしょう。 – bgmCoder

+0

@dgmCoder、ah ok。 'RecipientTypeDetails'はどうですか?私のO365環境に基づいて異なる必要があります。 – David

関連する問題