#powershell
#powershell
Вопрос:
Я новичок в написании сценариев, но я пытаюсь получить export.xlsx всех групп объявлений, их членов и групп внутри группы.
Название группы AD> Участники группы>… и если в группе есть группы AD с> экспортировать членов этой группы AD
Пока у меня есть следующее.
$groups = Get-adgroup -filter * -searchbase 'OU...DC=com'
foreach($group in $groups){
Get-adgroupmember $group |
select samaccountname |
export-csv C:Temp$group.csv -notype
}
Любая помощь приветствуется.
Комментарии:
1. Если вы получаете все группы, вам не нужно получать группы внутри групп, поскольку они у вас уже есть. Верно?
2. Мне также нужны члены группы вложенной группы. Например, у меня может быть группа с вложенными группами, в которых может быть более 50 пользователей. (для целей аудита)
3. Вы нашли ответ?
Ответ №1:
Вы можете попробовать что-то вроде этого:
$groups = Get-ADGroup -Filter *
foreach($group in $groups){
$FileName = $group.Name
Get-Adgroupmember -Identity $group |
Export-CSV C:Temp$FileName.csv -notype
}
Ответ №2:
Это подходящее время для рекурсивной функции.
Function Get-GroupMember
{
Param
(
$Group
)
$allmembers = foreach($member in Get-ADGroupMember $Group)
{
if($member.objectClass -eq 'Group')
{
Get-GroupMember -Group $member
}
else
{
[PSCustomObject]@{
Group = $Group.name
Member = $member.SamAccountName
Type = $member.objectClass
}
}
}
$allmembers | Export-Csv "C:Temp$($Group.name).csv" -notype
}
Назовите это так
$groups = Get-adgroup -filter * -searchbase 'OU...DC=com'
Get-GroupMember -Group $groups
Вы четко не указали, какую всю информацию вы хотите экспортировать. Объект по умолчанию будет иметь distinctivedname, name, objectClass, objectGUID, sAMAccountName и SID. Если вам нужны все они, вы можете изменить часть else на просто «$member». В противном случае вы можете настроить то, что возвращает пользовательский объект. Это создаст 1 файл для каждой группы с именем groupname.csv. Вы можете параметризовать путь экспорта в качестве следующего шага.