Sunday, 17 November 2013 00:00

Exchange 2010/2013 HelpDesk Pack - Download

Written by

Recently I came across a request from our HelpDesk for a tool to view the User Mailbox properties from their desktop with very minimal information. The challenge was all the machines that they use are running 32 bit OS (Windows 7 or Windows 8), which they could not upgrade due to some other application dependancy.

Here is a script which invoke the powershell library from Exchange Server through the ConnectionUri, and can run from any Windows 7 and Windows 8 machines. I hope the pulled information will help the HelpDesk team to do a first level analysis of the end user issues.  Take a look at the sample Exchange 2010/2013 Server Helpdesk Pack script below.


Download the complete Script Here

Now, let us look at the modification that you will have to do to make it work on your infra,

Change the Exchange Server name of  –ConnectionUri in the line starts with $Session

$Session = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri

thats' it, all other part of the script is common for any infrastructure.

Below shows the important part of the script,

#Main Function Gathering Exchange/AD Information

Function DisplayFn($x)
$MailboxProp = Get-Mailbox -Identity $x -ErrorAction SilentlyContinue
if($MailboxProp -eq $null)
    {[System.Windows.Forms.MessageBox]::Show("Verify Your Input" , "Status" , 0)}
#[System.Windows.Forms.MessageBox]::Show($x , "Status" , 4)
$CASFeature = Get-CASMailbox -Identity $x
$MailboxProp = Get-Mailbox -Identity $x
$MBXDBProp = Get-MailboxDatabase -Identity $MailboxProp.Database
$UserProp = Get-User –Identity $MailboxProp.SamAccountName
if ( $MailboxProp.ForwardingAddress -ne $null)
    $FowardAddress = Get-Recipient -Identity $MailboxProp.ForwardingAddress
    $objTextFwd.Text = $FowardAddress.PrimarySmtpAddress
    {$objTextFwd.Text = "N/A"}
if ($MailboxProp.UseDatabaseQuotaDefaults -eq $True)
    #$tempY = ($MBXDBProp.IssueWarningQuota).value.ToMB()
    #$objTextWarnQuota.Text = $MBXDBProp.IssueWarningQuota.value.ToMB()
    $objTextWarnQuota.Text = $MBXDBProp.IssueWarningQuota
    $objTextSendQuota.Text = $MBXDBProp.ProhibitSendQuota
    $objTextHardQuota.Text = $MBXDBProp.ProhibitSendReceiveQuota
    $objTextWarnQuota.Text = $MailboxProp.IssueWarningQuota
    $objTextSendQuota.Text = $MailboxProp.ProhibitSendQuota
    $objTextHardQuota.Text = $MailboxProp.ProhibitSendReceiveQuota
    }#[System.Windows.Forms.MessageBox]::Show($CASFeature , "Status" , 4)
$objTextOWA.Text = $CASFeature.OWAEnabled
$objTextAS.Text = $CASFeature.ActiveSyncEnabled
if ($MailboxProp.MaxSendSize -eq "unlimited")
    {$objTextSndLmt.Text = "10 MB"}
    {$objTextSndLmt.Text = $MailboxProp.MaxSendSize}$objTextRcptLmt.Text = $MailboxProp.RecipientLimits
$ObjTextPwdExpry.Text = (([datetime]::FromFileTime((Get-ADUser –Identity $MailboxProp.SamAccountName -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed"))-(Get-Date)).Days
$objTextEmail.Text = $MailboxProp.PrimarySMTPAddress
$objTextUAC.Text = $UserProp.UserAccountControl
$objTextDisName.Text = $UserProp.DisplayName
#$temptotSize = (Get-MailboxStatistics $UserProp.DisplayName).totalitemsize.value
$ObjTextMbxSize.Text = (Get-MailboxStatistics $UserProp.DisplayName).totalitemsize

The above written function gathers all the required information. If you wish to add more information, you can easily modify the script.

Download the complete Script Here


I have missed to mention the pre-requisite to run this script,

  • Any version of Windows 7 or 8 (32 or 64 bit)
  • Powershell 1.0 or above
  • Active Directory Admin Pack

Share your comments!!!

Download the complete Script Here


theme by reviewshub