Get Mailbox Size Report

Added support for certificate based authentication
This commit is contained in:
AdminDroid 2024-07-08 16:48:34 +05:30
parent 67f15b3b77
commit 21da68b523

View File

@ -2,19 +2,20 @@
============================================================================================= =============================================================================================
Name: Microsoft 365 Mailbox Size Report Name: Microsoft 365 Mailbox Size Report
Description: This script exports Microsoft 365 mailbox size report to CSV Description: This script exports Microsoft 365 mailbox size report to CSV
Version: 2.0 Version: 3.0
Website: o365reports.com Website: o365reports.com
Script Highlights: Script Highlights:
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
1.The script uses modern authentication to connect to Exchange Online. 1.Exports mailbox size report for all mailboxes.
2.The script can be executed with MFA enabled account too. 2.Retrieves mailbox size for list of mailboxes (import CSV)
3.Exports report results to CSV. 3.Allows to use filter to get user mailboxes size alone 
4.You can choose to either export mailbox size of all mailboxes or pass an input file to get usage statistics of specific mailboxes alone. 4.Allows to use filter to get shared mailboxes size alone. 
5.Allows to use filter to get user mailboxes size alone 5.Automatically installs the EXO PowerShell module (if not installed already) upon your confirmation. 
6.Allows to use filter to get shared mailboxes size alone. 6.The script can be executed with MFA enabled account too.  
7.Automatically installs the EXO (Exchange Online) V2 module (if not installed already) upon your confirmation. 7.Exports report results to CSV. 
8.The script is scheduler friendly. I.e., Credential can be passed as a parameter instead of saving inside the script. 8.The script is scheduler friendly. 
9.Supports certificate- based authentication (CBA) too.
For detailed Script execution: https://o365reports.com/2020/10/21/export-office-365-mailbox-size-report-using-powershell/ For detailed Script execution: https://o365reports.com/2020/10/21/export-office-365-mailbox-size-report-using-powershell/
============================================================================================ ============================================================================================
@ -22,12 +23,14 @@ For detailed Script execution: https://o365reports.com/2020/10/21/export-office-
Param Param
( (
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
[switch]$MFA,
[switch]$SharedMBOnly, [switch]$SharedMBOnly,
[switch]$UserMBOnly, [switch]$UserMBOnly,
[string]$MBNamesFile, [string]$MBNamesFile,
[string]$UserName, [string]$UserName,
[string]$Password [string]$Password,
[string]$Organization,
[string]$ClientId,
[string]$CertificateThumbprint
) )
Function Get_MailboxSize Function Get_MailboxSize
@ -48,44 +51,39 @@ Function Get_MailboxSize
Function main() Function main()
{ {
#Check for EXO v2 module inatallation #Check for EXO module inatallation
$Module = Get-Module ExchangeOnlineManagement -ListAvailable $Module = Get-Module ExchangeOnlineManagement -ListAvailable
if($Module.count -eq 0) if($Module.count -eq 0)
{ {
Write-Host Exchange Online PowerShell V2 module is not available -ForegroundColor yellow Write-Host Exchange Online PowerShell module is not available -ForegroundColor yellow
$Confirm= Read-Host Are you sure you want to install module? [Y] Yes [N] No $Confirm= Read-Host Are you sure you want to install module? [Y] Yes [N] No
if($Confirm -match "[yY]") if($Confirm -match "[yY]")
{ {
Write-host "Installing Exchange Online PowerShell module" Write-host "Installing Exchange Online PowerShell module"
Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force -Scope CurrentUser
Import-Module ExchangeOnlineManagement
} }
else else
{ {
Write-Host EXO V2 module is required to connect Exchange Online.Please install module using Install-Module ExchangeOnlineManagement cmdlet. Write-Host EXO module is required to connect Exchange Online.Please install module using Install-Module ExchangeOnlineManagement cmdlet.
Exit Exit
} }
} }
Write-Host Connecting to Exchange Online...
#Connect Exchange Online with MFA #Storing credential in script for scheduling purpose/ Passing credential as parameter - Authentication using non-MFA account
if($MFA.IsPresent)
{
Connect-ExchangeOnline
}
#Authentication using non-MFA
else
{
#Storing credential in script for scheduling purpose/ Passing credential as parameter
if(($UserName -ne "") -and ($Password -ne "")) if(($UserName -ne "") -and ($Password -ne ""))
{ {
$SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force $SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force
$Credential = New-Object System.Management.Automation.PSCredential $UserName,$SecuredPassword $Credential = New-Object System.Management.Automation.PSCredential $UserName,$SecuredPassword
Connect-ExchangeOnline -Credential $Credential
}
elseif($Organization -ne "" -and $ClientId -ne "" -and $CertificateThumbprint -ne "")
{
Connect-ExchangeOnline -AppId $ClientId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false
} }
else else
{ {
$Credential=Get-Credential -Credential $null Connect-ExchangeOnline -ShowBanner:$false
}
Connect-ExchangeOnline -Credential $Credential
} }
#Output file declaration #Output file declaration