Экспорт всех групп Azure AD, включая вложенные группы, их членов и владельцев (Powershell)

Я ищу сценарий PowerShell, который позволит мне экспортировать все группы Azure AD, их участников и владельцев в один файл csv? Также мне нужны расширенные вложенные группы. Это кто-то делал или видел раньше?


person zibs    schedule 15.05.2020    source источник
comment
Вам это поможет? stackoverflow .com / questions / 58828015 /   -  person Carl Zhao    schedule 15.05.2020


Ответы (1)


Вот кое-что, что я придумал, должно работать, пока у вас есть модуль azuread powershell.

function get-recursivegroupmembers {
    param($grouplistname, $currgroup, $groupmemtype)
    $members = if ($groupmemtype -eq "owner") {get-azureadgroupowner -ObjectId $currgroup.ObjectId -All $true} else {get-azureadgroupmember -ObjectId $currgroup.ObjectId -All $true}
    $grouptype = "Distribution Group"
    if ($currgroup.SecurityEnabled -eq $true)
    {
        $grouptype = "Security Group"
    }
    foreach ($member in $members)
    {

        if($member.ObjectType -eq "Group" )
            { get-recursivegroupmembers "$grouplistname->$($member.DisplayName)" $member $groupmemtype}
        else
            { 
                add-content -Path $filename -Value "$grouplistname,$grouptype,$groupmemtype,$($member.ObjectId),$($member.ObjectType) $($member.UserType),$($member.UserPrincipalName)" }
    }
}

connect-AzureAD
$filename = ".\groupusers-$(get-date -f 'ddMMyyyy-HHmmss').csv"
$groups=Get-AzureADGroup -All $true
add-content -Path $filename -Value "Group(s),Group Type,Member Type,User ObjectId,AAD Object Type,UPN" 

ForEach ($group in $groups)
{
    get-recursivegroupmembers $group.DisplayName $group "owner"
    get-recursivegroupmembers $group.DisplayName $group "member"
} 

Это даст вам файл в текущей папке, где находится скрипт. называется groupusers, первое поле будет содержать группу, и если его член вложенной группы будет отображаться как группа-> вложенная группа, владелец или член и т. д.

person alphaz18    schedule 15.05.2020
comment
Потрясающий @alphaz! Я пытался изменить скрипт с помощью SecurityEnabled и переменных на время, но безуспешно :( ... - person zibs; 16.05.2020
comment
`` param ($ grouplistname, $ currgroupid, $ groupmemtype, $ grouptype) $ grouptype = if ($ grouptype.SecurityEnabled -eq $ true) {Security Group} else {Distribition Group} `` и `` {add- content -Path $ filename -Value $ grouplistname, $ groupmemtype, $ grouptype, $ ($ member.ObjectId), $ ($ member.ObjectType) $ ($ member.UserType), $ ($ member.UserPrincipalName)}} $ filename =. \ AADGroupsMembersOwners _ $ (get-date -f dd-MM-yyyy HH: mm: ss) .csv `` - person zibs; 16.05.2020
comment
Я немного изменил сценарий, теперь в нем есть ваши правки - person alphaz18; 16.05.2020
comment
Работает как положено !! - person Dev; 17.05.2020