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

如何通过PowerShell移除AD组中不存在的旧SID成员?

批量移除AD组中无效的Foreign Security Principal成员

问题原因

你遇到的报错是因为那些CN=S-1-...格式的条目属于Foreign Security Principals(FSP),对应的外部域对象或FSP本身已不存在,直接用Remove-ADGroupMember会因AD无法定位对象而失败。下面是无需手动操作的批量清理方案:

单个组清理脚本

针对GROUPA这类特定组,可执行以下PowerShell脚本自动识别并移除无效FSP成员:

# 定位目标组并获取成员列表
$targetGroup = Get-ADGroup GROUPA -Properties Members

# 筛选出属于ForeignSecurityPrincipals容器的成员
$fspCandidates = $targetGroup.Members | Where-Object { $_ -match "CN=ForeignSecurityPrincipals," }

# 排查无效成员(AD中无法找到的对象)
$invalidMembers = @()
foreach ($member in $fspCandidates) {
    if (-not (Get-ADObject -Identity $member -ErrorAction SilentlyContinue)) {
        $invalidMembers += $member
    }
}

# 执行移除操作
if ($invalidMembers.Count -gt 0) {
    # 保留有效成员,覆盖组的成员列表
    $validMembers = $targetGroup.Members | Where-Object { $_ -notin $invalidMembers }
    Set-ADGroup $targetGroup -Replace @{ Members = $validMembers }
    Write-Host "已从GROUPA移除 $($invalidMembers.Count) 个无效成员"
} else {
    Write-Host "GROUPA中无无效FSP成员"
}

全域批量清理脚本

如果需要清理所有安全组中的无效FSP成员,可使用以下脚本:

# 获取域内所有安全组(可根据需求调整筛选条件,如限定OU)
$allSecurityGroups = Get-ADGroup -Filter { GroupCategory -eq "Security" } -Properties Members

foreach ($group in $allSecurityGroups) {
    Write-Host "正在检查组: $($group.Name)"
    $fspCandidates = $group.Members | Where-Object { $_ -match "CN=ForeignSecurityPrincipals," }
    $invalidMembers = @()

    foreach ($member in $fspCandidates) {
        if (-not (Get-ADObject -Identity $member -ErrorAction SilentlyContinue)) {
            $invalidMembers += $member
        }
    }

    if ($invalidMembers.Count -gt 0) {
        $validMembers = $group.Members | Where-Object { $_ -notin $invalidMembers }
        Set-ADGroup $group -Replace @{ Members = $validMembers }
        Write-Host "已从 $($group.Name) 移除 $($invalidMembers.Count) 个无效成员"
    } else {
        Write-Host "$($group.Name) 中无无效FSP成员"
    }
}

注意事项

  • 需使用域管理员或拥有组修改权限的账号运行脚本
  • 建议先在测试环境验证脚本逻辑,避免误操作
  • 成员数量较多的组会增加排查耗时,可通过-SearchBase参数限定处理范围(如特定OU下的组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:13:38