Мне нужно получить участников всех групп, имя которых содержит Администратор
$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 и присоединиться к ролям администратора в одном свойстве.