As luck would have it, I had to get the newest version of the Microsoft Teams PowerShell module. It’s still a test module and not available in the main PSGallery. So, I had to poke around and figure out how to add it and get the version that supports Get-TeamChannelUser.… [ Continue reading ]
Tag: Powershell
Resolved: SharePoint Online web site does not support SharePoint Online credentials
This afternoon, while working on my upcoming book for the MS-300 exam, I was attempting to sign into SharePoint Online via PowerShell and encountered this moderately cryptic message:
Cannot contact web site 'https://tenant-admin.sharepoint.com/' or the web site does not support SharePoint Online credentials.… [ Continue reading ]
Finding mis-licensed shared users in Office 365
Just a quickie post this holiday week.
Many customers have had Exchange on-premises forever. Back in the olden days, we just had user mailboxes. Need a shared team mailbox? You get a user mailbox. Need a conference room mailbox? You get a user mailbox.… [ Continue reading ]
Update to Basic PowerShell Website Scraper
While twirling my luscious locks and thinking of ways to input data for my haveibeenpwned-based query tool, I thought to myself, “self, how cool would it be to just generate a list of hyper-linked email addresses from a public website?”
Having already put together a pretty basic PowerShell scraper, I decided this wouldn’t be terribly hard. … [ Continue reading ]
Update to PwnCheck – HaveIBeenPwned Query Tool
I got caught up in doing this, and now it’s 3:45AM. C’est la vie! My loss of sleep is your threat analysis gain.
I’ve made several updates to the PwnCheck tool (used to query the HaveIBeenPwned.com database).… [ Continue reading ]
Creating an Array with Headers and Columns from a string using [PSCustomObject]
Today, I was updating a script I wrote a while ago, and I wanted to streamline the processing loops once input was received. This particular script took parameters for:
- Identity (as an email address or UserPrincipalName)
- CSV (with either no header or a header of UserPrincipalName)
- Target environment type (either Active Directory or Office 365/Azure AD, which return a UserPrincipalName property with Get-ADUser or Get-AzureADUser)
I had gone the “easy” route and just done a simple If/Then to see if the Identity parameter had been passed, and if it had, run a separate chunk of code (which made troubleshooting or updates much harder since I had to keep two branches of the code synced when I made updates).… [ Continue reading ]
Basic PowerShell website scraper
Today, I just put together a quick little project for a friend of mine who needed a way to scrape downloadable documents and video files from a website for a project. Rather than clicking and downloading each one manually, he wondered if there was a way he could do it with a script.… [ Continue reading ]
Apply Security & Compliance Center Retention Labels to Outlook Folders
I couldn’t really come up with a cool-sounding title for this post, so I just went with the basics of what it does.
Last week, I worked with a customer that wanted to deploy custom retention labels to custom folders inside a user’s mailbox–the idea being that they would create a custom folder structure such as this under a user’s Inbox:
\Inbox
\Inbox\Retention Schedule
\Inbox\Retention Schedule\2 Year (apply a 2-year retention label to everything in this folder)
\Inbox\Retention Schedule\4 Year (apply a 4-year retention label to everything in this folder)
\Inbox\Retention Schedule\7 Year (apply a 7-year retention label to everything in this folder)
\Inbox\Retention Schedule\Forever (apply a ‘Never delete’ retention label to everything in this folder)
Seems easy enough, right? … [ Continue reading ]
Disabling Teams AutoStart
Here’s a fun one … Disabling Teams auto-startup. Imagine this scenario:
- You haven’t trained your service desk on how to answer/troubleshoot/manage Teams help desk calls
- You’ve configured restrictions on who can create Teams
- You’ve deployed the new Office ProPlus update with Teams integrated.
Update to Get-UserHoldPolicies
This certainly seems to be a day for updates! Based on some additional feedback from my peers, I’ve updated the Get-UserHoldPolicies script to exclude legacy Exchange MRM policies by default. MRM policies, while they have RetentionPolicyTags, are technically either moving or deleting content, not preserving it.… [ Continue reading ]
Update to OneDrive for Business Admin tool
Based on some user feedback, I’ve made the following modifications to the OneDrive for Business Admin Tool:
- Fixed a reference to the original function name for FolderToDelete
- Added verbiage referencing the -Confirm parameter when using FolderToDelete parameter
- Tidied up code indentations to make it more readable
I’ve got some additional feedback that I will incorporate as well (once I figure out how to do it).… [ Continue reading ]
Update to PwnCheck!
As my kids are eager to tell me, I done messed up. 😉 One of my readers pointed out an oversight where a null variable may have been referenced–and it’s been corrected! H/T to @itpro_tipscom!… [ Continue reading ]
Some of the many ways to Export Outlook Contacts
Just had this come up, so I thought I’d post it for whoever else needs to hear this. I can quickly think of three ways to do this: One using Outlook, one using PowerShell, and one using both.… [ Continue reading ]
Download all files from SharePoint Online
Yesterday, I came across a request for a script or method to download all files from SharePoint Online.
At first, I balked because CSOM isn’t my favorite and kind of finicky, but then remembered that we’d released the SharePoint PnP PowerShell cmdlets a while back.… [ Continue reading ]
Removing Orphaned Mailbox Searches
An issue came up today for one of my customers–how to remove orphaned mailbox searches in Exchange Online. Apparently, they have about 300 mailboxes in this state. Oops.
So, in order to do this, you need to go through a handful of steps:
- Identify all of the Mailbox Searches.
Cloud UPNs for AAD Connect users with Alt-ID don’t update after domain verified in tenant
A few weeks ago, I ran into an issue with a customer. Scenario:
- Customer had configured alternate-id sign in with AAD Connect (the gist is that it flows on-premises mail to cloud UPN)
- Synced identity to tenant
- Tenant did not have any verified domains
As expected, without a matching verified domain in the tenant, UPN suffixes in the tenant were actually set as @tenant.onmicrosoft.com. … [ Continue reading ]
Update to Create-LabUsers!
Sometimes, your mind just gets to thinking about stuff you could have done better. Last night was one of those times.
I’d started building new lab environments for work, and decided to start pumping users into AD and syncing them to my test tenants. … [ Continue reading ]
Check commmon records for a domain
One of my peers this week was looking for a script to help check global DNS resolution for particular records for both replication and geo-loadbalancing testing.
The record types and data he was looking for:
- A
- CNAME
- MX
- TXT (for SPF)
- TXT (for DMARC)
This is what I came up with, so maybe it can help someone else.… [ Continue reading ]
Update to Pwncheck Script – Now use a single identity!
Yes, these seems like a silly feature to add (since you can just do a single identity from the haveibeenpwned.com website, buuuuuuuttttttttttt…..), I wanted to showcase the script’s versatility while at a customer, so I added this one on the fly today.… [ Continue reading ]
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 ]