• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
OpenTechTips

OpenTechTips

Practical IT Guides, Expert Tips, and Real-World Solutions

MENUMENU
  • HOME
  • ALL TOPICS
    • Exchange
    • InfoSec
    • Linux
    • Networking
    • Scripting
      • PowerShell
    • SSL
    • Tools
    • Virtualization
    • Web
    • Windows
  • ABOUT
  • SUBSCRIBE
Home ยป Check folder sizes in Exchange with PowerShell

Check folder sizes in Exchange with PowerShell

September 22, 2020 - by Zsolt Agoston - last edited on September 22, 2020

The script returns the cumulative size of the requested folder with and without subfolders counted in.

<#
#################################################
# Function to display folder sizes in a mailbox #
#################################################
Syntax:
FolderSize -Mailbox Alice -Folder Inbox -MB

or with pipeline input
Get-Mailbox Alice | FolderSize -Folder Inbox

or querying all folders in KB measurements
Get-Mailbox Alice | FolderSize -KB
#>

function FolderSize {
	param (
		[Parameter(Mandatory=$true, ValueFromPipeline=$true)] [string]$Mailbox,
		[Parameter(Mandatory=$false)]	[string]$Folder,
		[Parameter(Mandatory=$false)]	[switch]$MB,
		[Parameter(Mandatory=$false)]	[switch]$KB
	)

	# Check if mailbox exists
	if ((Get-Mailbox $Mailbox -ErrorAction silent) -eq $null) {
		Write-Host -f magenta "$Mailbox does not exist or mistyped.";
		break}

	# If Folder is not specified, query all
	if ($Folder -like "") { $Folder = "*" }
	
	# Getting folder list and sizes
	Get-MailboxFolderStatistics $Mailbox | ? name -like $Folder | %{
		$name = $_.name
		$size = $_.FolderSize.split("( ")[3].replace(",","")
		$all = $_.FolderAndSubfolderSize.split("( ")[3].replace(",","")
		
		# GB, MB or KB
		if ($MB) {
			$size = '{0:N3}' -f ($size / [math]::pow(1024,2))
			$all = '{0:N3}' -f ($all / [math]::pow(1024,2))
			$ms = 'MB'
		} elseif ($KB) {
			$size = '{0:N3}' -f ($size / [math]::pow(1024,1))
			$all = '{0:N3}' -f ($all / [math]::pow(1024,1))
			$ms = 'KB'
		} else {
			$size = '{0:N3}' -f ($size / [math]::pow(1024,3))
			$all = '{0:N3}' -f ($all / [math]::pow(1024,3))
			$ms = 'GB'
		}
		
		# Display the results
		[pscustomobject]@{"Mailbox" = $Mailbox; "Folder" = $name; "Size ($ms)" = $size; "Size With Subfolders ($ms)" = $all}
		
	}

}

If you want to save the output in a csv file fell free to pipe out the results using the export-csv cmdlet!

# Example
PS C:\> get-mailbox alice | FolderSize -Folder inbox -MB

Mailbox Folder Size (MB) Size With Subfolders (MB)
------- ------ --------- -------------------------
Alice   Inbox  3.284     7.324

Reader Interactions

Comments Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Tools

Secondary Sidebar

  • Terms of Use
  • Disclaimer
  • Privacy Policy
Manage your privacy
We use technologies like cookies to store and/or access device information. We do this to improve browsing experience and to show (non-) personalized ads. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
Manage options
  • {title}
  • {title}
  • {title}
Manage your privacy
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
Manage options
  • {title}
  • {title}
  • {title}