当有人离开我的组织时,我们会删除除 PrimaryGroup
(即域用户
)之外的所有 AD 组成员身份。我们经常批量处理这些用户名,因此从 CSV 文件中提取受影响的用户名。
我有以下代码,虽然它执行删除所有组成员身份的工作,但每个用户都会收到错误:
The user cannot be removed from a group because the group is currently the user's primary group
虽然它完成了工作,但我如何“清理”进程以避免每次都出现此消息?有没有办法将域用户
从其删除用户的组中排除,或者我应该以其他方式执行此操作?
$users = Import-Csv "c:\temp\leavers.csv"
foreach ($user in $users) {
Get-ADPrincipalGroupMembership -identity $user.username | foreach {Remove-ADGroupMember $_ -Members $user.username -Confirm:$false}
}
最佳答案
您可以使用 Where-Object
来过滤那些不在要排除的组数组中的组。如果您只想过滤 1 个特定组,则可以在下面的示例中使用 -NE
而不是 -NotIn
。
$groupToExclude = 'Domain Users', 'someOtherGroup'
$users = Import-Csv "c:\temp\leavers.csv"
foreach ($user in $users) {
try {
Get-ADPrincipalGroupMembership -Identity $user.username |
Where-Object Name -NotIn $groupToExclude |
Remove-ADGroupMember -Members $user.username -Confirm:$false
}
catch {
Write-Warning $_.Exception.Message
}
}
关于PowerShell - 将排除项添加到“Remove-ADGroupMember”命令中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71927321/