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 ]
Expert Microsoft Teams Solutions available for pre-order
At long last, I’m pretty excited to announce this labor of love with some of my peers / teammates:

We’re still finalizing a few things (so a few chapter titles/headings may change), but here’s the top level outline:
| Chapter | Title | Topics |
|---|---|---|
| 1 | Teams Overview | Azure AD architecture Organization and user interface Instant messaging, chat, and presence Calendaring Mobile Devices |
| 2 | Approvals | Creating and responding to approvals Administration of the Approvals app |
| 3 | Task Management | Planner, To Do, and the Tasks App |
| 4 | Bookings | Creating and managing a booking calendar Integration with other apps and services |
| 5 | Meetings | Scheduled, Ad-hoc, and Channel meetings Meeting features (including transcription, recording, webinars, break-out rooms, and registration) Meeting options Audio conferencing |
| 6 | Meeting Room | Licensing and configuring Meeting Rooms Room scheduling Meeting room devices |
| 7 | Live Events | Scheduling live events Presenting and sharing content and invitations External meeting production |
| 8 | Teams app development | Building and publishing apps in Teams |
| 9 | Workflow integration | Connecting Power Automate to Teams, including posts and notifications |
| 10 | Power Virtual Agents | Creating and publishing chat bots |
| 11 | Phone System | Terminology, including calling plans, communication credits, conferencing, and emergency policies Calling features Licensing |
| 12 | Cloud Phone System Architecture | Cloud-only and direct-routing configurations Implementing phone system features, including E911, creating and assigning phone numbers, policies (call park, calling, caller ID, emergency) Configuring outbound calling |
| 13 | Microsoft Teams devices | Working with phones, Teams rooms, collaboration bars, and Teams displays |
| 14 | Planning and adoption | The Microsoft Teams adoption framework |
| 15 | Governance | Identity and authentcation Compliance (including retention and information barriers) Lifecycle management (including provisioning and access packages |
| 16 | Integration with Exchange Hybrid | Enabling and configuring hybrid connectivity between Teams and Exchange |
| 17 | Security and Data Protection | Conditional Access, Data Loss Prevention |
| 18 | Reporting | Call Quality Dashboard, Call detail reports, User-based call reports, Live events, Teams usage |
You can go pre-order it here: https://www.amazon.com/gp/product/B09DDV1WR6… [ Continue reading ]
Content pulled back from the memory hole
I decided to go for a walk down nostalgia lane–while I love to talk about new stuff that we’re doing here at Microsoft, I also like to reminisce about the earlier times in my career–especially when I first started tech blogging.… [ Continue reading ]
Update to Teams Auto Answer Script
Hey-o!
It looks like there may have been an encoding problem for some folks with the recent update of the Teams-AutoAnswer script. I’ve updated the encoding in the file and re-posted it, so please let me know if you have problems.… [ Continue reading ]
Re-posted Sensitive Information Type XML
While continuing my stroll down old posts lane, I stumbled across one that I made for building custom sensitive information types. One of the things that I noticed about it was that it it had a link a file hosted on our now-sunsetted Technet Gallery.… [ 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.
A Deep(er) Dive into Teams Architecture
While working on my current book, I was thinking about a deeper exploration of how Microsoft Teams handles permissions and content. One of our Sr. Customer Engineers has a fantastic (and very expansive) diagram of the moving pieces, which I’ve adapted to fit here.… [ Continue reading ]
Manual OAuth Configuration for Microsoft Teams in a Hybrid Scenario
There are times when your organization (or a customer’s organization) just can’t run the Exchange Hybrid Configuration Wizard. If you’re embarking on one of our strategies to take advantage of Microsoft Teams while your mailboxes are still on-premises, the Exchange Hybrid configuration is the go-to way to get there, since it sets all this stuff up automatically. … [ Continue reading ]
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 ]
