Author: Tony Redmond

Latest Articles

Practical Graph: Using PowerShell to Create and Run eDiscovery Cases

The new Purview eDiscovery implementation supports a Graph API. Where there's a Graph API, there are PowerShell cmdlets based on the API. This article explains how to use PowerShell to automate different aspects of eDiscovery cases. PowerShell can't review the items found by searches, but it can handle most of the other processing.

June 18, 2025

Practical Purview: Removing Old Items from User Calendars

A reader wants to remove all calendar items over a certain age. Compliance purge actions seem like a good way to do this, but there's a problem that needs to be fixed. eDiscovery purges can do the job, but only if you have eDiscovery Premium. And then there's Graph APIs to consider. All in all, many ways exist to purge calendar items.

June 9, 2025

Use PnP PowerShell to Find SharePoint Document Libraries with Default Sensitivity Labels

I usually reach for the Microsoft Graph PowerShell SDK when I need to automate Microsoft 365 processes. But sometimes, the Graph doesn't work. PnP PowerShell is a great tool for interacting with SharePoint Online, in this instance to check document libraries to find how many have a default sensitivity label configured. The code works, it's reasonably quick, and it's an example of how flexible PowerShell can be in dealing with Microsoft 365.

May 19, 2025

Microsoft Changes Strategy for High Volume Email

A surprise announcement brings the news that the Exchange Online High Volume Email (HVE) solution will only deliver messages to internal recipients from June 2025. Azure ECS is now the sole offering for sending large volumes of email to external recipients. On the upside, HVE will support basic authentication until September 2028 to give tenants the chance to upgrade devices and apps.

May 12, 2025

Practical Graph: Use App Management Policies to Control App Credentials

App secrets are used to authenticate registered apps with Entra ID. App secrets (or passwords) are convenient and easy to use, but they're relatively insecure. The default app management policy for the tenant can block app secrets while custom app management policies can allow selective apps to use app secrets for testing or other well-defined purposes. All explained here.

May 5, 2025

Practical Graph: Running Audit Log Searches with the AuditLog Query API

After a year or so of using the AuditLog Query Graph API, we have enough experience to be able to explain how to take advantage of the API and when it could be used to run audit searches instead of the Search-UnifiedAuditLog cmdlet. There's lots of PowerShell code in this article to give anyone who wants to experiment with the API a good start to finding audit events.

April 8, 2025

Microsoft Increases for On-Premises Licenses Coming on July 1

On April 3, Microsoft announced a 10% increase in prices for on-premises products including Exchange Server SE, SharePoint Server, and Skype for Business SE. Prices for CAL suites also increase with the Enterprise CAL increasing by 20%. The transition to the cloud means that on-premises engineering costs must be met by fewer customers, so it's higher prices all round!

April 5, 2025

Practical Graph: Figuring Out Inactive Teams Isn’t That Easy

Some people say that the Teams usage report (available in the Microsoft 365 admin center) is a great way of finding inactive teams. I consider that viewpoint to be rubbish because the Teams usage report doesn't include all the kinds of activities that a team might host. This article explains how to use audit data to supplement the usage report and create a better view of inactive teams.

March 31, 2025