PowerShell - 将排除项添加到“Remove-ADGroupMember”命令中?

标签 powershell

当有人离开我的组织时,我们会删除除 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/

相关文章:

powershell - 由于超时时间已过错误,此操作返回

Powershell 脚本无法识别 DevOps Pipeline 中的文件

visual-studio - 有人找到了适用于 Visual Studio 的 PowerShell 语法突出显示或 IntelliSense 插件吗?

powershell - 如何编写对象的单个属性的值?

powershell - 如何创建包含 "/"的注册表项

scripting - 如何在Powershell上使用$字符作为字符串中的值?

powershell - 通过 PowerShell 在 TFS 上 checkout / checkin 文件

powershell - 单击按钮后如何最小化powershell表单?

Powershell 创建新的 Windows 10 虚拟机

powershell - 如何从使用带有 ffmpeg 的时间戳命名的帧创建视频