You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:48:02