howto://automatically delete conversation history in Office 365


One of the most useful parts of Lync is that it automatically saves conversations in a mailbox folder called “Conversation History.” I probably refer to content in there three or four times a day-what did my boss ask for? What what that URL Tim sent me? Who did I promise to send something to? Which customer wanted to do X? When you’re a hardcore multitasker and don’t have an eidetic memory, Conversation History can be a lifesaver. But if it is in your mailbox, then it becomes discoverable, and there are some companies (or rather, some legal departments in some companies) that think users will spill the beans in an IM, so they want to make conversation history go away. IF you don’t want to save Conversation History at all, for any user, with any client, then you can use Lync Online remote PowerShell to do that. This is not that blog post.

Continue reading “howto://automatically delete conversation history in Office 365”

Why’s my 50 GB mailbox only 25 GB?

2018-01-29 edit-the same principle applies today with the 100GB mailbox limits if your are still seeing 50GB on older mailboxes.


Office 365 recently upgraded all enterprise customers mailboxes from 25 GB to 50 GB, but some users may find that they are still seeing only 25 GB of storage. If you find yourself in this situation, here’s a couple of quick fixes to set your users up for their new massive mailboxes.

Existing Users

If you have existing users whose mailboxes are still showing 25 GB limits, but you’ve been upgraded to the new 50 GB size, you just need to adjust those users. Here’s what you can do.

    1. Confirm that your mailbox databases have been upgraded. They should be by now, but best to make sure before you proceed. Open a remote PowerShell session to Office 365 and run this command
      get-mailboxplan | fl displayName, *quota
      If your quotas still show 25GB limits, open a support case.
    2. Run this command to increase the mailbox quotas for the 50 GB limits
      get-mailbox -resultsize unlimited | set-Mailbox -IssueWarningQuota 48.5GB -ProhibitSendQuota 49GB -ProhibitSendReceiveQuota 50GB
    3. Profit.

New Users

If you want to ensure that new users are automatically provisioned with the 50 GB limits, you want to update your mailbox plan defaults. You will have to do this for each mailbox plan in your tenant.

1. Remote PS to your tenant.

2. Get-MailboxPlan to get the plan(s) in your tenant.

3. Run this command, substituting your plan name. Command is one line that wraps.

set-mailboxplan ExchangeOnlineEnterprise-fdeba728-963d-40df-8ff3-9a6b7a751ab2 -IssueWarningQuota 48.5GB -ProhibitSendQuota 49GB -ProhibitSendReceiveQuota 50GB

4. Rinse and repeat if you have more than one, or you could do a “get-mailboxplan | set-mailboxplan…” to nail them all at once, as long as you don’t mind getting an error for any plans, like K, that cannot go that high. It won’t hurt anything to do it that way, but some folks hate to see red text.

And with that, you have some really big mailboxes for all your users. They won’t need to delete anything for years to come, unless of course they use their mailbox as a file system, and subscribe to every DL and newsfeed they’ve ever seen. Even then, if they want it all, they can have it all!

howto://get upns for a list of sams


I often find the need to have a list of UPNs when the only thing the customer provides me is a list of sAMAccountNames. Far too often users’ SAM and UPN don’t match, so it’s not as simple as tacking the UPN suffix onto the SAM and calling it a day. If you have a list of SAMs and you need to get UPNs, here’s two ways to do it. This assumes you have admin rights in AD, and a workstation on which you also have admin rights.

Single domain

The first way works well if you have a single domain, or just need to search a single domain.

1. Install the RSAT tools if they are not already in place. You will need the AD specific pieces.

2. Create a text file with one sAMAccountName per line. Name it users.txt.

3. Launch PowerShell and cd to the folder containing users.txt

4. Import the AD Module using this command
import-module activedirectory

5. Run this command
get-content users.txt | get-aduser | ft samaccountname, userprincipalname >userslist.txt

6. If you need to search a different domain, add the -searchscope “dc=sub,dc=example,dc=com” to the get-aduser command to specify the domain.

Entire Forest

If you want to quickly and easily search the entire forest, it’s a little more complicated.

You can do it the “low and slow” way using this. Substitute the servername for a GC in your environment, and your forest root where appropriate. This will take a LOOONGGG time to complete, but gets you there in a one liner.

$list | % {write-verbose $_ -verbose; get-aduser -ldapfilter "(samaccountname=$_)" -server gc-server1:3268
-searchbase "dc=sub,dc=example,dc=com"} | select samaccountname, userprincipalname  | export-csv .\upns.csv

Or if you are in a hurry and want to also use Excel, you can do this.

1. Run this command to just get EVERYBODY’s data.
get-aduser -ldapfilter "(samaccountname=*)" -server siladdc01:3268 -searchbase "dc=dir,dc=labor, dc=gov" | export-csv c:\scratch\allusers.csv

2. Import the data into Excel. Delete every column except the sAMAccountName and UPN, and delete all the header rows.

3. Create a new worksheet in Excel.

4. Import your source list into that.

5. Create the following formula in the next column of your second worksheet.


That will compare the sAMAccountNames in your source file to the full dump, and where it finds an exact match in column A, it will put in the UPN from column B.

howto://dump a list of users with email address and upn

I needed to dump a list of all users in a forest so that I could compare their UPN to their email address. I came up with this PS command that will connect to a GC, enumerate all users in the forest, and output a CSV that lists their displayname, emailAddress, and UPN. It will skip users with blank email or display, or accounts that are disabled.

The scriptlet assumes whoever runs it has administrative rights, and has the RSAT tools for AD installed on the machine they are using so the AD module exists. It doesn’t require anything else.

import-module activedirectory

get-aduser -filter {(EmailAddress -like “*”) -and (DisplayName -like “*”) -and (Enabled “True”)} -searchscope subtree -searchbase ‘dc=yourdomain,dc=tld‘ -properties DisplayName, EmailAddress, UserPrincipalName, proxyAddresses -server yourgc.yourdomain.tld:3268 | select-object displayname, emailaddress, userprincipalname | export-csv c:\scratch\users.csv

Make sure you change the variables in italics to match your environment. Hope this helps someone out.