I’ve created a new Exchange user best practices summary script which you can find at:
The idea with this script is to give you a quick visual summary of your user mailboxes to ensure they conform to best practices.
When you run the script without any command line options you will see the above output. Each row is a user with their name at the end of the line. The entries on the right provide you an indication of settings status. A green dot is for good and a red X is for bad. You will see this creates a matrix of settings for each mailbox. These settings are designated by a letter (currently a through p). These letters correspond to the following settings:
a = Mailbox type: S = Shared, R = Resource, U = User
b = Enabled
c = Inactive
d = Remote PowerShell Enabled
e = Retain Deleted Items for at least 30 days
f = Deliver to Mailbox and Forward
g = Litigation Hold Enabled
h = Archive Mailbox Status
i = Auto-expanding Archive Enabled
j = Hidden From Address Lists Enabled
k = POP Enabled
l = IMAP Enabled
m = EWS Enabled
n = EWS Allow Outlook
o = EWS Allow Mac Outlook
p = Mailbox Audit Enabled
If you use the –verbose command line option, you’ll get additional information about the script operation as you see above.
If you use the –debug command line option, a log file of the script process will be created in the parent directory.
If you use the –prompt command line option, the script will wait after each user for you to press ENTER.
If you use the –select command line option, the script will prompt you to select the users you wish to display.
If you also specify any letter from, currently, a through p on the command line, those settings will not be checked by the script. Thus, specifying dhl on the command line will not check or display Remote PowerShell Enabled (setting = d), Archive Mailbox Status (setting = h) or IMAP enabled (setting = l).
(note: no d, h or l in the output)
.\o365-mx-usr-all.ps1 dhl –select
no d, h or l settings as well as prompting for selection of users to check and display.
The script requires that you are connected to Exchange Online first via PowerShell prior and this can be done using my script:
In summary then, this script when run without any command line options is designed to give you a quick reference to your user mailboxes and whether they have best practice settings enabled. You can also run the script with number of different command line options to create a log, individually select users and settings to test as well as pause after each user if desired.
I’ll continue to update and improve this script over time so make sure you follow my Office 365 GitHub repository, which you can find here:.