查找禁用帐户的所有者的安全和通讯组

时间:2019-05-02 07:20:15

标签: powershell

我正在寻找有关创建Powershell脚本的指南,该脚本将检查来自特定OU的安全性和通讯组,并查看所有者是否是被禁用的用户。

我们的广告中有很多由前员工创建的旧小组,需要清理。

这就是我的开始。

$managedByGroups = get-adgroup -filter 'groupCategory -eq "Distribution"' -SearchBase "OU=SydExchangeGroups,OU=SydGroups,OU=Sydney,DC=my,DC=org,DC=biz" -Properties distinguishedname, managedby | select sAMAccountName, managedby

$disabledUsers = Get-ADUser -Filter {Enabled -eq $false} -SearchBase "OU=SydDisabledUsers,OU=SydMisc,OU=Sydney,DC=my,DC=org,DC=biz" | select distinguishedname

foreach ($group in $managedByGroups){

    if($managedByGroups.managedby -eq $disabledUsers.distinguishedname)
    {
        write-output
    }
}

谢谢

2 个答案:

答案 0 :(得分:0)

if块存在很多问题:

  • 您正在遍历$ managedByGroups,但从未使用过该变量(应为$ group.managedby)
  • 您正在尝试将1个元素与元素列表进行比较,在这种情况下,请考虑使用-in运算符而不是-eq。
  • 如果您没有得到期望的结果,应该处理好托管属性没有值的情况。

下面是您的代码的另一种选择。 我首先获取由用户管理的列表,然后遍历每个条目,如果不为null,我们尝试按启用状态和专有名称进行get-aduser过滤。

$ DisabledManagedBy变量将包含已禁用的ADUser对象。

$grp = get-adgroup -filter 'groupCategory -eq "Distribution"' -Properties ManagedBy,DistinguishedName


$DisabledManagedBy = foreach ($item in $grp.ManagedBy) {
    if ($item) {
        Get-ADUser -Filter {Enabled -eq $false -and DistinguishedName -like $item} -Properties DistinguishedName
        }
    }

答案 1 :(得分:0)

我最终通过执行以下操作解决了这个问题:

$myDisabledUsers = @()
$date = get-date -format dd-MM-yyyy
$managedSydGroups = Get-ADGroup -Filter * -Properties * -Searchbase "OU=SydExchangeGroups,OU=SydGroups,OU=Sydney,DC=my,DC=biz,DC=org" | where {$_.managedby -ne $null} | select name, managedby
$disabledSydUser = Get-ADUser -Filter * -SearchBase "OU=SydDisabledUsers,OU=SydMisc,OU=Sydney,DC=my,DC=biz,DC=org" | where {$_.enabled -eq $false} | select -ExpandProperty distinguishedname

$disabledOwners = foreach($group in $managedSydGroups)
{
    $managedByString = [string]$group.managedby
    if($disabledSydUser -contains $managedByString)
    {$myDisabledUsers += $group} 
}