Stopping Copilot Access to SharePoint Online Sites and Document Libraries

Two methods exist to exclude a SharePoint sites from Copilot being able to use its contents – you can exclude the site (or document library) from search results or use sensitivity labels. Given the choice, sensitivity labels are more flexible and powerful, but removing sites from search indexes is easier to implement.

Why You Should Not Upgrade to Microsoft Graph PowerShell SDK V2.14

Usually, we recommend that Microsoft 365 tenants use the latest version of the Microsoft Graph PowerShell SDK. However, a serious bug in V2.14 means that this (and perhaps V2.13.1) should be avoided until Microsoft fixes a problem that causes spurious output to be included when cmdlets like Get-MgUser and Get-MgGroup are run.

Problems Retrieving SharePoint Online Usage Data with Graph APIs

A longstanding problem (SP676147) open since September 2023 causes problems retrieving important SharePoint usage data like site URLs and user activity data. The problem shows up in the usage reports section of the Microsoft 365 admin center and affects any attempt to fetch SharePoint usage data via Graph API requests. It’s odd that the problem has lasted so long.

Office 365 for IT Pros eBook Team Welcomes Michel de Rooij

The Office 365 for IT Pros team welcomes Michel de Rooij as a new author. As a PowerShell Pro, he’ll like the code to update the impersonation protection list for anti-phishing policies. Or maybe he’ll rewrite it to make the code better. Either way, we win and the Mail Flow chapter should get a new lease of life.

Copilot for Microsoft 365 to Support Outlook Classic

Microsoft originally said that Copilot for Microsoft would only support the Monarch client. Now it turns out the Outlook Win32 Copilot support is coming. No formal announcement is available and Microsoft hasn’t shared when the support will turn up in an Office channel, but it’s good news that this deployment blocker is no more. And Teams has a new Copilot experience, so things are moving in the world of AI-powered assistants.

Tracking Licensing Costs for Microsoft 365 Tenants

The latest version of the Microsoft 365 Licensing Report script includes code to generate cost analyses for the departments and countries assigned to user accounts. Everything works well if the properties of Entra ID user accounts are complete and accurate. Sometimes this isn’t so, and that leads to problems when attributing costs at a department or country level.

Checking Out Entra Identity Secure Score

If your Microsoft 365 tenant has Entra P2 licenses, you can use the Entra Identity Secure Score feature to measure your tenant against Microsoft benchmarks and recommendations, including expiring app credentials. The fact that credentials expire is one of the reasons why I don’t use apps as much any more. Using the Microsoft Graph PowerShell SDK is just easier.

Why MFA, Conditional Access, and Sensitivity Labels can Combine to Give Outlook a Problem

If conditional access policies impose MFA for all cloud apps, it gives external users a problem when they use Outlook desktop to read protected email. The issue is because Outlook can’t obtain a use license to decrypt the content because it can’t satisfy the MFA challenge. It’s an example of how two good parts of the Microsoft 365 ecosystem clash.

How Many Message Center Announcements End Up Being Delayed?

This article describes how to use the Microsoft Graph PowerShell SDK to retrieve and interpret Microsoft 365 message center posts with the intention of discovering what percentage of announcemengts end up being delayed (not being available at the predicted date). Teams makes lots of feature announcements and over 57% of those announcements are delayed.

Teams Users Can Hide the General Channel

Message center notification MC711019 covers the ability to hide the General channel for a team, a feature designed to free up space in the teams and channels list. Team members (including guests) can decide if they want to see the General channel in their list. Because teams can have up to 1,000 channels, being able to hide the General channel is a useful change.

Use the Graph SDK to Access Microsoft 365 Service Health Information

The Microsoft Graph includes the Service Communications API. SDK cmdlets can use the API to retrieve and work with service health data. In this article, we show how to use Graph SDK cmdlets (based on the API) to fetch and work with service health data, including creating an email report to update people about the current state of tenant health.

Reporting App Permissions Used by Managed Identities

This article explains how to check Managed Identity permissions, or rather the set of consented Graph and other permissions held by the service principals used for managed identities. These can become highly permissioned over time, and that’s why checking periodically is a good idea.

