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

如何高效存储所有用户的Outlook收件箱规则Identity信息?

用JSON单文件存储所有用户的收件箱规则Identity方案

直接用JSON格式把所有用户的规则Identity集中存储到单个文件,既能解决文件泛滥的问题,也方便后续读取对比。以下是具体实现代码和说明:

1. 收集所有用户规则Identity并保存为JSON

# 获取所有邮箱用户(可按需过滤,比如指定OU:Get-Mailbox -OrganizationalUnit "OU=Users,DC=domain,DC=com")
$allUsers = Get-Mailbox -ResultSize Unlimited

# 初始化哈希表,键为用户名,值为该用户的规则Identity数组
$userRulesMap = @{}

foreach ($user in $allUsers) {
    $mailbox = $user.Name
    # 提取该用户所有收件箱规则的Identity属性
    $ruleIdentities = Get-InboxRule -Mailbox $mailbox | Select-Object -ExpandProperty Identity
    $userRulesMap[$mailbox] = $ruleIdentities
}

# 转换为JSON并保存到单个文件(-Depth 10确保嵌套结构正常转换)
$userRulesMap | ConvertTo-Json -Depth 10 | Out-File -Path "C:\Temp\AllUserInboxRuleIdentities.json" -Encoding UTF8

2. 读取JSON文件并对比规则变化

# 读取历史JSON数据,转换为PowerShell对象
$oldRuleData = Get-Content -Path "C:\Temp\AllUserInboxRuleIdentities.json" -Raw | ConvertFrom-Json

# 获取当前所有用户的规则Identity(和收集代码逻辑一致)
$allUsers = Get-Mailbox -ResultSize Unlimited
$currentRuleData = @{}

foreach ($user in $allUsers) {
    $mailbox = $user.Name
    $currentRuleData[$mailbox] = Get-InboxRule -Mailbox $mailbox | Select-Object -ExpandProperty Identity
}

# 逐个用户对比规则变化
foreach ($userName in $allUsers.Name) {
    Write-Host "=== 用户 $userName 的规则对比结果 ==="
    $oldIds = $oldRuleData.$userName
    $currentIds = $currentRuleData[$userName]

    # 找出新增的规则Identity
    $addedIds = Compare-Object -ReferenceObject $oldIds -DifferenceObject $currentIds -PassThru | Where-Object { $_.SideIndicator -eq "=>" }
    if ($addedIds) {
        Write-Host "新增规则Identity:"
        $addedIds
    } else {
        Write-Host "无新增规则"
    }

    # 找出删除的规则Identity
    $removedIds = Compare-Object -ReferenceObject $oldIds -DifferenceObject $currentIds -PassThru | Where-Object { $_.SideIndicator -eq "<=" }
    if ($removedIds) {
        Write-Host "删除规则Identity:"
        $removedIds
    } else {
        Write-Host "无删除规则"
    }
    Write-Host "`n"
}

额外说明

  • JSON文件是结构化文本,既可以用PowerShell快速解析,也能手动打开查看,管理成本远低于大量TXT文件
  • 若用户数量较多,建议给Get-InboxRule添加try/catch错误处理,避免单个用户的异常导致脚本中断
  • 可根据实际需求调整JSON文件的保存路径和文件名

内容的提问来源于stack exchange,提问作者Vurdalag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:06:11