问题
In my script I need to know whether an account is a Mail-User, Mail-Contact or licensed user account.
Presently I have to know this before-hand and supply it to the script myself.
Is there a better way than this? This only figures between a licensed user and a 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
}
回答1:
The RecipientTypeDetails specifies the type of recipients returned.
You can select from the following values with Get-Recipient:
- ArbitrationMailbox
- ConferenceRoomMailbox
- Contact
- DiscoveryMailbox
- DynamicDistributionGroup
- EquipmentMailbox
- ExternalManagedContact
- ExternalManagedDistributionGroup
- LegacyMailbox
- LinkedMailbox
- MailboxPlan
- MailContact
- MailForestContact
- MailNonUniversalGroup
- MailUniversalDistributionGroup
- MailUniversalSecurityGroup
- MailUser
- PublicFolder
- RoleGroup
- RoomList
- RoomMailbox
- SharedMailbox
- SystemAttendantMailbox
- SystemMailbox
- User
- UserMailbox
What I am understanding from your case is that you need UserMailbox, User , MailUser , MailContact
I don't have an exchange setup right now. BUt you can set off with these value. It falls under Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails[]
回答2:
I would probably look at RecipientTypeDetails to get the Mailbox type for the Mailbox/MailContact.
Maybe do the opposite if you have more MailContacts then Mailboxes in order to optimze it.
And I guess by "Licensed" you mean a UserMailbox? Since you do not mention Azure AD. In Azure AD you have IsLicensed with 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
来源:https://stackoverflow.com/questions/41228557/how-to-determine-account-type