Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从庞大的组列表中删除用户的更快方法?_Powershell - Fatal编程技术网

Powershell 从庞大的组列表中删除用户的更快方法?

Powershell 从庞大的组列表中删除用户的更快方法?,powershell,Powershell,我运行以下代码从9874个组的列表中删除禁用的用户: $user = get-aduser <userid> -Server "<server from another domain>" foreach ($Group in $Groups) { Write-Host "Removing $user from $group" -Foreground Green Remove-ADGroupMember -Identity $group -Member

我运行以下代码从9874个组的列表中删除禁用的用户:

 $user = get-aduser <userid> -Server "<server from another domain>"

 foreach ($Group in $Groups) {
    Write-Host "Removing $user from $group" -Foreground Green
    Remove-ADGroupMember -Identity $group -Members $user -Confirm:$false
}
$user=get aduser-Server“”
foreach($组中的组){
写入主机“从$group中删除$user”-前景绿色
删除ADGroupMember-标识$group-成员$user-确认:$false
}

这对我来说是一个瓶颈,因为它会检查/删除每个组中的帐户。有没有一种方法可以通过更高效的PS代码来加速此过程?

如果对于给定的用户,memberOf是您唯一感兴趣的东西,那么您可以运行以下命令。它只加载memberOf属性并从每个属性中删除用户。由于它没有加载所有的帐户属性,因此可以稍微提高性能

Get-ADUser <userid> -Server "<server from another domain>" -Properties MemberOf `
    | Select -Expand MemberOf | % { 
        Remove-ADGroupMember $_ -member <userid>"
    }
Get ADUser-Server”“-MemberOf属性`
|选择-展开|%{
删除ADGroupMember$\成员“
}

如果您对给定用户唯一感兴趣的是memberOf,则可以运行以下操作。它只加载memberOf属性,并从每个属性中删除用户。由于它没有加载所有帐户属性,因此可以稍微提高性能

Get-ADUser <userid> -Server "<server from another domain>" -Properties MemberOf `
    | Select -Expand MemberOf | % { 
        Remove-ADGroupMember $_ -member <userid>"
    }
Get ADUser-Server”“-MemberOf属性`
|选择-展开|%{
删除ADGroupMember$\成员“
}

提高速度的方法使用runspacepool,或者获取PS版本7并使用
ForEach Object-Parallel
也要避免向控制台写入任何东西,这也会减慢速度。用户列表小吗?也许你可以考虑使用<代码>删除AdPrimuleGROPIGNITION/COD>来从一组较小的用户中删除一组组。另外,
-Members
需要一组用户,因此您可以减少
Remove ADGroupMember
调用的数量。我喜欢在控制台上查看进度,看看是否接近完成。我不知道总共有多少用户。我正在运行一个脚本来查找组中的禁用帐户,然后运行此脚本来从特定OU的所有组列表中删除我找到的禁用帐户。我这样做是因为我们有多个域和单向信任,所以在一个脚本中完成这一切太复杂了。提高速度的方法是使用runspacepool,或者使用PS版本7并使用
ForEach Object-Parallel
也避免向控制台写入任何东西,这也会减慢速度。用户列表小吗?也许你可以考虑使用<代码>删除AdPrimuleGROPIGNITION/COD>来从一组较小的用户中删除一组组。另外,
-Members
需要一组用户,因此您可以减少
Remove ADGroupMember
调用的数量。我喜欢在控制台上查看进度,看看是否接近完成。我不知道总共有多少用户。我正在运行一个脚本来查找组中的禁用帐户,然后运行此脚本来从特定OU的所有组列表中删除我找到的禁用帐户。我这么做是因为我们有多个域和单向信任,所以在一个脚本中完成这一切太复杂了。谢谢你的建议,但这不起作用。我认为这是因为帐户和安全组位于两个不同的域中。@DanielGower您也可以添加-Server开关来删除ADGroupMember。谢谢您的建议,但这不起作用。我认为这是因为帐户和安全组位于两个不同的域中。@DanielGower您可以添加-Server开关来删除ADGroupMember。