Tweaking the Teams and Groups Report Script

Discovering new PowerShell tricks is always a delight, especially if they help solve problems. In this post, I cover a situation where a trick from the dawn of PowerShell helped answer a query about the Microsoft 365 Groups and Teams activity report script. I also cover why the Export-CSV cmdlet isn’t so good when it comes to exporting non-ASCII data.

The Steadily Increasing Average Revenue Per User Microsoft Extracts from Office 365

Every quarter, Microsoft reports its progress in growing Office 365 revenue. An important measure is the average revenue per user (ARPU), which has grown steadily over the last few years as Microsoft convinces customers to upgrade to more expensive licenses. Microsoft’s desire to drive ARPU higher won’t stop, so customers need to keep an eye on the licenses they buy to make sure that the licenses are suitable for the organization and assigned to the right people… and that no licenses are left unused.

February 2023 Update for Office 365 for IT Pros

The February 2023 update for the Office 365 for IT Pros (2023 edition) eBook is available for subscribers to download. This is the 92th monthly update for Office 365 for IT Pros, something that makes the book unique in terms of its ability to remain current in the changing world of Microsoft 365. In 2022, people in 82 different countries subscribed to Office 365 for IT Pros. That’s a proud record which we hope to improve on in the coming years.

Reporting Operating System Versions for Azure AD Registered Devices

Azure AD registered devices store some information about the operating system and version used when registration occurs. Although this information changes over time and isn’t updated by Azure AD, it might be of some interest and use to tenant administrators, so we show how to report it here. If you want accurate information, you’ll need to use Intune.

Fetching Group Membership Information for an Azure AD Account

As developers update PowerShell scripts in preparation for the deprecation of the Azure AD and MSOL modules, they might need to insert new code to retrieve the membership of Azure AD groups for specific accounts. We cover that topic here, including the interesting case of the AdditionalProperties property returned by several Microsoft Graph PowerShell SDK cmdlets and the valuable information found there.

Azure AD Introduces IPv6 Support

Microsoft plans to support IPv6 connectivity for Azure AD starting on March 31, 2023. The change creates specific requirements for conditional access policies that use named locations to allow or block connections. Administrators will have to add new IPv6 address ranges to named locations to allow users to continue to connect. Apart from that, it’s a matter of making sure that any reporting, analysis, or SIEM applications can deal with the new IPv6 data.

Teams Reaches 280 Million Users as Microsoft Cloud Growth Slows

Every thirteen weeks, Microsoft shares some numbers as part of its quarterly results. The FY23 Q2 data included a new Teams user number (280 million monthly active users) and some clues that Office 365 is approaching 400 million paid seats – or maybe active users. You can never quite tell from the data Microsoft releases. One thing’s for sure. The cloud market is slowing in line with the general economy, which means that Microsoft needs to extract more money from each user to offset the slowdown in seat growth.

Exchange Online Adds Support for License Stacking

Microsoft announced support for concurrent Exchange Online license assignments, aka license stacking. This means that the workload can sort out the capabilities made available to a user through multiple licenses and make the maximum functionality available to the user through whatever’s deemed to be the “most superior” license. If that sounds like so much mumbo-jumbo, it might just be, unless you’ve been plagued by people losing access to their mailboxes because of shifting license assignments in the past. If you have, this change will make you very happy.

How to Find Teams Channels With a Wiki Tab

Microsoft plans to replace the Teams wiki with OneNote and will release a migration app to move content from wiki to OneNote. That’s great, but you need to know what channels include the wiki tab before you can decide what material should be migrated. This article explains how to use PowerShell to create a report of Teams channel tabs for wikis.

Microsoft Adds Video Effect Filters to Teams Meetings

Microsoft has introduced a set of visual effects for Teams meetings. The Teams video effects are a set of styles and filters that apply to (augment) an existing video stream. It’s a cute idea that will mean a lot more to some users than others. You can stop people using Teams video effects by blocking the Custom Filters app in the Teams admin center. But that might be a pity because everyone deserves a little levity in life.

Bookable Time Coming to OWA

Microsoft has announced bookable time for OWA. It’s really just another entry point for the Bookings with Me app in an attempt to get more people to use the app. Bookings for me is a useful facility for people that need to publish available meeting slots for others to request time with them. Whether it’s something that the average Outlook users wants or needs is quite another matter.

Upgrading the Microsoft 365 Groups and Teams Membership Report Script

The Microsoft 365 Groups Report (membership of groups and teams) originally used the Azure AD and Exchange Online PowerShell modules. Now its code uses only cmdlets from the Microsoft Graph PowerShell SDK. It’s an example of the kind of update that many organizations are going through due to the upcoming deprecation of the Azure AD and MSOL modules.

Reporting Group Membership for Azure AD Guest Accounts with the Microsoft Graph PowerShell SDK

