Set Microsoft Edge as the default browser via GPO

You can set Microsoft Edge as the default browser on domain-joined devices by configuring the Set a default associations configuration file via group policy.

Turning this group policy on requires you to create and store a default associations configuration file in XML format. This file is stored locally or on a network share. Copy below XML content to a file name Edge.xml and store in a central share accessible by all domain joined resources.

<?xml version="1.0" encoding="UTF-8"?>
  <Association ApplicationName="Microsoft Edge" ProgId="MSEdgeHTM" Identifier=".html"/>
  <Association ApplicationName="Microsoft Edge" ProgId="MSEdgeHTM" Identifier=".htm"/>
  <Association ApplicationName="Microsoft Edge" ProgId="MSEdgeHTM" Identifier="http"/>
  <Association ApplicationName="Microsoft Edge" ProgId="MSEdgeHTM" Identifier="https"/>  
  <Association ApplicationName="Microsoft Edge" ProgId="MSEdgePDF" Identifier=".pdf"/>

note: If you dont want to associate Edge to open PDF files, edit this xml file and remove the line “<Association ApplicationName=”Microsoft Edge” ProgId=”MSEdgePDF” Identifier=”.pdf”/>”

Configure the GPO  for a default file type and protocol associations configuration file:
  1. Open the Group Policy editor and go to the Computer Configuration\Administrative Templates\Windows Components\File Explorer.
  2. Select Set a default associations configuration file.
  3. Click policy setting, and then click Enabled.
  4. Under Options:, type the location to your default associations configuration file.
  5. Click OK to save the policy settings.
  6. Ensure this GPO is linked to the OU where all devices are
  7. The GPO will be processed the next time the user logs in

The example in the next screenshot shows an associations file named Edge.xml on a network share that is accessible from the target device on \\APP1\Users\testadmin\Documents\Edge.xml

Restrict Users From Creating New Teams in Microsoft Teams

If you have recently adopted the usage for Microsoft Teams, managing Teams within Teams becomes a toungue twister in itself, If you’re concerned about users creating teams or groups that don’t comply with your business standards, perhaps you want this to be delegated to set of mindful power users group.

  1. Create a Group – This could be a Active Directory Synced group or M365 group
  2. Install AzureAD Public Preview – AzureAD PowerShell Module.
  3. Run the below script, replace the value of “<GroupName>” with the name of the group you have created, enter the administrator credentials when prompted
$GroupName = "<GroupName>"
$AllowGroupCreation = $False


$settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Property Displayname -Value "Group.Unified" -EQ).id
    $template = Get-AzureADDirectorySettingTemplate | Where-object {$_.displayname -eq "group.unified"}
    $settingsCopy = $template.CreateDirectorySetting()
    New-AzureADDirectorySetting -DirectorySetting $settingsCopy
    $settingsObjectID = (Get-AzureADDirectorySetting | Where-object -Property Displayname -Value "Group.Unified" -EQ).id

