Introducing the M365 Report Tools PowerShell Module

The Why I often find the need to gather and extract data from various areas M365 for auditing or for project planning. I had the idea of putting together a PowerShell module containing wrapper functions for some of the most common reports I and colleagues ask for. I wanted to make the commands easy to discover and easy to use. I would like to introduce the M365.Report.Tools PowerShell module! What can it do?
Read more →

Introducing the M365 Report Tools PowerShell Module

Introducing the M365 Report Tools PowerShell Module
The Why I often find the need to gather and extract data from various areas M365 for auditing or for project planning. I had the idea of putting together a PowerShell module containing wrapper functions for some of the most common reports I and colleagues ask for. I wanted to make the commands easy to discover and easy to use. I would like to introduce the M365.Report.Tools PowerShell module! What can it do?
Read more →

Intune Endpoint Tools PowerShell Module

Intune Endpoint Tools PowerShell Module
I am proud to introduce the PowerShell module IntuneEndpointTools. This is the first PS module I have published to the PowerShell gallery. IntuneEndpointTools contains a set of tools for managing and diagnosing Intune MDM on Windows endpoints designed with Intune support staff in mind. Easily perform diagnostic/troubleshooting operations such as getting the MDM diagnostic report, full diagnostic package, forcing a full sync to Intune, forcing reprocessing of assigned applications, and more!
Read more →

Keep Applications Updated with WinGet and Proactive Remediations

Keep Applications Updated with WinGet and Proactive Remediations
The Why In a previous article , I demonstrated how to deploy applications to Intune using WinGet . I recieved a request to demonstrate how to use WinGet to update applications, and more importantly, how to run this on a schedule to keep applications updated. Since then, I found a really handy PowerShell wrapper module for WinGet called WinGetTools by Jeffrey Hicks . I made a small contribution to this module to allow it to work running under SYSTEM context.
Read more →

Update Business Voice to Teams Phone Licenses

Update Business Voice to Teams Phone Licenses
Microsoft has announced the retirement of Business Voice licensing . If your tenant is still using Business Voice with Calling Plan or Business Voice without Calling Plan, you will need to switch to the new equivalent Teams Phone plan. If you take a look at the Microsoft doc linked above, there are examples for how to update the licenses on bulk, however it is baffling Microsoft chose to demonstrate using the Azure AD PowerShell module, when the licensing portion of that module is slated to be retired as of today (6/30).
Read more →

Backup and Reset Windows User Profile

Backup and Reset Windows User Profile
Premise If you use Windows long enough, eventually you will run into a broken user profile. Sometimes its the start menu that busted, or the Windows store wont open etc. If the typical recommendations of sfc / dism / re-register appx packages with PowerShell fails to remedy the issue, see if the issue is isolated to the user profile. Log into another Windows user account and see if the issue persists.
Read more →

Working with the Microsoft Graph PowerShell SDK

Working with the Microsoft Graph PowerShell SDK
What is an API anyway? API stands for “Application Interface”. In simplest terms, APIs are services that bridge and allow two systems to interact. When we are talking about web services, such as those in M365, API usually refer to a REST API. I like this explanation from AWS: API architecture is usually explained in terms of client and server. The application sending the request is called the client, and the application sending the response is called the server.
Read more →

PowerShell Project - Get the Weather report

I thought it would be a fun project to create a PowerShell function which would get the Weather forecast for a specified location. I started searching online for free Weather REST APIs which I could query for the forecast. I found api.weather.gov which has a completely free and open REST API with complete documentation API Web Service (weather.gov). Checking the documentation, the REST endpoint to query the forecast is https://api.weather.gov/gridpoints/{office}/{grid X},{grid Y}/forecast.
Read more →

Export O365 User License Report with friendly names

I was recently tasked with exporting a report for a client that detailed all users, their location and license assignment in Office 365. I knew the best way to get the job done was by writing a PowerShell script. I did a quick search online and found lots of examples, however all the examples I found were using the deprecated “Microsoft Online” / MSOL PS module. I wanted to use the Azure AD module instead so I played around a bit to get the output I wanted.
Read more →

Remove Document Redirection Policies over VPN

Remove Document Redirection Policies over VPN
In today’s world of COVID with so many people working from home, more and more organizations are moving to cloud services for file storage. It used to be quite a common practice, at least in my experience to enable folder redirection for users on-prem. Trying to dismantle folder redirection, especially when our users are working remotely can prove to be a challenge. If you have ever attempted to remove a folder redirection GPO, you have undoubtedly discovered folder redirection policies only apply (and remove) at startup/user logon.
Read more →

Sync SharePoint Libraries with PowerShell

The Problem So you want to move your files to SharePoint, great! But your users don’t understand sharepoint, don’t wanna learn sharepoint and just want their file explorer experience. There are a few ways we can go about syncing libraries for our users. We can set a group policy or Intune configuration to automatically sync a SharePoint library however there are some big caveats with this such as a 250~ url character limit.
Read more →