Назад | Перейти на главную страницу

Показывать название группы для членов всех групп, содержащих администраторов

Мне нужно получить участников всех групп, имя которых содержит Администратор

  $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -like '*Administrator'}

Вывод:

$role.objectid
4ab7edc2-1995-4bdc-9c7d-de7d964e07df
5758628c-b15c-4522-b2d2-14003b7504f1
6131150a-93df-442f-be12-db2313e3308a
b5bd492f-e894-48d9-bfc7-a1e06b4b9e29
b5c1ee12-310f-40ef-9280-d24a2b0b1119
ba3fc590-badf-4f10-b9d3-7d5f76637349
c2c3cf45-9d07-4ee4-b4af-097a4998d92f
ccb0883c-53a8-4c72-a208-0c2fa468d2d4
d919e1b1-74b3-4024-867a-b668a3fa721f
e7677915-5fb1-4317-b583-58dc24365259
f3c465e7-b5b3-4a87-b299-f2db2e5dc003

При беге

 foreach ($roles in $role) {Get-AzureADDirectoryRoleMember -objectid $roles.ObjectId | Get-AzureADUser | select displayname,userprincipalname,$roles.DisplayName}

получение

  DisplayName            UserPrincipalName      Helpdesk Administrator
-----------            -----------------      ----------------------
user1                  user1@company.com
user2                  user2@company.com
user3                  user3@company.com

user3 является членом нескольких групп с именем Administrator. В нем перечислены только члены первой группы с именем Administrator (администратор службы поддержки)

Для ясности я бы скорректировал единственное / множественное число с помощью $ role (s)

$roles = Get-AzureADDirectoryRole | Where-Object {$_.DisplayName -like '*Administrator'}
$UserRoles = ForEach ($role in $roles) {
    Get-AzureADDirectoryRoleMember -ObjectId "$($role.ObjectId)" | Get-AzureADUser | 
    ForEach-Object {
        [PSCustomObject]@{
             User             = $_.DisplaName
             UserPincipalName = $_.UserPincipalName
             AdministratorRole= $role.DisplayName
        }
    }
}

Затем вы можете Group-Object на User или UserPrincipalName и присоединиться к ролям администратора в одном свойстве.