Scripting

## Update to AAD Connect Network Test

While troubleshooting an issue for a peer today running the Exchange Hybrid Configuration Wizard, I suspected that the environment might have an authenticated proxy in the way.  So, I dug out some code I used in the AAD Connect Network Test for Invoke-WebRequest.… [ Continue reading ]

Identity

## Update to the Set-UPNWithMailAddress Script

I hadn’t touched this one in a while, but a recent request from a customer had me checking in on it.  I tidied it up (no one likes people staring at their dirty laundry), and updated the scripting to be more efficient. … [ Continue reading ]

Scripting

## Bulk Converting Office 365 Groups to Teams

This week, while working with one of my peers, a request came in to bulk convert all Office 365 groups to Microsoft Teams.  In the Teams UI, you’re only presented the choice to upgrade groups you own, one at a time, to Teams.… [ Continue reading ]

Scripting

## Creating a Teams “New Channel” notification

One of my customers recently asked for a solution to checking a particular Microsoft Team multiple times a day for new channel additions.  In their organization, someone is responsible for creating a new channel every time new item for review is published, and then all of the communications, files, and data related to that item is stored in that particular time.… [ Continue reading ]

Scripting

## Hashmaker, Hashmaker, Make Me A Hash

While contemplating methods to determine whether a file had changed or been updated, I thought that an MD5 check would be a pretty simple way to figure out if something was different.

But what if I wanted to check bunches of stuff on the fly?… [ Continue reading ]

Configuration

## Update to the AAD Network Testing Tool

Hey, all!  One AAD tool update deserves another!

Every so often, I check in to make sure I’m keeping the AAD Connect Network Test Tool as fresh as I can.  I’ve made a few changes to the way it works (hopefully which you all think is for the better). … [ Continue reading ]

Configuration

## Update to the AAD Connect Advanced Permissions tool

It’s been a while since I’ve updated this popular tool, and the need was brought to my attention by a peer who noticed an attribute being exported to on-premises AD (but failing):

Information

## Update to Get-SCCDataExport

I’ve been tinkering around a little with this, hoping to bring some better updates (so maybe you can see who is generating your data exports and go smack them around).

I’ve got a few updated fields added to the tool, so be sure to go check it out!… [ Continue reading ]

Information

## WhoAmI for Office 365

If you’ve ever struggled to find out who your current session is logged in as when you connected to Office 365, here’s a tidbit to shed some light on it:

(Get-PSSession |?{$_.ComputerName -like “*outlook.com”})[0].RunSpace.ConnectionInfo.Credential.UserName You can also use RunSpace.… [ Continue reading ] Information ## Calculating your Daily Export for the Security & Compliance Center One of the lesser-known boundaries of Office 365’s Security & Compliance Center is that we only allow 2TB per day export volume. When we talk about exports, we’re talking about the idea of taking content that has been identified via a content search mechanism (content search, eDiscovery case search, etc) and then staged for download.… [ Continue reading ] Client ## Export User GAL Entries from Outlook This morning, looking for an answer to something, I stumbled across a question that seemed easy enough to fix: Is it possible to export the GAL from Outlook if I don’t have access to a server? Yes, yes it is. … [ Continue reading ] Scripting ## Getting Around the Basics of Azure Automation for Office 365 One of the the things that we’ve learned about the cloud over the past few years is that you still need an environment (a utility server, an app server, a something) to run batch jobs and custom scripts against your environments. … [ Continue reading ] Scripting ## Generate a list of mailboxes whose litigation hold duration is less than a week away While many people use Office 365 retention policies as part of their data governance strategy, there are many customers who either do not enforce retention or do so only for items under some sort of litigation hold. In the olden days, when storage was at a premium, it was much more common to handle things this way. … [ Continue reading ] Scripting ## Update to the WipeExchangeOnlineMailbox tool Who knew you’d need an update to a tool meant to delete things? After working with a partner today and an out-of-control email application spamming user mailboxes, we decided an update was necessary. Outlook became unusable with several hundred thousand messages in Deleted Items. … [ Continue reading ] Information ## Update to the Get-UserHoldPolicies Tool A new year, a new update for Get-UserHoldPolicies! Woo! I stumbled across some additional information today regarding deciphering hold policies for mailboxes while troubleshooting another issue and decided to update my Get-UserHoldPolicies tool to reflect it. The core pieces that I added: • Identifying Skype policies (as prefaced by sky in the InPlaceHolds property of a mailbox) • Identifying excluded mailbox policies (as prefaced by -mbx in the InPlaceHolds property of a mailbox) • Disposition action for items at the end of a retention period: • Delete only • Do nothing after retention period • Delete after retention period You can see a few of the new options here. … [ Continue reading ] Scripting ## Searching the Office 365 Unified Audit Log for Specific Activities, Sites, and Users Last week, I was working with a large government customer in a consolidated tenant (read: all agencies in a single, centrally-managed tenant). One of the questions that was presented was how to search and filter the audit log for entries relating to the following categories: • Files shared by an agency or department’s users • Files accessed in an agency’s SharePoint site collection To that end, I based together this script. … [ Continue reading ] Scripting ## Iterating hash values to a log file While working on my last script, I was trying to figure out the best way to write the values stored in a hash table for the purposes of splatting out to a log file. Consider: $parameters = @{}
$parameters.Add("Parameter1","Value1")$parameters.Add("Parameter2","Value2")\$parameters.Add("Parameter3","Value3")

I was using a modified version of my logging function, which is basically a wrapper for Add-Content with parameters for log detail/types, colors, and output display.… [ Continue reading ]

Configuration

## Migrating from Exchange Online eDiscovery and In-Place Hold to the Security & Compliance Center

One of the issues that some of my larger customers have been dealing with is the lack of tooling and planning around moving legacy Exchange Online In-Place eDiscovery & Holds to the new(ish) Security & Compliance Center.  Our direction has been to either let them age out or manually recreate them the Security & Compliance Center.… [ Continue reading ]