Exchange 2007
Exchange 2007 view database sizes
1 |
Get-MailboxDatabase | foreach-object {add-member -inputobject $_ -membertype noteproperty -name mailboxdbsizeinGB -value ([math]::Round(([int64](get-wmiobject cim_datafile -computername $_.server -filter ('name=''' + $_.edbfilepath.pathname.replace("\","\\") + '''')).filesize / 1GB),2)) -passthru} | Sort-Object mailboxdbsizeinGB -Descending | format-table identity,mailboxdbsizeinGB |
List all AD users in the domain and export to CSV:
1 |
Get-ADUser -filter * -properties emailAddress | Select SamAccountName | Export-CSV c:\temp.csv -notype |
Exchange 2010
Check if database is mounted:
1 |
get-mailboxdatabase -status | format-table Name,Mounted |
Check database name/server/size.
1 |
Get-MailboxDatabase -Status | select ServerName,Name,DatabaseSize |
Display the existing state of the queue (exports)
1 |
get-mailboxexportrequest | get-mailboxexportrequeststatistics |
Display database that the user is a member of:
1 |
Get-MailboxDatabase -Status | select ServerName,Name,DatabaseSize |
Exports user ‘billybob01’ contacts folders to PST.
1 |
new-mailboxexportrequest billybob01 -IncludeFolders "\Contacts","\Contacts\Office Contacts","\Contacts\Office Contacts" -FilePath \\localhost\pst\contacts.pst |
Updating GAL and OAB {script}:
1 2 3 4 |
Update-GlobalAddressList -Identity "Default Global Address List" Get-OfflineAddressBook | Update-OfflineAddressBook Start-Sleep -Seconds 1800 get-ClientAccessServer | Update-FileDistributionService |
EXCHANGE HEALTH SCRIPTS etc.
Wondering how many log files are generated per server every minute? Quickly find out by typing:
1 |
Get-MailboxDatabase -Server $env:ComputerName | ?{ %{$_.DatabaseCopies | ?{$_.ReplayLagTime -ne [TimeSpan]::Zero -And $_.HostServerName -eq $env:ComputerName} } } | %{ $count = 0; $MinT = [DateTime]::MaxValue; $MaxT = [DateTime]::MinValue; Get-ChildItem -Path $_.LogFolderPath -Filter "*????.log" | %{ $count = $count + 1; if($_.LastWriteTime -gt $MaxT){ $MaxT = $_.LastWriteTime}; if($_.LastWriteTime -lt $MinT){ $MinT= $_.LastWriteTime} }; ($count / ($MaxT.Subtract($MinT)).TotalMinutes) } | Measure-Object -Min -Max -Ave |
BACKUP STATUS
To see the timestamps for the last successful backups on a database, run the command below…
1 |
Get-MailboxDatabase -server <<mailbox server name>> -status | ft name,last* |
See all mailbox sizes in DB to CSV
1 |
Get-MailboxStatistics -Database "DB146" | Select DisplayName, ItemCount, TotalItemSize | Sort-Object TotalItemSize -Descending | Export-CSV C:\MBSizes.csv |
If you leave out the –server switch, it will give you every DB on every server.
1 |
get-mailboxdatabase -status |ft name,last* |
CONTENT INDEX
1 2 3 4 5 6 7 8 9 10 |
Cd $exscripts Get-MailboxDatabaseCopyStatus -server exmbx001 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx002 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx003 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx004 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx005 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx006 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx007 | Sort-Object "Status" -Descending Get-MailboxDatabaseCopyStatus -server exmbx008 | Sort-Object "Status" -Descending |
1 |
(Get-DatabaseAvailabilityGroup) | ForEach {$_.Servers | ForEach {Get-MailboxDatabaseCopyStatus -Server $_}} | Sort-Object "content index state" –Descending |
To Update Content Index if not Healthy
1 |
update-mailboxdatabasecopy -Identity db101\EXMBX001 –CatalogOnly |
BALANCE DATABASES ON DAGS
1 |
Cd $exscripts |
You can use the script to output a report of the current mailbox database distribution among the DAG members:
1 2 |
.\RedistributeActiveDatabases.ps1 –DagName dag01 –ShowDatabaseDistributionByServer | ft .\RedistributeActiveDatabases.ps1 –DagName dag02 –ShowDatabaseDistributionByServer | ft |
Use this script to balance
1 2 |
.\RedistributeActiveDatabases.ps1 -DagName dag01 –BalanceDbsByActivationPreference -Confirm:$false .\RedistributeActiveDatabases.ps1 -DagName dag02 –BalanceDbsByActivationPreference -Confirm:$false |
Check if databases are mounted:
1 |
get-mailboxdatabase -status | format-table Name,Mounted |
Check Mailbox Database WhiteSpace:
1 |
Get-MailboxDatabase -Status | Select-Object Server,Name,AvailableNewMailboxSpace |
Check mailbox size + dumpster size:
1 |
Get-MailboxStatistics –database <DataBase> | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},@{label="TotalDeletedItemSize(MB)";expression={$_.totaldeleteditemsize.Value.ToMB()}},ItemCount |
Message Tracing
1 2 |
get-exchangeserver | where {$_.ServerRole -like "*HubTransport*"} | get-messagetrackinglog -sender:EMAIL@DOMAIN.COM Note: this will query all of the hub servers |
- PFSense with Starlink Failover Setup Guide - October 22, 2023
- Automower Cleaning and Maintenance - July 12, 2023
- Automower 430XH Power Issues - July 12, 2023