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

批量修改ADObject所有者/权限 批量删除ExchangeActiveSyncDevice对象求助

批量处理Exchange ActiveSync设备对象权限并删除的解决方案

可以通过PowerShell脚本批量完成修改对象所有者、添加完全控制权限以及删除对象的全流程操作,无需手动逐个处理。以下是具体实现:

完整整合脚本

Import-Module ActiveDirectory

# 定义操作执行者账户(替换为实际的User123账户名)
$operatorUser = Get-ADUser -Identity "User123"
$operatorSID = $operatorUser.SID.Value

# 读取之前导出的设备对象列表
$deviceList = Import-CSV "C:\Users\User123\Documents\objects.csv"

foreach ($item in $deviceList) {
    try {
        # 通过objectGUID获取目标设备对象
        $deviceObj = Get-ADObject -Identity $item.objectGUID -ErrorAction Stop
        $deviceDN = $deviceObj.DistinguishedName

        # 1. 修改对象所有者为操作执行者
        $de = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$deviceDN")
        $de.ObjectSecurity.SetOwner($operatorSID)
        $de.CommitChanges()

        # 2. 为操作执行者添加完全控制权限
        $acl = Get-Acl "AD:\$deviceDN"
        $accessRule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
            $operatorSID,
            [System.DirectoryServices.ActiveDirectoryRights]::GenericAll,
            [System.Security.AccessControl.AccessControlType]::Allow
        )
        $acl.AddAccessRule($accessRule)
        Set-Acl "AD:\$deviceDN" $acl -ErrorAction Stop

        # 3. 删除设备对象
        Remove-ADObject -Identity $deviceObj -Confirm:$False -ErrorAction Stop
        Write-Host "✅ 成功处理并删除设备:$deviceDN" -ForegroundColor Green
    }
    catch {
        Write-Host "❌ 处理设备 $($item.objectGUID) 失败:$($_.Exception.Message)" -ForegroundColor Red
    }
}

关键说明

  1. 权限要求:运行脚本的账户需具备域管理员权限,或拥有修改AD对象所有者、权限及删除对象的权限。
  2. 兼容性处理:部分AD模块版本可能没有Set-ADOwner命令,脚本中使用DirectoryEntry类直接修改所有者,兼容性更强。
  3. 测试建议:可先从CSV中提取少量对象进行测试,确认脚本正常运行后再批量处理全部550个对象。
  4. 错误捕获:脚本包含异常捕获逻辑,会输出失败对象的信息,方便后续排查补处理。

单独权限修改脚本(若需先改权限再删除)

如果不需要一次性删除,可单独执行权限修改步骤:

Import-Module ActiveDirectory

$operatorUser = Get-ADUser -Identity "User123"
$operatorSID = $operatorUser.SID.Value
$deviceList = Import-CSV "C:\Users\User123\Documents\objects.csv"

foreach ($item in $deviceList) {
    try {
        $deviceObj = Get-ADObject -Identity $item.objectGUID -ErrorAction Stop
        $deviceDN = $deviceObj.DistinguishedName

        # 修改所有者
        $de = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$deviceDN")
        $de.ObjectSecurity.SetOwner($operatorSID)
        $de.CommitChanges()

        # 添加完全控制权限
        $acl = Get-Acl "AD:\$deviceDN"
        $accessRule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
            $operatorSID,
            [System.DirectoryServices.ActiveDirectoryRights]::GenericAll,
            [System.Security.AccessControl.AccessControlType]::Allow
        )
        $acl.AddAccessRule($accessRule)
        Set-Acl "AD:\$deviceDN" $acl -ErrorAction Stop

        Write-Host "✅ 已完成权限配置:$deviceDN" -ForegroundColor Green
    }
    catch {
        Write-Host "❌ 配置权限失败 $($item.objectGUID):$($_.Exception.Message)" -ForegroundColor Red
    }
}

执行完上述脚本后,即可直接运行你原本的删除脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:54:58