Forum Discussion
Name, Department, #of Emails, Mailbox Size
Erick A. Moreno R. I think the column name is lastuseractiontime.
Erick A. Moreno R. More details - I need to know regarding the lastactionusertime column when was the last time they accessed their archived email.
- Erick A. Moreno R.Feb 14, 2020Iron Contributor
lpmdvip Here you have.
About the lastuseractiontime property, I haven't used that one before and not have documentation on its purpose.<# .SYNOPSIS Get MBXs Stats, User Attribute(s), Folder(s) Counts .DESCRIPTION .NOTES Author: Erick A. Moreno Email: emoreno@request-script.com Date: 12 Jan 2020 PowerShell: v3 .References #requested: https://techcommunity.microsoft.com/t5/windows-powershell/name-department-of-emails-mailbox-size/m-p/1167911 #> $CredentialsFolder = "$home\Documents\" $WorkingDir = "$home\Documents" $ScriptTime = Get-Date -UFormat "%m%d%Y-%H%M" #region Functions Function _Get-Sessions { Param( [Parameter(Mandatory=$true)]$CredentialsFolder, [Parameter(Mandatory=$true)]$CredentialsFileName ) #region Check for Credentials File $TargetCredPath = $CredentialsFolder #Credential XML File Location $TargetCredName = $TargetCredPath + $CredentialsFileName #Write-Host $TargetCredName If(Test-Path $TargetCredName) { $TargetCred = Import-Clixml $TargetCredName } Else { $Cred = Get-Credential $Cred | Export-CliXml -Path $(Join-Path -path $TargetCredPath -ChildPath RemotePS.cred) $TargetCred = Import-Clixml $TargetCredName } #endregion #region connections $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $TargetCred -Authentication Basic -AllowRedirection $NoOutput = Import-PSSession $Session -AllowClobber -Prefix O365 -CommandName "*Mailbox*","*User*" #endregion Return $Session } #endregion #region Open PS Sessions $TenantSession = _Get-Sessions -CredentialsFolder $CredentialsFolder -CredentialsFileName RemotePS.cred #endregion $MBXs = Get-O365Mailbox -ResultSize Unlimited $Counter = $MBXs.count $Results = @() $NoDepartment = @() $Counter Foreach($MBX in $MBXs) { #Start-Sleep -Milliseconds 300 $PsSessionState = $(Get-PsSession $TenantSession.Id).State If($($Counter/100) -match '^[0-9]+$' -or $PsSessionState -ne "Opened") { Remove-PSSession $TenantSession.Id -Confirm:$false Write-Host "Opening a new Session Each 100 iterations" -ForegroundColor Yellow $TenantSession = _Get-Sessions -CredentialsFolder $CredentialsFolder -CredentialsFileName RemotePS.cred } Write-Host "($Counter) Working On MBX: $($MBX.PrimarySmtpAddress)" -ForegroundColor Cyan $Stats = $null $UserData = $null $FolderItems = $null $UserData = Get-O365User $MBX.PrimarySmtpAddress If(![string]::IsNullOrEmpty($($UserData.Department))) { $Stats = Get-O365MailboxStatistics -Identity $MBX.PrimarySmtpAddress -Archive $FolderItems = Get-O365MailboxFolderStatistics -Identity $MBX.PrimarySmtpAddress | Where {$_.Name -match “Inbox|Sent Items|Deleted Items|Junk E-Mail”} | Select Name,ItemsInFolder #Add Folders as needed $Properties = [Ordered]@{ DisplayName = $MBX.DisplayName Department = $UserData.Department #Add properties as needed UserPrincipalName = $MBX.UserPrincipalName MailboxSizeMB = [math]::Round($($Stats.TotalItemSize.Value.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1MB),4) MailboxSizeGB = [math]::Round($($Stats.TotalItemSize.Value.ToString().Split("(")[1].Split(" ")[0].Replace(",","")/1GB),4) InboxItems = $($FolderItems | where{$_.Name -eq "Inbox"}).ItemsInFolder SentItems = $($FolderItems | where{$_.Name -eq "Sent Items"}).ItemsInFolder DeletedItems = $($FolderItems | where{$_.Name -eq "Deleted Items"}).ItemsInFolder JunkItems = $($FolderItems | where{$_.Name -eq "Junk E-Mail"}).ItemsInFolder LastLogon = $Stats.LastLogonTime.ToString() lastuseractiontime = $Stats.lastuseractiontime PrimarySMTPAddress = $MBX.PrimarySmtpAddress } $Results += New-Object PSObject -Property $Properties } Else { Write-Host "Department Field is Empty Skipping MBX: $($MBX.PrimarySmtpAddress)" $NoDepartment += $($MBX.PrimarySmtpAddress) } $Counter-- } $Results | Export-Csv -Path "$WorkingDir\ReportMBXsStats_$ScriptTime.csv" -NoTypeInformation -Encoding UTF8 -Force $NoDepartment | Export-Csv -Path "$WorkingDir\NoDepartmentField_$ScriptTime.csv" -NoTypeInformation -Encoding UTF8 -Force Write-Host "Report Saved To: $WorkingDir\ReportMBXsStats_$ScriptTime.csv" -ForegroundColor Cyan Write-Host "Report Saved To: $WorkingDir\NoDepartmentField_$ScriptTime.csv" -ForegroundColor Cyan
- lpmdvipFeb 14, 2020Copper Contributor
Erick A. Moreno R. Just to confirm - My team originally found this Powershell:
Get-Mailbox "-resultsize unlimited" | Get-MailboxStatistics -archive | select displayname, lastuseractiontime > c:\reports\archiveslastaccessed.csv
Is there a way to incorporate this into your script? Or does the lastuseractiontime indeed simply confirm the last time they used any part of Outlook?
- Erick A. Moreno R.Feb 14, 2020Iron Contributor
lpmdvip
Not sure that is possible, I think it is the same timestamp that you asked before: LastLogonTime.