One of my former peers pinged me the other day asking if I had a script in my back pocket that would allow an analyst at a customer to get a list of Teams, whether they were public or private, and who the owners were.… [ Continue reading ]
Use the Windows Speech Synthesizer to read Hitchhiker’s Guide to the Galaxy to you
While messing around today on lunch, I got it in my head that it would be fun to have my computer read the infamous “Hitchhiker’s Guide to the Galaxy” to me.
While I didn’t intend for it to happen in the worst possible way, I did succeed.… [ Continue reading ]
Converting a Classic SharePoint site to a modern Communications site
Earlier today, I was working with a customer to begin enabling Viva Connections.
One of our prerequisites is ensuring the root site is the home site and that it is configured as a modern Communications site. For customers that provisioned their SharePoint environments several years ago but never really invested time in it, it the default SharePoint site may still be a legacy classic team site.… [ Continue reading ]
PowerShell function: Get-HashFromString
Hi, everyone!
In a previous post, I built a function on how to get an MD5 hash from a file stored in memory. I had a particular need this holiday season to compute a hash of a text input string, so I thought I would share my solution with you:
Function Get-HashFromString($String)
{
$md5hash = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider… [ Continue reading ] Update to Wipe Exchange Online Mailbox Script
Earlier this evening, a former peer asked me about trying to bulk delete items from the Drafts folder on a customer’s Exchange Server 2010. While Microsoft Exchange Server 2010 reached end of support in October 2020, it still will work (though we certainly don’t recommend keeping it around, as it’s no longer receiving regular maintenance, support, or security updates).… [ Continue reading ]
Removing on-premises proxy address on the way to the cloud
Several years ago, I wrote a script and a blog post to help customers use AAD Connect to strip out proxy addresses during the synchronization process. The goal was to keep the on-premises AD proxyAddresses attribute for users untouched, as it was needed for other applications and communication on-premises.… [ Continue reading ]
Tern around: Concise PowerShell Ternary Operators
I’m writing this down because…

I will forget it.
I was reviewing someone else’s code that was largely full of common if/then statements and then stumbled across a solitary instance of a ternary statement.
It took me a while to decipher since the ternary evaluation happened as an argument for a cmdlet–definitely limiting its readability. … [ Continue reading ]
Update to Find-DuplicateValues script
Hey! As we enter the waning days of summer, I wanted to update a tool that I’ve had sitting around for a while.
Years ago, when I was in Microsoft Consulting Services, I ran into one particular customer that had manually populated the mail property of thousands of service accounts, groups, vendor accounts, and contacts–not with the object or user’s individual email address, but with the email address of the person who managed the AD object. … [ Continue reading ]
Find and Fix Broken AD Object Inheritance
A few years back, I created a script for a customer to help find broken AD object inheritance during an Exchange migration. I then created a blog post to go through it.
However, time has marched on and the TechNet Gallery fell off the face of the earth, and I needed to update this. … [ Continue reading ]
Update: AAD Connect Test Tool Updated
We’ve updated our baseline requirements for deploying AAD Connect, so I’ve updated the AAD Connect Network Communications Test to reflect those changes.
Key changes:
- We now allow you to configure AAD Connect using the Hybrid Identity Administrator role, so the tool now checks for it.
Update to Get-PublicFolderIDFixReport
Just a quick note–if you use this tool, I’ve updated its logging output (though not the tool itself).
Also, I’m always open to suggestions on how to make it better!
You can download the latest version from the PowerShell Gallery: https://www.powershellgallery.com/packages/Get-PublicFolderIDFixReport/2.3.2… [ Continue reading ]
Configuring “employeeId” with Set-AzureADUser
While working on a project for a customer, I noticed that the didn’t have a way to correlate “uniqueness” between guest identities that they create and a source of authority system. I wanted to explore using the employeeId attribute in Azure AD as a way to set this data.… [ Continue reading ]
SOLVED: Add-PnPFile: format-default : The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
While hammering out a script for one of my customers today, I decided that it would be a nice touch to upload a log file (that I’d handily built with this function) to their SharePoint team site.
What could go wrong?… [ Continue reading ]
Update to Teams-AutoAnswerWithVideo Script
Nearing the height of the COVID pandemic here in the U.S., I bashed together a script to help customers auto-answer Teams calls with video. You can find the original here: Auto-Answer Teams Call with Video and PowerShell. The premise was quite simple: monitor the Teams log file for an incoming call entry and then send the Teams hotkey sequence to answer.… [ Continue reading ]
Migrated Disable-SkyplePlugin Tool
In order to help our customers (and their users) fully transition from Skype for Business to Microsoft Teams, I’ve updated the Disable-SkypePlugin script that I published back in 2020 and put it on the PowerShell Gallery.
As we encounter more and more customers still working remotely, helping enable them use the most modern tools (like Microsoft Teams) is critically important. … [ Continue reading ]
