Mailbox features
In the below code samples, the $mailboxParams variable represents properties of an Exchange mailbox. To retrieve the properties, use the IAdmExchangeMailParametersOps::GetMailParameters method.
How
[Reflection.Assembly]::LoadWithPartialName("Softerra.Adaxes.Adsi")
# Connect to the Adaxes service
$ns = New-Object "Softerra.Adaxes.Adsi.AdmNamespace"
$service = $ns.GetServiceDirectly("localhost")
# Bind to the user
$userDN = "CN=John Smith,CN=Users,DC=domain,DC=com"
$user = $service.OpenObject("Adaxes://$userDN", $null, $null, 0)
# Get Exchange properties
$mailboxParams = $user.GetMailParameters()
This code sample gets the following properties of the Outlook Web App feature for a mailbox:
- Enabled
- Policy
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Outlook Web App' feature
$owa = $mailboxParams.MailboxFeatures.GetItemByType("ADM_EXCHANGE_MAILBOXFEATURETYPE_OWA")
Write-Host "Outlook Web App:" $owa.Enabled
Write-Host "Outlook Web App policy:" $owa.Policy
This code sample gets the following properties of the Exchange ActiveSync feature for a mailbox:
- Enabled
- Policy
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Exchange ActiveSync' feature
$activeSync = $mailboxParams.MailboxFeatures.GetItemByType(
"ADM_EXCHANGE_MAILBOXFEATURETYPE_ACTIVESYNC")
Write-Host "Exchange ActiveSync:" $activeSync.Enabled
Write-Host "Exchange ActiveSync policy:" $activeSync.Policy
This code sample gets the following properties of the Unified Messaging feature for a mailbox:
- Enabled
- Locked out
- Dial plan
- Extension number
- SIP address
- E164 address
- Policy
- Personal operator extension
- Additional UM extensions
- Enable for Automatic Speech Recognition
- Allow UM calls from non-users
- Allow users to receive faxes
- Allow divert calls without caller ID to leave a message
- Allow users to configure call answering rules
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Unified Messaging' feature
$unifiedMessaging = $mailboxParams.MailboxFeatures.GetItemByType(
"ADM_EXCHANGE_MAILBOXFEATURETYPE_UNIFIEDMESSAGING")
# Enabled
Write-Host "Unified Messaging:" $unifiedMessaging.Enabled
if ($unifiedMessaging.Enabled)
{
# Locked out
$lockedOut = $unifiedMessaging.LockedOut
Write-Host "`tUnified Messaging lockout status: " -NoNewline
switch ($lockedOut)
{
"ADM_EXCHANGE_UMLOCKOUTSTATUS_UNKNOWN"
{
Write-Host "Unknown"
}
"ADM_EXCHANGE_UMLOCKOUTSTATUS_NOTLOCKEDOUT"
{
Write-Host "The mailbox is not locked out"
}
"ADM_EXCHANGE_UMLOCKOUTSTATUS_LOCKEDOUT"
{
Write-Host "The mailbox is locked out."
}
}
# Dial plan
Write-Host "`tDial plan:" $unifiedMessaging.DialPlan
# Extension number
if (-not([System.String]::IsNullOrEmpty($unifiedMessaging.ExtensionNumber)))
{
Write-Host "`tExtension number:" $unifiedMessaging.ExtensionNumber
}
# SIP address
if (-not([System.String]::IsNullOrEmpty($unifiedMessaging.SipResourceIdentifier)))
{
Write-Host "`tSIP address:" $unifiedMessaging.SipResourceIdentifier
}
# E164 address
if (-not([System.String]::IsNullOrEmpty($unifiedMessaging.E164Address)))
{
Write-Host "`tE164 address:" $unifiedMessaging.E164Address
}
# Policy
Write-Host "`tUM mailbox policy:" $unifiedMessaging.Policy
# Personal operator extension
Write-Host "`tPersonal operator extension:" $unifiedMessaging.OperatorNumber
# Additional UM extensions
$UMExtensions = $unifiedMessaging.Extensions
Write-Host "`tAdditional Unified Messaging extensions: "
for ($i = 0; $i -lt $UMExtensions.Count; $i++)
{
$UMExtension = $UMExtensions.GetAddress($i,[ref]"ADS_PROPERTY_NONE")
Write-Host "`t`t$UMExtension"
}
# Enable for Automatic Speech Recognition
Write-Host "`tEnable for Automatic Speech Recognition:" `
$unifiedMessaging.AutomaticSpeechRecognitionEnabled
# Allow UM calls from non-users
$allowUMCallsFromNonUsers = $unifiedMessaging.AllowUMCallsFromNonUsersFlag
Write-host "`tAllow UM calls from non-users: " -NoNewline
switch ($allowUMCallsFromNonUsers)
{
"ADM_EXCHANGE_ALLOWUMCALLSFROMNONUSERSFLAG_NONE"
{
Write-host "False"
}
"ADM_EXCHANGE_ALLOWUMCALLSFROMNONUSERSFLAG_SEARCHENABLED"
{
Write-host "True"
}
}
# Allow users to receive faxes
Write-Host "`tAllow users to receive faxes:" `
$unifiedMessaging.FaxEnabled
# Allow divert calls without caller ID to leave a message
Write-Host "`tAllow divert calls without caller ID to leave a message:" `
$unifiedMessaging.AnonymousCallersCanLeaveMessages
# Allow users to configure call answering rules
Write-Host "`tAllow users to configure call answering rules:" `
$unifiedMessaging.CallAnsweringRulesEnabled
}
This code sample gets the following properties of the POP3 and IMAP features for a mailbox:
- Enabled
- MIME format of messages that are retrieved from the server
# The $mailboxParams variable represents properties of an Exchange mailbox
# MIME format of messages that are retrieved from the server
Function GetMIMEFormatOfMessages($protocol)
{
Write-Host "MIME format of messages that are retrieved from the server: " -NoNewline
if ($protocol.UseProtocolDefault)
{
Write-Host "Use Protocol Default"
}
else
{
$messageFormat = $protocol.MessagesRetrievalMimeFormat
switch ($messageFormat)
{
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_TEXT"
{
Write-Host "Text"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_HTML"
{
Write-Host "HTML"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_HTMLANDALTERNATIVETEXT"
{
Write-Host "HTML and alternative text"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_ENRICHEDTEXT"
{
Write-Host "Enriched text"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_ENRICHEDTEXTANDALTERNATIVETEXT"
{
Write-Host "Enriched text and alternative text"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_BESTBODYFORMAT"
{
Write-Host "Best body format"
}
"ADM_EXCHANGE_MESSAGESRETRIEVALTYPE_TNEF"
{
Write-Host "TNEF"
}
}
}
}
# Get properties of the 'POP3' feature
$pop3 = $mailboxParams.MailboxFeatures.GetItemByType("ADM_EXCHANGE_MAILBOXFEATURETYPE_POP3")
# Enabled
Write-Host "POP3:" $pop3.Enabled
# MIME format of messages that are retrieved from the server
GetMIMEFormatOfMessages $pop3
# Get properties of the 'IMAP' feature
$imap = $mailboxParams.MailboxFeatures.GetItemByType("ADM_EXCHANGE_MAILBOXFEATURETYPE_IMAP")
# Enabled
Write-Host "IMAP:" $imap.Enabled
# MIME format of messages that are retrieved from the server
GetMIMEFormatOfMessages $imap
The following code sample determines whether the MAPI feature is enabled for a mailbox.
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the MAPI feature
$mapi = $mailboxParams.MailboxFeatures.GetItemByType("ADM_EXCHANGE_MAILBOXFEATURETYPE_MAPI")
# Enabled
Write-Host "MAPI:" $mapi.Enabled
This code sample gets the following properties of the Archiving feature for a mailbox:
- Enabled
- Archive name
- Archive quota
- Archive warning quota
- Status
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Archiving' feature
$archiving = $mailboxParams.MailboxFeatures.GetItemByType("ADM_EXCHANGE_MAILBOXFEATURETYPE_ARCHIVE")
# Enabled
Write-Host "Archiving:" $archiving.Enabled
if ($archiving.Enabled)
{
# Archive name
Write-Host "`tArchive name:" $archiving.ArchiveName
# Archive quota
if ($archiving.ArchiveQuota -ne $null)
{
$archiveQuota = $archiving.ArchiveQuota.GetGBytes()
$archiveQuota = [System.Math]::Round($archiveQuota, 4)
Write-Host "`tQuota value (GB):" $archiveQuota
}
# Archive warning quota
if ($archiving.ArchiveWarningQuota -ne $null)
{
$issueWarningQuota = $archiving.ArchiveWarningQuota.GetGBytes()
$issueWarningQuota = [System.Math]::Round($issueWarningQuota, 4)
Write-Host "`tIssue warning at (GB):" $issueWarningQuota
}
# Status
$archiveStatus = $archiving.State
Write-Host "`tArchive status: " -NoNewline
switch ($archiveStatus)
{
"ADM_EXCHANGE_ARCHIVEMAILBOX_STATE_NONE"
{
Write-Host "None"
}
"ADM_EXCHANGE_ARCHIVEMAILBOX_STATE_LOCAL"
{
Write-Host "Local archive created"
}
"ADM_EXCHANGE_ARCHIVEMAILBOX_STATE_HOSTEDPROVISIONED"
{
Write-Host "Cloud-based archive created"
}
"ADM_EXCHANGE_ARCHIVEMAILBOX_STATE_HOSTEDPENDING"
{
Write-Host "Cloud-based archive pending"
}
"ADM_EXCHANGE_ARCHIVEMAILBOX_STATE_ONPREMISE"
{
Write-Host "On-premises archive created"
}
}
}
This code sample gets the following properties of the Retention Hold feature for a mailbox:
- Enabled
- Start date
- End date
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Retention Hold' feature
$retentionHold = $mailboxParams.MailboxFeatures.GetItemByType(
"ADM_EXCHANGE_MAILBOXFEATURETYPE_RETENTIONHOLD")
# Enabled
Write-Host "Retention Hold:" $retentionHold.Enabled
if ($retentionHold.Enabled)
{
# Start date
Write-Host "`tStart date:" $retentionHold.StartDate
# End date
Write-Host "`tEnd date:" $retentionHold.EndDate
}
This code sample gets the following properties of the Litigation Hold feature for a mailbox:
- Enabled
- Start date
- Put on hold by
- Note
- URL
# The $mailboxParams variable represents properties of an Exchange mailbox
# Get properties of the 'Litigation Hold' feature
$litigationHold = $mailboxParams.MailboxFeatures.GetItemByType(
"ADM_EXCHANGE_MAILBOXFEATURETYPE_LITIGATIONHOLD")
# Enabled
Write-Host "Litigation Hold:" $litigationHold.Enabled
if ($litigationHold.Enabled)
{
# Start date
Write-Host "`tStartDate:" $litigationHold.StartDate
# Put on hold by
Write-Host "`tPut on hold by:" $litigationHold.Owner
# Note
Write-Host "`tNote:" $litigationHold.Comment
# URL
Write-Host "`tURL:" $litigationHold.Url
}
See also
- Performing Exchange tasks
- Writing ADSI scripts
- Server-side scripting
- IAdmExchangeMailParametersOps
- IAdmExchangeMailParameters
- IAdmExchangeMailboxParameters
- IAdmExchangeMailboxFeature
- IAdmExchangeMailFlowSettings
- Online script repository