Azure AD Guest Accounts have a habit of becoming stale or obsolete as time progresses. Guest accounts created to share documents or to be a member of a long-forgotten team or group remain in Azure AD until someone comes to clean them up. This article explains how we refreshed a popular script to use cmdlets from the Microsoft Graph PowerShell SDK to report guest accounts with different degrees of staleness.

Planner Gets Its Grid View – Finally

Planner grid view and recurring tasks are now available to Microsoft 365 tenants. Grid view is a much-requested feature while recurring tasks are also welcome, even if Microsoft forgot to tell people that the new capability was coming. Grid view is probably the biggest update Planner has received since 2020, but maybe an even bigger change is on the way with application permissions for the Planner Graph APIs. Time will tell.

Microsoft Moves Four Standard Features to Teams Premium

Microsoft expects the Teams Premium license to be generally available in February 2023. In advance, Microsoft confirmed that they will move four features from the set covered by the Teams standard license to Teams Premium. In reality, this probably won’t affect many users, but does Microsoft really have to do this and run the risk of offending some people by demanding extra for features they use today?

No More Stream Classic as Microsoft Announces Retirement Date

Microsoft announced that they will retire Stream classic on February 15, 2024. It’s time to move to Stream on SharePoint, which moved into generally available status in October 2022. Lots of new features have been built into Stream on SharePoint, but the most notable thing about Stream 2.0 is that it’s more of a service for other Microsoft 365 workloads to consume than a video management and replay app.

Teams External Federation and Presence Privacy

Teams external federation allows users to chat with people in other Microsoft 365 tenants. External participants can see presence data unless you suppress it by running the Set-CsPrivacyConfiguration cmdlet to put the tenant into “privacy mode.” The policy affects everyone in the tenant and there’s no way to apply privacy mode to selected users.

Teams Adds @Everyone Mention to Group and Meeting Chats

Microsoft is adding the @Everyone mention to Teams group and meeting chats. Using @Everyone highlights a message to all chat participants by notifying them through their activity feed (dependent on user settings). It’s a feature similar to the @Team and @Channel mentions available for channel conversations. Not a huge advance, but welcome none the less.

Sending Auto-Replies from Shared Mailboxes

Much to our distress, we discovered that the contact form for the Office 365 for IT Pros website was broken. We fixed everything up and use a shared mailbox to receive the contacts logged by people on the website. In fact, we use a distribution list as the first point of contact. Its membership includes the shared mailbox and other user mailboxes. Everything works very nicely now.

Achieving Consistency in Country Settings Across Azure AD and Exchange Online

Azure AD user accounts and Exchange Online mailboxes share many properties, including some for a user’s address. When it comes to countries, Azure AD has the country property while Exchange uses the CountryOrRegion property. Sometimes the two don’t match up. Why does this happen and does it matter in practical terms? What other country or regional settings exist that need to be managed? A simple question sets off a big discussion.

Recovering Deleted Groups with the Graph PowerShell SDK

This article describes how to restore deleted Azure AD groups with PowerShell using cmdlets from the Microsoft Graph PowerShell SDK. Although options exist in the Microsoft 365 admin center and Azure AD admin center to restore deleted groups, it’s nice to have the option to do the same with PowerShell.

How the Teams Report a Concern Feature Works

The Report a concern option is available in Teams personal and group chats when enabled in a messaging policy and the organization uses communication compliance policies. Microsoft creates a communication compliance policy automatically to process messages reported by users. The investigation process follows the same flow as for other communication compliance policies, even if the messages might vary a tad in terms of their content because it’s a very subjective decision by a user to report content. Overall, a nice feature to have.

Adding QR Codes to Microsoft Authenticator for Azure AD Guest Accounts

Getting a new device means that some work must be done to ensure that apps work. This article explains how to add QR codes to the Microsoft Authenticator app so that the app has the credentials to respond to MFA challenges. We cover how to get QR codes for Azure AD accounts and how to do the same for guest accounts in other Microsoft 365 tenants.

How to Enable Exchange Online Mailbox Archives Based on Mailbox Size

This article explains how to use PowerShell to enable Exchange Online archive mailboxes after primary mailboxes reach a certain size. Some simple PowerShell code checks the mailbox size and if it’s too large, enables the archive and assigns a mailbox retention policy containing a default move to archive tag to move items from the primary to the archive mailbox. Some Azure Automation would make sure that the script runs periodically to keep mailboxes in good health.

January 2023 Update Available for Office 365 for IT Pros

