带输出的多组AD检查

时间:2019-10-24 21:53:23

标签: powershell active-directory wildcard

我正在尝试创建一个脚本,以检查A组的成员是否不是bg组的成员,以及它们是否不是bg组的成员,然后将其名称输出到log / excel工作表中-我得到了它输出的是这些组的成员的姓名,但我无法获得多个组的相反名称。如果我可以制作一个excel工作表,该工作表返回哪个用户是一列中组的一部分,而其他用户又是另一列中的组,那将很好,但是excel表单输出存在问题。这是我到目前为止完成的代码。任何帮助表示赞赏

    $logfile = "C:\Users\x\temp\outputgroupmembers.log"
    $group1 = get-adgroup group-a
    $checkgroups = Get-ADGroup -filter 'Name -like "AREA_*"' | Select-Object Name
    Foreach ($Usr In Get-ADGroupMember -Identity $group1.DistinguishedName)
    {
        # If the 'MemberOf' array of $Usr's group memberships contains 'group1', then...
        If ((Get-ADUser $Usr.SamAccountName -Properties MemberOf).MemberOf -contains $checkgroups)
        {
            try{
            # output user information to document log'.
            $displayname = get-aduser $Usr.SamAccountName -Properties DisplayName | select -expand displayname
            write-output $Usr.SamAccountName $displayname >> $logfile
            }
        catch {
            write-output "Domain users group NOT output to logfile" >> $logfile
        }
    }}

2 个答案:

答案 0 :(得分:0)

看看这个被剪掉的东西。我修改了代码,并添加了第二个foreach循环。
这可能有助于解决您的任务。

Truecaller

答案 1 :(得分:0)

如果有人遇到类似的麻烦,这是我在reddit上发表的同一问题的另一篇文章中的代码

$ReferenceGroup = Get-ADGroupMember BBB
$GroupList = @('CCC')
$Output = New-Object System.Collections.Generic.List[System.Object]
foreach ($User in  $ReferenceGroup) {
    $MemberObject = [pscustomobject]@{
            Name = $User.name
    }
            foreach ($Group in $GroupList) {
            if ((Get-ADGroupMember $Group)-match $User){
                $MemberObject | Add-Member -MemberType NoteProperty -Name $Group -Value Yes
            }
            else {
                $MemberObject | Add-Member -MemberType NoteProperty -Name $Group -Value No
            }
        }
    $Output.Add($MemberObject)
}
$Output | Export-Csv -Path C:\Users\Public\test.csv