$settingsCopy = Get-AzureADDirectorySetting -Id $settingsObjectID
$settingsCopy["EnableGroupCreation"] = $AllowGroupCreation

  $settingsCopy["GroupCreationAllowedGroupId"] = (Get-AzureADGroup -SearchString $GroupName).objectid
} else {
$settingsCopy["GroupCreationAllowedGroupId"] = $GroupName
Set-AzureADDirectorySetting -Id $settingsObjectID -DirectorySetting $settingsCopy

(Get-AzureADDirectorySetting -Id $settingsObjectID).Values


Microsoft Admin Portals

Microsoft 365 Admin Portals

Portal NameURL
Microsoft 365 Admin Portal 
Microsoft 365 Compliance
Microsoft Endpoint Manager Admin Console
Microsoft Endpoint Manager Admin Console (old)
Exchange Admin Center (new)
Exchange Admin Center (old)
Microsoft Teams Admin Center 
SharePoint Admin Center
OneDrive Admin Center
Apps Admin Center
Power BI Admin Portal
Power Platform admin center
Microsoft Stream Admin Center
Skype for Business admin center (deprecated)
Kaizala Management Portal
Yammer Admin
Microsoft Store for Business
Microsoft Store for Education
Microsoft Partner Center
Microsoft Remote Connectivity Analyzer
Microsoft 365 network connectivity test
Microsoft Call Quality Dashboard

Azure IT Admin Portals

Portal NameURL
Microsoft Azure Portal 
Microsoft Azure (Release Candidate)
Microsoft Azure (Preview)
Azure Resource Explorer
Azure Cloud Shell
Azure Active Directory admin center
Azure Cosmos DB
Azure Data Factory
Azure Cognitive Services Custom Translator
Azure Non-profit Portal
Portal NameURL
Azure Security Center…

Microsoft Licensing/Support Portals

Portal NameURL
Volume Licensing Service Center
Next Generation Volume Licensing
Microsoft Azure Enterprise Portal
Microsoft Services Hub
Microsoft License Advisor
Microsoft Partner Center
Azure Subscriptions

Security / Defender IT Admin Portals

Portal NameURL
Microsoft Cloud App Security
Microsoft Defender for Endpoints
(Previously Defender ATP)
Microsoft 365 Defender
Office 365 Security & Compliance
Microsoft Defender for Identity
(Previously Azure ATP)
Multi-factor authentication…

Developer Portals

Portal NameURL
Graph Explorer 
Azure DevOps
Visual Studio Subscriptions
Visual Studio Subscriptions Management
Adaptive Cards

Other Useful Microsoft Portals

Portal NameURL
Office 365 Anti-Spam IP Delist Portal
Azure Status
Azure DevOps Status
Windows Virtual Desktop Consent Page
Customer Digital Experiences
Group Policy Search
Microsoft Startups
Office UI Fabric Icons 
Become Microsoft Certified… 
Tech Community Video Hub 
Microsoft Azure Sponsorships
Microsoft Dynamics Lifecycle Services
Microsoft MVP
Portal NameURL
What is my Microsoft Azure and Office 365 tenant ID?
Office 365 ATP Safe Links Decoder
Message Header Analyzer
Tenant Availability Check


Block File Sharing in Teams

COVID-19 has led many IT Departments scrambling to roll out some form of conference/ collaboration tool as many had to work remotely. This has affected organizations that where were not agile or cloud agnostic by not adopting to modern workplace earlier on.

Microsoft Teams runs on SharePoint Online, OneDrive in its core, organizations running on-premises compliance/DLP solutions will find it hard to put in controls for data in the cloud, not being an early adopter, and having to enable collaboration tools such as Microsoft Teams is a daunting task when you want to protect the organizational data from going walkabouts. If your organization is one of those, which is like a cat on the wall – how do we do it?

Block File sharing in Teams by:

1. Not assigning a SharePoint Online license for End-users

2. Not creating a Teams or Channels, if you do….

3. Create Teams for your organization but remove the Teams members from having EDIT permission on the Teams SharePoint Site.

4. Additionally if the tenant has Microsoft Cloud App Security enabled – create a session based conditional policy, which blocks upload and download of files in Teams and SharePoint Online.

SharePoint Online License – by not assigning this you deprive the end users from accessing OneDrive for business, which is primary storage for file sharing when it comes to 1-1 and group chats.

Creating a Team – when a team is created with members, this creates a SharePoint online site, which by default allows members to have edit permission on the site. By removing the EDIT permission from the Team site leaves members with only read permission leaving only the owner of the Team/SharePoint site full permission, no just do not assign or delegate the owner permission to a regular user.

Microsoft Cloud App Security – is a Microsoft CASB solution (Cloud Access Security Broker) acts as a reverse proxy. A session based conditional policy can be configured to prevent file uploads/downloads in Teams/Sharepoint site, caveat this only works when accessing them via Web but not through desktop client, hence the above point – remove EDIT permission for Team members. MCAS gives you an insight and alert when someone does indeed try to upload a file as it will block and alert the admin.

Now that you have control of filesharing and enabled Microsoft Teams, start strategic roll out of cloud solutions for DLP, Information protection and governance, classification – all of this is available via Microsoft 365 through Azure Information Protection, DLP, Azure and Defender ATP which can scan and classify your organization data automatically based on data sensitivity you can control.

Licenses could not be assigned or removed due to an error -Azure AD group based licenses

Scenario: Group based licensing is enabled in Azure AD. Exchange online is not assigned through the group based licensed. Newly added users to the group fail to get licenses assigned via the group. Reprocessing the group based license throws error:

Licenses could not be assigned or removed due to an error

Solution: A recent service plan backfilled by the O365 Commerce Team into the Office and Microsoft SKUs Microsoft Bookings a has been added as Enabled on all the licenses. This service plan has a dependency on Exchange Online (Plan 1) or Exchange Online (Plan2).

Disabling the Microsoft Bookings service plan in the affected groups should resolve the licensing error.

Kill all active user sessions in any Azure AD/ Office 365 application

If you are are ever in a situation where you have to deal with a compromised O365 account or situation similar to mine where users were assigned Onedrive/SPO license and you want to revoke them and stop users from using them immediately, the below cmdlet is much helpful.

If you are dealing with a large group of users, you may tire your fingers clicking on “initiate sign-out” or better get all members of the group and use cmdlet Revoke-AzureADUserAllRefreshToken which invalidates the refresh tokens issued to applications for a user. The cmdlet also invalidates tokens issued to session cookies in a browser for the user. The cmdlet operates by resetting the refreshTokensValidFromDateTime user property to the current date and time.

Get the group objectid

Get-MsolGroup [groupname] | fl ObjectId

Next, export the users of the group to a csv

Get-MsolGroupMember -GroupObjectId xxxxx-xxxxx-xxxxx-xxxxx | Select-Object EmailAddress | Export-Csv -Path c:\temp\users.csv

Import the csv and revoke th refresh token for these users.

Import-CSV “c:\temp\users.csv” | % {Get-AzureADUser -SearchString $_.emailaddress | Revoke-AzureADUserAllRefreshToken}

Add Fullmailbox Permission in PowerShell using a CSV file

Create a CSV with following fields and save it in a temp folder

UserMailbox and User

copy the below and save as .ps1 file in the same temp folder e.g C:\temp

$csv = Import-csv -path “C:\temp\fullaccess.csv”
foreach($User in $csv)
Add-MailboxPermission -Identity $user.UserMailbox -User $user.User -AccessRights FullAccess -InheritanceType All


Run the script to apply permissions

Force a sync from Azure AD Connect to Office 365

AAD sync runs every 30 minutes, we are several situations where you cant wait 30 minutes for a change to sync across, you still want to force a sync. To do so, on the server which has AAD Connect installed and type the following to import the AAD Connect PowerShell module:

Import-Module ADSync

You check the current settings of the sync scheduler



To force a delta sync, you the following PowerShell command:

Start-ADSyncSyncCycle -PolicyType Delta


If you want to force an initial (full) sync, use this command:

Start-ADSyncSyncCycle -PolicyType Initial

Export Calendar permissions for specific OU

The below has been tested on exchange 2010 to export calendar permissions for mailboxes in a specific OU.

# Get the mailboxes
$Mailboxes = get-mailbox -OrganizationalUnit “OU=Users,DC=Contoso,DC=local” -Filter {RecipientTypeDetails -eq “usermailbox”} -ResultSize Unlimited

# An array for the output
$Output = @()

# Loop through the mailboxes
ForEach ($Mailbox in $Mailboxes) {
# Get the name of the calendar folder
$Calendar = (($Mailbox.PrimarySmtpAddress.ToString())+ “:\” + (Get-MailboxFolderStatistics -Identity $Mailbox.DistinguishedName -FolderScope Calendar | Select-Object -First 1).Name)

# Get the permissions on the folder
$Permissions = Get-MailboxFolderPermission -Identity $Calendar

# Loop through the permissions, populating the output array
ForEach ($Permission in $Permissions) {
$Permission | Add-Member -MemberType NoteProperty -Name “Mailbox” -value $Mailbox.DisplayName
$Output = $Output + $Permission

# Write the output to a CSV file
$Output | Select-Object Mailbox, User, {$_.AccessRights}, IsValid | Export-Csv -Path C:\temp\Calendarpermissions.csv -NoTypeInformation

Filtering to the specific OU is very useful if you are managing multi-tenant exchange environment. Modify the above script as per your needs and save as .ps1 to run on powershell.