Last active
February 13, 2020 13:27
-
-
Save pmatthews05/29fe8847a43daa4e4f906fdfe58c4b4d to your computer and use it in GitHub Desktop.
Removes external users from O365 Tenant.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.SYNOPSIS | |
Loops through the SharePoint sites of the tenant, looking for the external user and removing them. | |
You need to have already connected to the Tenant as a SharePoint Global Adminstrator using Connect-SPOService -url:https://<tenant>-admin.sharepoint.com | |
.EXAMPLE | |
.\Remove-ExternalUserFromTenant.ps1 -Environment:<tenant> -UserEmail:<externalEmailAddres> | |
#For Tenant called Dev34223 and external email address fred.bloggs@outlookdomain.com | |
.\Remove-ExternalUserFromTenant.ps1 -Environment:Dev34223 -UserEmail:fred.bloggs@outlookdomain.com | |
#> | |
[CmdletBinding(SupportsShouldProcess)] | |
param( | |
[Parameter(Mandatory)] | |
[string] | |
$Environment, | |
[Parameter(Mandatory)] | |
[string] | |
$UserEmail | |
) | |
Clear-Host | |
$sites = Get-SPOSite -Limit ALL | |
$externalConversionEmail = ($UserEmail -replace '@', '_') + "#EXT#@" + $Environment + ".onmicrosoft.com" | |
$ErrorActionPreference = 'Stop' | |
$InformationPreference = 'Continue' | |
Write-Information -MessageData "Get $UserEmail External User within SharePoint" | |
$ExtUser = Get-SPOExternalUser -Filter $UserEmail | |
if ($null -ne $ExtUser) { | |
Write-Information -MessageData "Remove $UserEmail within SharePoint" | |
Remove-SPOExternalUser -UniqueIDs @($ExtUser.UniqueId) -Confirm:$false | |
} | |
$found = $false | |
$Sites | ForEach-Object { | |
$site = $PSItem | |
$i = $i + 1 | |
try { | |
Get-SPOUser -site:$($site.Url) -LoginName:$externalConversionEmail | |
write-Information "Found user $UserEmail in site $($site.Title) Url:$($site.Url)" | |
Remove-SPOUser -site:$($site.Url) -LoginName:$externalConversionEmail | |
$found = $true; | |
} | |
catch { | |
#User not found. | |
} | |
Write-Progress -Activity "Removing User - $UserEmail" -Status "Progress:$($site.Url)" -PercentComplete ($i / $Sites.count * 100) | |
} | |
if ($found) { | |
Write-Information "User $UserEmail removed from SharePoint Sites" | |
} | |
else { | |
Write-Information "User $UserEmail wasn't found within SharePoint Sites" | |
} | |
Write-Information -MessageData "Remove $externalConversionEmail from SharePoint User profile" | |
try { | |
Remove-SPOUserProfile -LoginName $externalConversionEmail | |
} | |
catch { | |
Write-Information "Unable to find $externalConversionEmail in the user profiles." | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment