Functions/Public/Remove-CT365AllDeletedM365Groups.ps1
<# .SYNOPSIS Removes all deleted Microsoft 365 groups from the recycle bin. .DESCRIPTION The Remove-CT365AllDeletedM365Groups function connects to a Microsoft 365 tenant and removes all Microsoft 365 groups that have been deleted and are currently in the recycle bin. It requires the PnP.PowerShell module and uses the Connect-PnPOnline cmdlet to establish the connection. .PARAMETER AdminUrl The URL of the Microsoft 365 admin center. This parameter is mandatory and specifies the tenant to connect to. .EXAMPLE PS C:\> Remove-CT365AllDeletedM365Groups -AdminUrl "contoso-admin.sharepoint.com" This example connects to the Microsoft 365 tenant at contoso-admin.sharepoint.com and removes all deleted Microsoft 365 groups. .INPUTS None. You cannot pipe objects to Remove-CT365AllDeletedM365Groups. .OUTPUTS String. The function outputs messages indicating the status of deletion operations and any errors encountered. .NOTES This function requires the PnP.PowerShell module and PSFramework #> function Remove-CT365AllDeletedM365Groups { [CmdletBinding()] Param ( [Parameter(Mandatory)] [ValidateScript({ if ($_ -match '^[a-zA-Z0-9]+\.sharepoint\.[a-zA-Z0-9]+$') { $true } else { throw "The URL $_ does not match the required format." } })] [string]$AdminUrl ) Begin { foreach ($module in @('PSFramework', 'PnP.PowerShell')) { if (-not (Get-Module -ListAvailable -Name $module)) { Install-Module $module -Scope CurrentUser } } } Process { try { $deletedGroups = Get-PnPDeletedMicrosoft365Group foreach ($group in $deletedGroups) { Remove-PnPDeletedMicrosoft365Group -Identity $group.Id Write-PSFMessage -Message "Deleted group removed: $($group.DisplayName)" -Level Host } if ($deletedGroups.Count -eq 0) { Write-PSFMessage -Message "No deleted groups found." -Level Host } else { Write-PSFMessage -Message "All deleted groups have been removed." -Level Host } } catch { Write-PSFMessage -Message "An error occurred: $_" -Level Error } } End { Disconnect-PnPOnline -ErrorAction SilentlyContinue } } |