Author Posts

July 6, 2016 at 2:30 pm

Hi People,

I have a script to get al usermailboxes in exchange online.

But i tried serveral options to list everything in descending and tried to get the output in a csv file. but failed

any one the solution for me ?

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $admin -Authentication Basic -AllowRedirection
$ImportCmd = Import-PSSession $Session

$userToFind = Read-Host -Prompt "Enter user to find (leave blank for all)"

$params = @{}
if([string]::IsNullOrEmpty($userToFind) -eq $false)
{$params = @{Identity = $userToFind}
}



$UserMailboxStats = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited @Params | Get-MailboxStatistics
$UserMailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""}
$UserMailboxStats | Select-Object DisplayName, TotalItemSizeInBytes,@{Name="TotalItemSize (GB)"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}}

July 6, 2016 at 3:55 pm

Should be this simple:

#Sort the stats on Bytes
$sortedUserMailboxStats = $UserMailboxStats | Sort-Object -Property TotalItemSizeInBytes -Descending
#Export to CSV
$sortedUserMailboxStats | Export-CSV C:\UserMailboxStats.csv -NoTypeInformation

July 7, 2016 at 6:39 am

Yeah great,

I tested it and it looked it worked but i got the following error message

Export-CSV : Toegang tot het pad C:\UserMailboxStats.csv is geweigerd.
At Q:\Scripts\Test\list mailboxs Exchange online.ps1:23 char:27
+ ... rMailboxStats | Export-CSV C:\UserMailboxStats.csv -NoTypeInformation
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Export-Csv], UnauthorizedAccessException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand

and it is not listing from bigget to smalles

  • This reply was modified 2 years, 2 months ago by  Jeremy Smit.

July 7, 2016 at 2:41 pm

My script so far, (i'm very new with this, if someone has a tip to learn for scripting let me know)

$Username = "username"
$Password = ConvertTo-SecureString "password" -AsPlainText -Force
$Admin = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $admin -Authentication Basic -AllowRedirection
$ImportCmd = Import-PSSession $Session

$userToFind = Read-Host -Prompt "Enter user to find (leave blank for all)"

$params = @{}
if([string]::IsNullOrEmpty($userToFind) -eq $false)
{$params = @{Identity = $userToFind}
}


$UserMailboxStats = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited @Params | Get-MailboxStatistics
$UserMailboxStats | Add-Member -MemberType ScriptProperty -Name TotalItemSizeInBytes -Value {$this.TotalItemSize -replace "(.*\()|,| [a-z]*\)", ""}
$UserMailboxStats | Select-Object DisplayName, TotalItemSizeInBytes,@{Name="TotalItemSize (GB)"; Expression={[math]::Round($_.TotalItemSizeInBytes/1GB,2)}}

#Sort the stats on Bytes
$sortedUserMailboxStats = $UserMailboxStats | Sort-Object -Property TotalItemSizeInBytes -Descending
#Export to CSV
$sortedUserMailboxStats | Export-CSV C:\UserMailboxStats.csv -NoTypeInformation

July 7, 2016 at 2:55 pm

You just need to provide a CSV path that you have access to write to, you are getting access denied creating the CSV. Just change the bolded path to your desktop or somewhere you have permissions to write\create:

$sortedUserMailboxStats | Export-CSV C:\UserMailboxStats.csv -NoTypeInformation