Where are mailbox last logon, client IP address, and other details in Exchange 2007?
Posted by Bharat Suneja at 7:20 AM

Figure 1: In Exchange 2003, the Logons node displays Store logon-related information. Click here to see a bigger screenshot.
In Exchange Server 2007, these details are not displayed in the EMC. The reasons are not hard to guess. These details are retrieved by querying the mailbox database. In Exchange 2003, these were displayed when you selected the mailbox database, resulting in a single mailbox database being queried. In Exchange 2007, mailboxes are displayed when you select Recipient Configuration -> Mailboxes, and depending on the selected scope/filter, the console displays mailboxes from the entire organization. Querying all mailbox databases on different servers in a distributed organization can become very slow, generate a lot of extra network traffic— terribly inefficient.
Instead, why not allow the administrator to query for these details when they're actually required? The shell provides you the flexibility to only get the fields you want, only for the mailboxes you want, making it much more efficient. If you manage smaller Exchange deployments and love your GUI management tools, you may not fall in love with the idea. (But that debate's already settled, and you're going to have to learn some bit of Exchange shell to be able to manage Exchange 2007 and later. The good news is, it's cooler, easy-to-use, well-documented by now, and comes with plenty of help!).
Logon Statistics
The Get-LogonStatistics cmdlet provides the following logon-related information.
AdapterSpeed :
ClientIPAddress :
ClientMode :
ClientName :
ClientVersion :
CodePage :
CurrentOpenAttachments :
CurrentOpenFolders :
CurrentOpenMessages :
FolderOperationCount :
FullMailboxDirectoryName :
FullUserDirectoryName :
HostAddress :
LastAccessTime :
Latency :
LocaleID :
LogonTime :
MACAddress :
MessagingOperationCount :
OtherOperationCount :
ProgressOperationCount :
RPCCallsSucceeded :
StreamOperationCount :
TableOperationCount :
TotalOperationCount :
TransferOperationCount :
UserName :
Windows2000Account :
ServerName :
StorageGroupName :
DatabaseName :
Identity :
Mailbox information
In ESM, the Mailboxes node of a Mailbox Store displays mailbox-related information such as mailbox size, number of items, and last logon/logoff.

Figure 2: In Exchange 2003, the Mailboxes node displays mailbox-related information. Click here to see a bigger screenshot.
This information can be retrieved using the Get-MailboxStatistics cmdlet. It provides the following information related to a mailbox:
AssociatedItemCount :
DeletedItemCount :
DisconnectDate :
DisplayName :
ItemCount :
LastLoggedOnUserAccount :
LastLogoffTime :
LastLogonTime :
LegacyDN :
MailboxGuid :
ObjectClass :
StorageLimitStatus :
TotalDeletedItemSize :
TotalItemSize :
Database :
ServerName :
StorageGroupName :
DatabaseName :
Identity :
Now that we're dealing with the shell, besides these cmdlets' built-in filtering capabilities (Database, Server, or mailbox), you can use Powershell's where-object cmdlet to further filter the results based on the properties returned by each cmdlet. For example, to find out logon sessions from a particular IP address:
Get-LogonStatistics -Server "MyServer" | where {$_.ClientIPAddress -like "192.168.2.101"}
Labels: Administration, Exchange Server 2007, Exchange Shell, Mailbox, Security

Exchangepedia Blog is read by visitors from all 50 US States and 150 countries world-wide


12 Comments:
Get-LogonStatistics default display is ugily:
Lots of ... in the output. Does anyone test this stuff? :-)
Another wonderful post - thanks for making it easier!
Daniel Smith
Will this stuff ever be put back in the GUI ?
Most non full time email administrators do not have the time to try and figure out PowerShell..
I can't seem to SEE all the fields, they're off the side. i'm fidgeting with window size, etc, but is there a way to say, show me fields listed DOWN instead of across?
@Lynne:
- To list all fields in a list view instead of the default table view, pipe the output to format-list, for example:
Get-Mailbox "foo" | fl
Get-ReceiveConnector | fl
Get-SendConnector | fl
- To select and view only particular properties of an object, use the Select-Object cmdlet:
Get-Mailbox | Select Name,Databse,*Email*
Get-ReceiveConnector | Select Name,Bindings
- To format tables where information in the rows fits, use the format-table cmdlet with the -AutoSize switch:
Get-Mailbox | ft Name,Database,*Email* -AutoSize
THANK YOU!!
Thanks! I've been looking for this!
I have another question, and i bet i'm just being dumb (again).
Sometimes when i do "get-logonstatistics" for a mailbox, nothing comes back. Just the prompt.
Does that mean the mailbox has never been logged on?
I'm trying to find out how someone accesses their mailbox, and it could be imap. How do i check for that?
oh and brilliant, get-logonstatistics is too wide for the default settings of the window and you can't change the width without causing an error.
GOOD WORK!!!
I personally love Powershell. It is one of the best decisions MS has ever made.
Get-LogonStatistics username | ft username, logontime, lastaccesstime, servername, clientversion -autosize
Or:
Get-LogonStatistics | Export-Csv logonstats.csv -NoTypeInformation
Export all the logon stats for every user, all fields, then you can sort and filter with Excel to get exactly what you are looking for.
How about this?
Get-LogonStatistics | where {$_.ClientVersion -eq "12.0.6423.1000"} | Measure-Object
Get the count times a mailbox was opened with Outlook 2007.
Hi to all!!!
Can you explain how to obtain history logging to one mailbox during the definite period of time.
This command returns only information about active connections, isn't it?
Best regards!!!
Would anyone have a CmdLet for gathering the lastLogon attribute from mailboxes on an Exchange 2003 server?
The goal is to have a script that will rehome mailboxes that have not been logged into over a set period, to an Exchange 2007 server.
Cheers
Post a Comment
Links to this post:
Create a Link
<< Home