New MSIdentityTools Cmdlet to Report OAuth Permissions

The latest version of the MSIndentityTools PowerShell module includes the Export-MsIdAppConsentGrantReport cmdlet to generate a report of OAuth app permissions. Allied with the ImportExcel module, the cmdlet can produce a very nice workbook containing lots of information about permissions held by the apps in a tenant. But even better, you can export the data to PowerShell and use it in your scripts.

How to Hide Individual Distribution List Members

A question asked if it’s possible to hide individual distribution list members. It’s easy to hide the complete membership but not as simple to hide just a few. However, an old technique dating back to the early days of Exchange Server works. Sometimes the old tricks are the best!

Office 365 for IT Pros February 2024 Update

The February 2024 update for the Office 365 for IT Pros eBook (monthly update #104) is now available for download. Lots happened during January in terms of breakthrough announcements, hacks, new features, and deprecated functionality. All grist to the mill for a book that’s been through 104 monthly updates.

Microsoft Cloud Revenues Powered by Office 365

Office 365 Reaches 400 million. Well, to be precise, in their FY24 Q2 results, Microsoft said that the figure is “over 400 million paid seats,” but who’s going to quibble with the ongoing success that Office 365 has had in adding users over many years. Not much was learned about the financial impact of Copilot. We’ll have to wait to see how that plays out.

Graph User.ReadBasic.All Application Permission Available

The Graph User.ReadBasic.All permission is now available for both delegated and application usage. Think before rushing to use the permission. Although the permission does what it sets out to do, the restriction on filtering means that many scenarios need the full User.Read.All permission.

Microsoft Deprecates Old Exchange Audit Search Cmdlets

A January 26 post announces the deprecation of four old Exchange audit cmdlets in favor of the Search-UnifiedAuditLog cmdlet. Removing old cmdlets is fine, but it would be nice if Microsoft took the opportunity to make Search-UnifiedAuditLog work better. Too many inconsistencies exist in how workloads provide information in audit events and Microsoft has made some recent unannounced changes.

Exchange Online Optimizes Online Address Book Lookups

Microsoft is changing the way that Exchange Online address book updates work to force users to use search rather than browsing through the GAL/OAB. That’s fine and should improve things. When playing with finding how many items are in the GAL, I found that the Get-MgDomainNameReference cmdlet appears to have some issues. First, it can only return up to 999 items, which isn’t a lot when you’re dealing with users and groups that have a connection to a domain. Second, it doesn’t return a nextlink, so you can never fetch all available items. It just goes to prove that Microsoft Graph PowerShell SDK cmdlets are at the mercy of the underlying APIs.

How to Use PowerShell to Retrieve Permissions for Entra ID Apps

Recent attacker activity made me think that access might have been gained through an OAuth app. Keeping an eye on app permissions is important. From a PowerShell perspective, it is reasonably straightforward to retrieve details of app permissions using the Microsoft Graph PowerShell SDK. Several methods are available to do the job.

Teams Retires Client Ability to Load Websites from Channel Tabs

Microsoft plans to change the way that the Teams website channel tab works in early April 2024. Instead of the client opening a site, a new browser tab opens. Microsoft says that the change better aligns with best practice for web security and privacy. Even so, it creates an administrative challenge to find what teams have website channel tabs that might need to be adjusted. Fortunately, we have a script to do just that.

Copilot for Teams Extracts Real Value from Meeting Transcripts

Lots of hype surrounds Copilot for Microsoft 365, but I like the way that Copilot for Teams extracts real value from meeting transcripts to generate meeting notes. Even better, Copilot for Teams allows meeting participants to interrogate the transcript to find questions asked and answered (or not) among other capabilities. It’s one of the most obvious ways to extract value from Copilot.

Microsoft Encourages More Performant Membership Rules for Dynamic Groups

MC705357 (9 Jan 2024) says that the dynamic group rule builder in the Entra ID and Intune admin centers no longer supports the contains and notContains operators. There’s no real cause to worry because existing rules continue to work and if you need to use contains or notContains in a membership rule, you can edit the rule manually.

Ignore the Hype Surrounding the Copilot Announcement

Microsoft’s January 15 announcement reduced deployment costs and opened the possibility for Copilot for Microsoft 365 deployments to many Office 365 tenants. Reducing costs is great, but just because Copilot for Microsoft 365 is now available to many more tenants doesn’t mean that it is a silver bullet to address all IT woes.

How to Report Expiring Credentials for Entra ID Apps

Entra ID registered apps can authenticate using app secrets and certificates. These credentials expire over time, so it’s good to review app credential expiration dates periodically. This article explains how to use the Microsoft Graph PowerShell SDK to generate a report about app credential expiration dates to allow tenant administrators to manage registered apps a little better…

How to Stop Users Receiving Document Mismatch Notifications

Document mismatch notifications tell users when they apply a higher-priority sensitivity label to documents than applied to the site. Some organizations don’t like these messages because they think the notifications confuse recipients. In this article, we discuss how to use a mail flow rule to redirect the messages to an address who can help people understand how to use sensitivity labels.

Mastering Microsoft Graph PowerShell SDK Foibles

Entra ID supports user extension attributes but the same facility is unavailable for group objects. That seems strange, but it might be due to the way that Entra ID thinks about group object. In any case, it’s an inconsistency that Microsoft should address. Also covered is how to report problems with Graph SDK cmdlets and a new function to help you understand the permissions needed to run a script.

Interpreting Audit Events for the New Stream

Audit events generated for the new Stream look like any other SharePoint Online event. Extracting the Stream audit events takes a little more effort than before when Stream classic generated its own dedicated set of events. In this article, we examine the advanced Stream audit events that are apparently coming to Purview Audit standard customers and how to extract the Stream audit events from the unified audit log.

Recent Stream Updates Enhance Video Functionality

The Stream browser app has received a bunch of recent enhancements, some of which are still deploying to tenants. The changes make it easier for Microsoft 365 tenants work with video. While investigating recent changes, we found some stuff that works well and some limitations that we never knew about before.

How to Share Contact Information in Teams Chat

A new Share Someone’s Contact Info feature is available for Teams one-to-one and group chats. The option inserts a link to the person’s profile card in a chat message. Contact information can only be shared for members of the tenant (guests are unsupported). It’s a small but useful addition to Teams chat.

Microsoft Attempts to Retire Search-Mailbox Again

In message center notification MC703706 Microsoft announces yet another attempt to retire the Search-Mailbox cmdlet. This time it’s due to happen in March 2024. I don’t mind Microsoft removing old technology from its products, but it’s important that the old functionality is replaced by newer, better technology. And that’s not the case here. At least, not so far.

Creating Viva Engage Communities with the Graph API

A new beta Graph API supports the creation of a Viva Engage community. This article explains how to use the Graph SDK to create a new community with the API. It’s the start on the transition from the old Yammer APIs to fully embrace the Graph API.

Don’t Feed Large Reference Documents to Copilot for Word

Copilot for Word reference documents help to ground the prompts sent to LLMs for processing. The documents can be too large, which means that their contents aren’t fully taken into account when the LLM processes the prompt. This might or might not be an issue.

Office 365 for IT Pros January 2024 Update

The January 2024 update for the Office 365 for IT Pros eBook is available for subscribers to download from Gumroad.com or Amazon. Like any monthly update, the January 2024 update is packed full of changes across the content chapters. Readers should download the updated files as soon as convenient to make sure that they have the most up-to-date information available.

Reporting Entra ID Admin Consent Requests

A question came in about how to report admin consent requests as viewed through the Entra ID admin center. PowerShell does the trick, once you know how. The key thing is to find the right cmdlet to use. Once you know that, the rest is pretty easy as we explain in this article.

Blocking the Welcome Message for Microsoft 365 Groups

This article describes how to block welcome messages for new members of Microsoft 365 groups using a resource behavior option (a group setting). This is an immutable setting that prevents the Groups service sending welcome messages to new members. You might want to take this approach when creating team-enabled groups.