如何修改PowerShell脚本分别查询邮箱最早邮件、日历、联系人条目
需求可行性说明
该需求完全可以实现,核心是利用Get-MailboxFolderStatistics返回结果中的FolderType属性过滤对应类型的文件夹,再匹配最早条目即可。
脚本同时适用于Exchange本地环境与Exchange Online PowerShell,执行前需确保已完成对应PowerShell模块的连接与权限配置(需拥有Mailbox Search或View-Only Recipients权限)。
调整后的分类查询脚本
# 定义要查询的邮箱标识(可替换为实际邮箱地址/用户名) $mailboxIdentity = "目标邮箱地址" # 查询最早邮件(默认查收件箱,如需包含已发送、已归档等邮件文件夹可调整下方FolderType过滤条件) Get-MailboxFolderStatistics -IncludeOldestAndNewestItems -Identity $mailboxIdentity | Where-Object { $_.FolderType -eq "Inbox" -and $_.OldestItemReceivedDate -ne $null } | Sort-Object OldestItemReceivedDate | Select-Object -First 1 @{Name="条目类型";Expression={"邮件"}}, OldestItemReceivedDate, FolderPath # 查询最早日历条目 Get-MailboxFolderStatistics -IncludeOldestAndNewestItems -Identity $mailboxIdentity | Where-Object { $_.FolderType -eq "Calendar" -and $_.OldestItemReceivedDate -ne $null } | Sort-Object OldestItemReceivedDate | Select-Object -First 1 @{Name="条目类型";Expression={"日历"}}, OldestItemReceivedDate, FolderPath # 查询最早联系人条目 Get-MailboxFolderStatistics -IncludeOldestAndNewestItems -Identity $mailboxIdentity | Where-Object { $_.FolderType -eq "Contacts" -and $_.OldestItemReceivedDate -ne $null } | Sort-Object OldestItemReceivedDate | Select-Object -First 1 @{Name="条目类型";Expression={"联系人"}}, OldestItemReceivedDate, FolderPath
高频查询场景优化脚本
如果日常需要频繁查询指定邮箱的对应条目,可以封装为可直接调用的函数:
function Get-MailboxOldestItem { param( [Parameter(Mandatory=$true)] [string]$Identity, [ValidateSet("邮件","日历","联系人","全部")] [string]$Type = "全部" ) $filterMap = @{ "邮件" = @("Inbox", "SentItems") "日历" = @("Calendar") "联系人" = @("Contacts") } $filterFolders = if($Type -eq "全部"){$filterMap.Values | ForEach-Object {$_}} else {$filterMap[$Type]} Get-MailboxFolderStatistics -IncludeOldestAndNewestItems -Identity $Identity | Where-Object { $filterFolders -contains $_.FolderType -and $_.OldestItemReceivedDate -ne $null } | Group-Object FolderType | ForEach-Object { $_.Group | Sort-Object OldestItemReceivedDate | Select-Object -First 1 @{Name="条目类型";Expression={ switch($_.FolderType){ "Inbox" {"邮件(收件箱)"} "SentItems" {"邮件(已发送)"} "Calendar" {"日历"} "Contacts" {"联系人"} } }}, OldestItemReceivedDate, FolderPath } }
- 调用示例(查询指定邮箱全部三类最早条目):
Get-MailboxOldestItem -Identity "user@domain.com" - 调用示例(仅查询指定邮箱最早邮件):
Get-MailboxOldestItem -Identity "user@domain.com" -Type 邮件
内容的提问来源于stack exchange,提问作者Miguel
相关产品推荐
相关产品推荐

