获取组和子组的所有成员
Get all members for groups and subgroups
大家好。
我一直在尝试获取有关 Active Directory 中的组和子组的信息
我尝试了很多变体,例如下面的变体,
我本质上需要的是,获取名称中包含 "infolink" 的 AD 中所有组的 CSV,我需要的列是:
- 给名字
- SN
- 用户名
- 邮件
- 组
- 管理人
但不管我怎么说,我只得到了一些我需要的东西。
有人已经有了一些代码可以让我的生活更轻松一点吗?如果是这样,我将不胜感激。
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
试试这个,
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 很棒,但如果您的对象已经具有您需要的大部分属性,那么
Add-Member
有助于再添加 1 或 2 个。
- 许多 cmdlet 都有一个 Properties 参数,您会看到我用它来包含默认情况下不包含的属性。不幸的是
Get-ADGroupMember
不是这些 cmdlet 中的一个,因此通过管道传输到 Get-ADUser
有助于提供解决方法。
大家好。 我一直在尝试获取有关 Active Directory 中的组和子组的信息 我尝试了很多变体,例如下面的变体,
我本质上需要的是,获取名称中包含 "infolink" 的 AD 中所有组的 CSV,我需要的列是:
- 给名字
- SN
- 用户名
- 邮件
- 组
- 管理人
但不管我怎么说,我只得到了一些我需要的东西。 有人已经有了一些代码可以让我的生活更轻松一点吗?如果是这样,我将不胜感激。
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
试试这个,
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 很棒,但如果您的对象已经具有您需要的大部分属性,那么
Add-Member
有助于再添加 1 或 2 个。 - 许多 cmdlet 都有一个 Properties 参数,您会看到我用它来包含默认情况下不包含的属性。不幸的是
Get-ADGroupMember
不是这些 cmdlet 中的一个,因此通过管道传输到Get-ADUser
有助于提供解决方法。