批量修改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 } }
关键说明
- 权限要求:运行脚本的账户需具备域管理员权限,或拥有修改AD对象所有者、权限及删除对象的权限。
- 兼容性处理:部分AD模块版本可能没有
Set-ADOwner命令,脚本中使用DirectoryEntry类直接修改所有者,兼容性更强。 - 测试建议:可先从CSV中提取少量对象进行测试,确认脚本正常运行后再批量处理全部550个对象。
- 错误捕获:脚本包含异常捕获逻辑,会输出失败对象的信息,方便后续排查补处理。
单独权限修改脚本(若需先改权限再删除)
如果不需要一次性删除,可单独执行权限修改步骤:
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
相关产品推荐
相关产品推荐

