获取组和子组的所有成员

时间:2019-03-04 15:41:18

标签: powershell active-directory adgroup

大家好。 我一直在尝试获取有关Active Directory中的组和子组的信息 我已经尝试了许多类似以下的变体,

我真正需要的是,获取广告名称中包含“ infolink”的所有组的CSV,我需要的列是:

  • GiveName
  • SN
  • 用户名
  • 邮件
  • ManagedBy

但是不管我怎么说,我只会得到一些我需要的东西。 有人已经有了一些可使我的生活更轻松的代码吗?如果是这样,我将不胜感激。

    Import-Module ActiveDirectory

    $Groups = (Get-AdGroup -filter * | Where {$_.name -like "*Infolink*"} |         select name -ExpandProperty name)

    $Table = @()

    $Record = @{
      "Group Name" = ""
      "Name" = ""
      "Username" = ""
      "mail" = ""
    }


    Foreach ($Group in $Groups) {

      $Arrayofmembers = Get-ADGroupMember -identity $Group -recursive |         select name,samaccountname

      foreach ($Member in $Arrayofmembers) {
        $Record."Group Name" = $Group
        $Record."Name" = $Member.name
        $Record."UserName" = $Member.samaccountname
        $objRecord = New-Object PSObject -property $Record
        $Table += $objrecord

      }
    }

    $Table | export-csv "D:\Infolink.csv" -NoTypeInformation

1 个答案:

答案 0 :(得分:0)

尝试一下

Import-Module ActiveDirectory
$groups = Get-ADGroup -Filter "name -like '*Infolink*'" -Properties ManagedBy
$table = foreach ($group in $groups) {
    $Arrayofmembers = Get-ADGroupMember -Identity $group -Recursive
    $ArrayofmembersUsers = $Arrayofmembers | Get-ADUser -Properties Mail
    $ArrayofmembersUsers | Add-Member -Name GroupInfoLinkName -MemberType NoteProperty -Value $group.Name -Force
    $ArrayofmembersUsers | Add-Member -Name GroupInfoLinkManageBy -MemberType NoteProperty -Value $group.ManagedBy -Force
    $ArrayofmembersUsers
}
$table | Select-Object -Property GivenName, SurName, SamAccountName, Mail, GroupInfoLinkName, GroupInfoLinkManageBy | Export-Csv "D:\Infolink.csv" -NoTypeInformation

一些指针..

  • Get-ADGroup上使用过滤器,否则您将获得AD中的所有组,然后进行过滤。
  • PSObject很棒,但是如果您的Object已经拥有您需要的大多数属性,那么Add-Member将有助于增加1或2个。
  • 许多cmdlet都有一个Properties参数,您将看到我使用它来包含默认情况下不包括的属性。不幸的是,Get-ADGroupMember不是这些cmdlet之一,因此通过管道传递到Get-ADUser可以提供一种解决方法。