The January 2023 update (#91) for the Office 365 for IT Pros eBook is available for subscribers to download. EPUB/PDF subscribers can fetch the updates from their Gumroad.com account while Amazon Kindle readers must contact Amazon support to arrange for the updates to be made available to them.

Microsoft Pauses Daily Viva Briefing Messages

Microsoft announced that they will pause sending the daily Viva Briefing messages to make improvements to the personalized content in the messages. No detail has been revealed about the kind of changes Microsoft is contemplating, so all we can do is write some PowerShell to show which mailboxes are currently enabled to receive the daily briefing.

Microsoft Adds Release Status to Message Center Notifications

Microsoft is adding a release status tag to its Microsoft 365 message center notifications to help administrators understand the roll-out progress of updates. Three status values are available: Launched, Rolling Out, and Scheduled. The acid test will be to see if Microsoft can accurately tag message center notifications with the correct value.

How to Populate Teams Holiday Dates with PowerShell

Teams holiday data define when users of the Teams phone system might not be at work and alternative calling arrangements exist. It’s easy to update holiday data using the Teams admin center, but it’s also easy to write a PowerShell script to update Teams about new holiday events on an ongoing basis. All explained here!

Flaws in the Plan for Microsoft Graph PowerShell SDK V2

Microsoft has released the first public preview of the Microsoft Graph PowerShell SDK V2.0. Although the new version delivers some welcome functionality, it contains some contentious proposals such as dividing the SDK into V1.0 and beta modules and using different names for the beta cmdlets. It would be nice if Microsoft fixed some of the basic group and user cmdlets before they imposed more work on PowerShell developers.

Exchange Online to Stop Support for Remote PowerShell Connections in June 2023

Microsoft has announced that Exchange Online will block Remote PowerShell connections from July 1, 2023. Taken in isolation, this is excellent news and it will contribute to the move to use modern authentication for all client connections to Exchange Online. However, things aren’t quite so good when you realize that the final deprecation of the Azure AD and MSOL PowerShell modules take place at the same time. Lots of work to do to upgrade scripts!

Finding Microsoft 365 Answers with ChatGPT Isn’t Successful

The ChatGPT project is an interesting and worthwhile examination of how artificial intelligence can generate answers to questions. However, the answers depend on the source material, and the signs are that ChatGPT isn’t great at answering questions about Microsoft 365.

Microsoft Makes 30-Day Test Licenses Available for Teams Premium

Microsoft is making 30-day trial licenses available to customers to test Teams Premium functionality with up to 25 users. Given the short test period that’s available, we suggest that organizations put the idea to one side until after the holidays are over. You can come back in 2023 and do some in-depth testing to find out if Teams Premium is worth the $10/user/month price tag.

Microsoft Clarifies How It Plans to Charge for APIs

A December 2 post by the Microsoft Graph development team clarifies how it plans to charge for some Microsoft 365 APIs. The three-tier model Microsoft plans to use is logical and the default will remain free access to customer data. However, the way Microsoft has communicated the introduction of a charging model for some high-capacity APIs is a model of how not to manage change.

How to Customize the Exchange Online Message Expiration Timeout Interval

Microsoft is deploying a change to the Exchange Online transport server to allow tenants to set the message expiration timeout interval to between 12 and 24 hours. The default for the service remains at 24 hours. Reducing the interval means that users will learn about message failures sooner. The hope is that they’ll be able to respond to those failures and resend messages once they learn about problems.

New Adobe Integration for PDF Processing in Microsoft Teams

On December 5, Microsoft announced a new Adobe Integration with Teams for PDF files stored in SharePoint Online and OneDrive for Business. The new integration uses an Azure AD enterprise app to link Teams to the Adobe Document Cloud. The new integration can’t handle protected PDFs, but you can always use a browser to view those files.

Add Participants to Teams Group Chats with @Mentions

A new feature allows people to add participants to Teams group chats through @mentions in the compose box. It’s a nice feature that should have been there a long time ago. Microsoft says that adding new group chat participants this way saves a whole two clicks over the old way. Will those two clicks make any difference to you?

Checking the Release of Quarantined Messages

On the surface, it seems easy to report when someone releases a quarantined message. As it turns out, things aren’t quite as easy as it first seems. Audit events are available in the unified audit log, but they don’t tell the full story. But by putting that data together with information about messages in quarantine, we can create a composite view that’s closer to what’s needed.

Running Exchange Online Historical Message Traces for Sets of Mailboxes

A question was asked about the best way to find out if shared mailboxes received email from certain domains over the past 60 days. Exchange Online historical message traces can extract trace data to allow us to check, but the process of running the message trace and then analyzing the data is just a little disconnected.

Reporting Distribution List Membership with the Microsoft Graph PowerShell SDK

Microsoft will deprecate the Azure AD and MSOL PowerShell modules in June 2023. It’s time to convert scripts that use cmdlets from these modules and the Microsoft Graph PowerShell SDK is probably the best answer. This article explains how to generate a report of Exchange Online distribution list memberships, a task often handled in the past with Azure AD cmdlets.

Adding New Azure AD Users to Groups Automatically

Several methods exist to add new user accounts to groups automatically. Dynamic group membership is an obvious option, but other choices exist, including org-wide teams (if your organization is under 10,000 accounts) and using PowerShell to manage the automatic addition of new members to a standard distribution list or Microsoft 365 group. This article examines the various methods. Once you understand what’s possible, you can make the right choice.