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

Purview保留标签添加审核者脚本问题:dispositionReviewStages修改无效

解决Purview保留标签处置审核阶段添加审核者无生效问题

核心问题排查与修正步骤

1. 移除Format-List导致的对象类型错误

你当前用Get-MgSecurityLabelRetentionLabel | Format-List获取标签详情,Format-List会将原始的Graph对象转换为格式化输出对象,导致后续无法正确访问DispositionReviewStages等嵌套属性。

修改代码:

# 移除Format-List,保留原始Graph对象
$labelDetails = Get-MgSecurityLabelRetentionLabel -RetentionLabelId $labelId

2. 切换GCC租户专用Graph端点

GCC环境的Graph API端点与公共云不同,你当前使用的graph.microsoft.com是公共云端点,请求会发送到错误环境,导致修改不生效。

修正端点与连接命令:

# 连接GCC环境的Graph
Connect-MgGraph -Environment USGov -Scopes "RecordsManagement.ReadWrite.All"

# 使用GCC专用端点
$uri = "https://graph.microsoft.us/v1.0/security/labels/retentionLabels/$labelId"

3. 简化dispositionReviewStages的PATCH方式

无需使用@delta语法,直接传递完整的更新后阶段数组更可靠,Graph API会自动覆盖原有集合内容。避免引入additionalProperties这类冗余字段,防止API忽略请求。

修改更新逻辑:

# 处理第一个审核阶段(如果有多个阶段可循环处理)
$targetStage = $labelDetails.DispositionReviewStages[0]
# 合并现有审核者与新审核者
$updatedReviewers = @($targetStage.ReviewersEmailAddresses) + $userEmail

# 构建更新后的阶段数组
$updatedStages = @(
    @{
        id = $targetStage.Id
        name = $targetStage.Name
        stageNumber = $targetStage.StageNumber
        reviewersEmailAddresses = $updatedReviewers
    }
)

# 构建PATCH请求体
$patchChanges = @{
    dispositionReviewStages = $updatedStages
}

$jsonConversion = $patchChanges | ConvertTo-Json -Depth 5

4. 验证JSON输出正确性

在发送请求前,先输出$jsonConversion确认结构符合要求,确保没有多余字段或格式错误。例如正确的JSON结构应该类似:

{
  "dispositionReviewStages": [
    {
      "id": "xxx",
      "name": "审核阶段1",
      "stageNumber": 1,
      "reviewersEmailAddresses": ["原审核者邮箱", "new@tenant.gov"]
    }
  ]
}

完整修正后的脚本示例

try {
    Import-Module Microsoft.Graph.Security
    # 连接GCC环境Graph
    Connect-MgGraph -Environment USGov -Scopes "RecordsManagement.ReadWrite.All"
}
catch {
    Write-Host "连接Security模块失败"
}

# 测试用标签ID
$labelId = "ea2d5f8f-6503-4d4c-87db-e60cbe640a17"
# 获取原始标签详情(无Format-List)
$labelDetails = Get-MgSecurityLabelRetentionLabel -RetentionLabelId $labelId

# 目标审核阶段
$targetStage = $labelDetails.DispositionReviewStages[0]
# 新审核者邮箱
$userEmail = "userName@ourTenant.gov"
# 合并审核者列表
$updatedReviewers = @($targetStage.ReviewersEmailAddresses) + $userEmail

# 构建更新后的阶段数组
$updatedStages = @(
    @{
        id = $targetStage.Id
        name = $targetStage.Name
        stageNumber = $targetStage.StageNumber
        reviewersEmailAddresses = $updatedReviewers
    }
)

# 构建PATCH请求体
$patchChanges = @{
    dispositionReviewStages = $updatedStages
}

$jsonConversion = $patchChanges | ConvertTo-Json -Depth 5

# GCC专用端点
$uri = "https://graph.microsoft.us/v1.0/security/labels/retentionLabels/$labelId"
# 发送PATCH请求
Invoke-MgGraphRequest -Method PATCH -Uri $uri -Body $jsonConversion -ContentType "application/json"

# 验证修改结果
$validation = Invoke-MgGraphRequest -Method GET -Uri $uri
$validation.dispositionReviewStages

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:35:56