在ADUC可删除用户但PowerShell执行Remove-ADUser提示权限拒绝求助
问题描述
我编写了以下PowerShell脚本用于删除AD中指定CSV文件里的用户:
$csvFilePath = "C:\path\to\file.csv" Import-Csv -Path $csvFilePath | ForEach-Object { $username = $_.SamAccountName Remove-ADUser -Identity $username }
通过ADUC(Active Directory Users and Computers)右键可以正常删除目标用户账号,但运行脚本时收到权限拒绝错误:
Remove-ADUser : Access is denied
CategoryInfo : PermissionDenied: (ACCOUNT I WANT TO DELETE:ADUser) [Remove-ADUser], UnauthorizedAccessException
FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.UnauthorizedAccessException,Microsoft.ActiveDirectory.Management.Commands.RemoveADUser
已尝试在标准终端和管理员终端运行,且使用了ADUC中能删除账号的同一特权账号启动PowerShell。
排查与解决步骤
确认PowerShell会话的实际运行身份
运行以下命令查看当前PowerShell会话的用户身份,确保和ADUC使用的账号完全一致(包含完整域名,如DOMAIN\AdminAccount):[System.Security.Principal.WindowsIdentity]::GetCurrent().Name若身份不符,右键PowerShell选择「以其他用户身份运行」,重新输入特权账号的凭据启动会话。
检查目标用户所在OU的权限继承与权限设置
- 打开ADUC,找到目标用户所在的OU,右键选择「属性」→「安全」选项卡
- 点击「高级」,确认「包括可从该对象的父项继承的权限」已勾选
- 检查你的特权账号是否拥有该OU的「删除」和「删除子对象」权限,若没有则添加对应权限
尝试指定域控制器运行命令
ADUC和PowerShell可能连接了不同的域控制器,导致权限同步延迟。在Remove-ADUser命令中添加-Server参数指定ADUC使用的域控制器:Remove-ADUser -Identity $username -Server "DC01.yourdomain.com"添加-Recursive参数处理关联对象
部分用户账号可能包含子对象(如关联的联系人、组),ADUC删除时会自动处理这些关联,但Remove-ADUser默认不会。尝试添加-Recursive参数强制删除所有关联对象:Remove-ADUser -Identity $username -Recursive -Confirm:$false检查AD模块的执行策略
确保PowerShell的执行策略允许运行脚本,可临时设置为RemoteSigned:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
内容的提问来源于stack exchange,提问作者Oliver Betts-Richards

