当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 清理 Active Directory 组

作者:精品下载站 日期:2024-12-14 07:13:40 浏览:15 分类:玩电脑

使用 PowerShell 清理 Active Directory 组


照顾本地 Active Directory(如果它仍然存在)是最重要的任务之一,因此您可能还需要从组中清除禁用的用户。有时您不想删除用户,但只需要将其从 AD 组中删除(通常是出于许可问题等)

我遇到过这种情况,因此编写了一个小的 PowerShell 脚本。此脚本搜索 AD 组中禁用的成员,也可以将其删除。这也可以针对 Microsoft Exchange 的通讯组执行。
注意:如果有共享邮箱/房间邮箱作为成员,它们也将被删除,因为 AD 用户也被禁用。

最后我们来看看剧本吧。如果您复制整个脚本,它不会从组中删除任何人,因为它处于“模拟”模式。要执行删除,您需要删除第 23 行中的“-whatif”。

#type the adgroup name to check
$grouptoclean = "XXXXX"

####
$dcfqdn  = ((Get-ADDomainController).Hostname)

$groupmembers = Get-ADGroupMember -Server $dcfqdn -Identity $grouptoclean  | sort

$inactiveusers = @()
foreach($user in $groupmembers){

  $dist = ($user).distinguishedName
  
  $enabled = Get-ADUser -Server $dcfqdn -Identity "$dist" | Where-Object{$_.enabled -eq $false}
  $sam = ($enabled).SamAccountName
  $upn = ($enabled).UserPrincipalName
  $active = ($enabled).Enabled
  
  if($enabled){
    Write-Host "UPN: $upn , SAM: $sam is disabeld, Status: $active" -ForegroundColor Yellow
    $inactiveusers += $sam 
    Remove-ADGroupMember -Identity $grouptoclean -Members $sam -server $dcfqdn -Confirm:$false -WhatIf
    
  }
  else{
      $member = Get-ADUser -Server $dcfqdn -Identity "$dist"
      
      $sammember = ($member).SamAccountName
      $upnmember = ($member).UserPrincipalName
      $activemember = ($member).Enabled
      
    Write-Host "UPN: $upnmember, SamAccountName: $sammember Status: $activemember"
  
  } 
  
 
} 


$inactiveusers

($inactiveusers).count 

#$inactiveusers = $null

[玩转系统] 使用 PowerShell 清理 Active Directory 组

PowerShell 控制台显示还将删除的所有已禁用用户。

[玩转系统] 使用 PowerShell 清理 Active Directory 组

使用变量“$inactiveusers”,您可以检索您选择的组中的所有非活动成员。使用相同的控制台会话第二次执行脚本后,将添加用户,请小心。要清除此变量,您可以使用最后一行“$inactiveusers=$null”。

使用“($inactiveusers).count”可以很容易地统计所有不活跃的成员。

[玩转系统] 使用 PowerShell 清理 Active Directory 组

享受清理本地广告组的乐趣。如果您喜欢这篇文章,请点击“有用”。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