Microsoft 365

Modern Collaboration with Microsoft OneDrive, SharePoint, and Teams!

I’ve recently worked a lot with the Microsoft Cloud, specifically around productivity and Modern Collaboration. I decided to start a series of posts, and this is the second post in the series of at least four blog posts. If you haven’t read the first post in the series, I strongly encourage you to start with “What is Modern Collaboration, and how does it impact business?

The Microsoft Cloud is exceptionally vast in the number of products available. We are going to focus on the Office 365 segment of the Microsoft Cloud. Now, you will see the branding Microsoft 365 occasionally also, Microsoft 365 is a product line that includes Office 365, along with Windows licensing, and other subscription products for security and managing computers and mobile devices. Recently, Microsoft started using the Microsoft 365 branding for some small business and consumer subscription services. This article will not cover any of the consumer subscriptions. However, it is still applicable to the small business plans.

When thinking about Office 365, you need to understand that it is similar to Microsoft Office. When you purchase Microsoft Office, you get multiple pieces of software that install together as a suite of products. Office 365 is very similar. You are buying a subscription, and you get more than one product with that subscription.

What is Modern Collaboration, and how does it impact business?

Modern Collaboration, Collaboration Transformation, Technology Revolution, Technology Transformation; I’m sure you have heard one or more of these terms before. They are very common to talk about in Enterprise IT, even Microsoft’s marketing hits on the Modern Collaboration term quite heavily with their cloud offerings.

You are probably wondering, what does this all mean? How does it affect my business, and how do I get started!? Modern Collaboration is a term that Microsoft has coined for its cloud-first products to drive productivity for knowledge workers. The focus is to shift production from a workplace to a workspace.

How to check Exchange Online Distribution List activity over 30, 60, 90+ days?

All growing and/or large organizations will experience this. We have all of these Distribution Lists, but does anyone even use them or know why they were created 5, 10, 15 years ago? I recently ran into this at work, where we are trying to figure out if we can safely delete specific Distribution Lists. They have members, but most of the members have no idea they are a member, or why they would even need the email address.

As always, I start my investigation into how to do something with a quick Google Search. I stumbled upon a bunch of articles specific to Exchange on-premises, and a few items on how to see usage in the last 10 days, but nothing more. The next issue with the ones I did find for Exchange Online was only going to handle 1000 email messages, more than that, and you have to add additional parameters to the command and page through the command multiple times for more than 5000.

I knew many of these lists most likely have infrequent usage, if any at all, so 10 days wasn’t going to cut it. My resolution to this problem? Scheduled tasks, and time!

Before you can run this script, you need to make sure you install the Exchange Online Management PowerShell Module. The module is on the PowerShell Gallery.

The script itself is pretty straightforward. It would be best if you had a secure way to store your passwords that the script will use for authenticating to Office 365. My example script will only work in interactive mode, and you need to dig a bit into storing credentials securely. I would recommend checking out David Lee’s post “Using saved credentials securely in PowerShell scripts” for more information.

Connect-ExchangeOnline -UserPrincipalName user@example.com

$date = Get-Date

$fullResults = @()
$i = 1
do{
    $trace = Get-MessageTrace -Status expanded -startdate ($date).AddDays(-10) -EndDate ($date) -PageSize 5000 -Page $i| Group-Object recipientaddress | Select-Object name,count
    $fullResults += $trace
    $i++
} until($null -eq $trace)

$fileName = (Get-Date -Format "yyyy.MM.dd") + "_DLUsage.csv"
$fullResults | Export-Csv "C:\Reports$fileName" -NoTypeInformation

All you need to do is update the script to use a securely stored credential and set a scheduled task to run at the same time every 10 days. After however long you want to look at historical data, you import to an Excel spreadsheet and compare!